aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/MODELS2020-CaseStudies
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-04-26 18:23:13 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-04-26 18:23:13 -0400
commitc0a758eedd457a5d8eb9f1a6c17fc24143aabb3e (patch)
tree0c2e212e4e95c1d2311629128641d5cd561210f3 /Tests/MODELS2020-CaseStudies
parentMerge branch 'Attribute-Solver' (diff)
downloadVIATRA-Generator-c0a758eedd457a5d8eb9f1a6c17fc24143aabb3e.tar.gz
VIATRA-Generator-c0a758eedd457a5d8eb9f1a6c17fc24143aabb3e.tar.zst
VIATRA-Generator-c0a758eedd457a5d8eb9f1a6c17fc24143aabb3e.zip
Add PLEDGE case study files
Diffstat (limited to 'Tests/MODELS2020-CaseStudies')
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/.classpath8
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/.gitignore1
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project40
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF23
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOld.ecore_1257
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_1257
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/build.properties5
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.aird5853
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.ecore651
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.genmodel395
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.properties4
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.xml13
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src-gen/queries/.gitignore3
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Address.java159
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Agriculture_and_Forestry_Income.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CE_Type.java232
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIM.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIP.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIS.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Capital_and_Investments_Income.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Health_and_Pension_Insurances.java232
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Permanent_Expense.java209
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Private_Insurance_and_Plan.java278
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Constants.java619
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Country.java301
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS.java69
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Donation.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Health_and_Pension_Insurance.java48
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Interest_Expense.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Loss_Carryforward.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Permanent_Expense.java48
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Private_Insurance_and_Plan.java117
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent.java188
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent_Type.java278
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Disability_Types.java347
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Donation.java92
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Employment_Income.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense.java196
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense_Purpose.java301
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/External_Allowance.java189
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Extraordinary_Expense_CE.java71
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FD.java68
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FO.java48
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Fiscal_Address.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Foreign_Income.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromAgent.java144
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromLaw.java71
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Grantor.java301
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Habitual_Address.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Health_and_Pension_Insurance.java72
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Household.java86
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income.java271
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Detail.java186
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax.java115
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax_Credit.java215
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Type.java95
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Interest_Expense.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Job_Activity.java232
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Record.java221
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Types.java232
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Local_Income.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Loss_Carryforward.java116
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Marriage_Record.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Miscellaneous_Expense_FO.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Non_Resident_Tax_Payer.java46
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Partnership_Record.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Pensions_and_Annuities_Income.java46
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Permanent_Expense.java72
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Physical_Person.java278
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Private_Insurance_and_Plan.java94
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expense.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expenses_Deduction.java18
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Rentals_and_Leases_Income.java46
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Resident_Tax_Payer.java18
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Separation_Causes.java255
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Special_Expense_DS.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Spousal_Expense_AC.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card.java885
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card_Type.java209
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Case.java18
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Class_Category.java232
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Office.java255
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Payer.java127
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Property.java94
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationFactory.java501
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationPackage.java10961
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Town.java278
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Trade_and_Business_Income.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Travel_Expense_FD.java17
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Type_of_Rate.java209
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/AddressImpl.java465
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Agriculture_and_Forestry_IncomeImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIMImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIPImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CISImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Capital_and_Investments_IncomeImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ConstantsImpl.java1509
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DSImpl.java221
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_DonationImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Health_and_Pension_InsuranceImpl.java165
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Interest_ExpenseImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Loss_CarryforwardImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Permanent_ExpenseImpl.java165
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Private_Insurance_and_PlanImpl.java333
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DependentImpl.java598
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DonationImpl.java276
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Employment_IncomeImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ExpenseImpl.java653
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/External_AllowanceImpl.java555
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Extraordinary_Expense_CEImpl.java221
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FDImpl.java220
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FOImpl.java165
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Fiscal_AddressImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Foreign_IncomeImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromAgentImpl.java505
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromLawImpl.java268
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Habitual_AddressImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Health_and_Pension_InsuranceImpl.java221
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/HouseholdImpl.java313
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/IncomeImpl.java782
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_DetailImpl.java547
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TaxImpl.java340
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_Tax_CreditImpl.java625
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TypeImpl.java324
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Interest_ExpenseImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Legal_Union_RecordImpl.java647
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Local_IncomeImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Loss_CarryforwardImpl.java332
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Marriage_RecordImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Miscellaneous_Expense_FOImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Non_Resident_Tax_PayerImpl.java164
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Partnership_RecordImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Pensions_and_Annuities_IncomeImpl.java164
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Permanent_ExpenseImpl.java221
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Physical_PersonImpl.java766
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Private_Insurance_and_PlanImpl.java276
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_ExpenseImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_Expenses_DeductionImpl.java39
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Rentals_and_Leases_IncomeImpl.java164
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Resident_Tax_PayerImpl.java36
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Special_Expense_DSImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Spousal_Expense_ACImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_CardImpl.java2263
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PayerImpl.java425
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PropertyImpl.java323
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Taxation.ecore1257
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationFactoryImpl.java1144
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationPackageImpl.java4271
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Trade_and_Business_IncomeImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Travel_Expense_FDImpl.java37
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationAdapterFactory.java1146
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationSwitch.java1360
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project33
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseA_1.ocl281
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseB_1.ocl144
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseC_1.ocl_629
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_A.uml2416
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_B.uml608
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_C.uml_2094
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.classpath9
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project62
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.pde.core.prefs3
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF24
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore75
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/NewOCLFileX.ocl45
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/case_study_A.vql334
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbinbin0 -> 8707 bytes
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/build.properties6
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/ocl/queries.ocl14
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/plugin.xml42
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore75
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java438
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java652
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java701
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java509
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java455
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java705
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java616
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java566
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java589
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java591
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java567
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java643
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java587
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java665
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java639
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java639
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java636
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java566
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java561
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java606
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java551
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java628
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java630
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java551
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java544
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java610
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java629
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java543
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java555
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java544
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java637
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java569
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java555
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java610
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java569
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java579
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java544
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/NewOCLFileX.ocl45
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/case_study_A.vql334
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/run/RunGenerator.xtend151
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbinbin0 -> 8707 bytes
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore2
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/GenerateScenarios.java165
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project11
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH.xmi52
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH_new.xmi72
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.samples/Resident_Tax_Payer.xmi7
224 files changed, 85790 insertions, 0 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.classpath b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.classpath
new file mode 100644
index 00000000..4cc715d5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.classpath
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="src-gen"/>
7 <classpathentry kind="output" path="bin"/>
8</classpath>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.gitignore
new file mode 100644
index 00000000..ae3c1726
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.gitignore
@@ -0,0 +1 @@
/bin/
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project
new file mode 100644
index 00000000..0f411358
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.project
@@ -0,0 +1,40 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>case.study.a.model</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.viatra.query.tooling.ui.projectbuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.jdt.core.javabuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.ManifestBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 <buildCommand>
29 <name>org.eclipse.pde.SchemaBuilder</name>
30 <arguments>
31 </arguments>
32 </buildCommand>
33 </buildSpec>
34 <natures>
35 <nature>org.eclipse.pde.PluginNature</nature>
36 <nature>org.eclipse.jdt.core.javanature</nature>
37 <nature>org.eclipse.viatra.query.projectnature</nature>
38 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
39 </natures>
40</projectDescription>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.settings/org.eclipse.jdt.core.prefs b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..e4fce672
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: %pluginName
4Bundle-SymbolicName: case.study.a.model;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: .
7Bundle-Vendor: %providerName
8Bundle-Localization: plugin
9Export-Package: Taxation,
10 Taxation.impl,
11 Taxation.util
12Require-Bundle: org.eclipse.core.runtime,
13 org.eclipse.emf.ecore;visibility:=reexport,
14 org.eclipse.emf.ecore.xmi;visibility:=reexport,
15 org.eclipse.viatra.query.runtime,
16 org.eclipse.viatra.query.runtime.rete,
17 org.eclipse.viatra.query.runtime.localsearch,
18 org.eclipse.xtext.xbase.lib,
19 test;bundle-version="0.1.0"
20Import-Package: org.apache.log4j
21Automatic-Module-Name: case.study.a.model
22Bundle-ActivationPolicy: lazy
23Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOld.ecore_ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOld.ecore_
new file mode 100644
index 00000000..efee1602
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOld.ecore_
@@ -0,0 +1,1257 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="TaxationOld" nsURI="http:///TaxCardOld.ecore" nsPrefix="TaxCardOld">
4 <eAnnotations source="http://www.eclipse.org/OCL/Import">
5 <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EEnum" name="Grantor">
8 <eLiterals name="WWW" literal="WWW"/>
9 <eLiterals name="Employer" value="1" literal="Employer"/>
10 <eLiterals name="MMM" value="2" literal="MMM"/>
11 <eLiterals name="UUU" value="3" literal="UUU"/>
12 <eLiterals name="YYY" value="4" literal="YYY"/>
13 <eLiterals name="OOO" value="5" literal="OOO"/>
14 </eClassifiers>
15 <eClassifiers xsi:type="ecore:EClass" name="Constants" abstract="true">
16 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"
17 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
18 defaultValueLiteral="3480.0"/>
19 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"
20 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
21 defaultValueLiteral="3600.0"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_SALARY" lowerBound="1"
23 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1500.0"/>
24 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"
25 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
26 defaultValueLiteral="4500.0"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"
28 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
29 defaultValueLiteral="20.0"/>
30 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"
31 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
32 defaultValueLiteral="120.0"/>
33 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"
34 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
35 defaultValueLiteral="0.0"/>
36 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"
37 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
38 defaultValueLiteral="24000.0"/>
39 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
40 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
41 defaultValueLiteral="99.0"/>
42 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
43 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
44 defaultValueLiteral="30.0"/>
45 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
46 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
47 defaultValueLiteral="4.0"/>
48 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_DAILY" lowerBound="1"
49 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="2.0"/>
50 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_MONTHLY"
51 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
52 defaultValueLiteral="62.0"/>
53 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_YEARLY" lowerBound="1"
54 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="750.0"/>
55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_DAILY" lowerBound="1"
56 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
57 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_MONTHLY"
58 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
59 defaultValueLiteral="25.0"/>
60 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_YEARLY" lowerBound="1"
61 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="30.0"/>
62 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_DAILY" lowerBound="1"
63 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
64 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_MONTHLY"
65 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
66 defaultValueLiteral="25.0"/>
67 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_YEARLY" lowerBound="1"
68 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
69 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"
70 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
71 defaultValueLiteral="99.0"/>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"
73 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
75 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
76 <eStructuralFeatures xsi:type="ecore:EAttribute" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
77 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
78 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"
79 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
80 </eClassifiers>
81 <eClassifiers xsi:type="ecore:EEnum" name="Disability_Types">
82 <eLiterals name="beug"/>
83 <eLiterals name="NONE" value="1"/>
84 <eLiterals name="A" value="2" literal="A"/>
85 <eLiterals name="B" value="3" literal="B"/>
86 <eLiterals name="C" value="4" literal="C"/>
87 <eLiterals name="D" value="5" literal="D"/>
88 <eLiterals name="E" value="6" literal="E"/>
89 <eLiterals name="OTHER" value="7"/>
90 </eClassifiers>
91 <eClassifiers xsi:type="ecore:EEnum" name="Country">
92 <eLiterals name="ZZ" literal="ZZ"/>
93 <eLiterals name="FF" value="1" literal="FF"/>
94 <eLiterals name="BB" value="2" literal="BB"/>
95 <eLiterals name="DD" value="3" literal="DD"/>
96 <eLiterals name="NN" value="4" literal="NN"/>
97 <eLiterals name="OTHER" value="5" literal="OTHER"/>
98 </eClassifiers>
99 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Card_Type">
100 <eLiterals name="Principal" literal="Principal"/>
101 <eLiterals name="Additional" value="1" literal="Additional"/>
102 </eClassifiers>
103 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Office">
104 <eLiterals name="RTS_2" literal="RTS_2"/>
105 <eLiterals name="RTS_3" value="1" literal="RTS_3"/>
106 <eLiterals name="RTS_4" value="2" literal="RTS_4"/>
107 <eLiterals name="RTS_5" value="3" literal="RTS_5"/>
108 </eClassifiers>
109 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Class_Category">
110 <eLiterals name="One" literal="One"/>
111 <eLiterals name="One_A" value="1" literal="One_A"/>
112 <eLiterals name="Two" value="2" literal="Two"/>
113 </eClassifiers>
114 <eClassifiers xsi:type="ecore:EEnum" name="Job_Activity">
115 <eLiterals name="Salary" literal="Salary"/>
116 <eLiterals name="Pension" value="1" literal="Pension"/>
117 <eLiterals name="Annuity" value="2" literal="Annuity"/>
118 </eClassifiers>
119 <eClassifiers xsi:type="ecore:EEnum" name="Town">
120 <eLiterals name="LL" literal="LL"/>
121 <eLiterals name="BB" value="1" literal="BB"/>
122 <eLiterals name="SS" value="2" literal="SS"/>
123 <eLiterals name="TT" value="3" literal="TT"/>
124 <eLiterals name="Other" value="4" literal="Other"/>
125 </eClassifiers>
126 <eClassifiers xsi:type="ecore:EEnum" name="Type_of_Rate">
127 <eLiterals name="REGULAR" literal="REGULAR"/>
128 <eLiterals name="REAL_COST" value="1" literal="REAL_COST"/>
129 </eClassifiers>
130 <eClassifiers xsi:type="ecore:EEnum" name="CE_Type">
131 <eLiterals name="INALIDITY_AND_INFIRMITY" literal="INALIDITY_AND_INFIRMITY"/>
132 <eLiterals name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"
133 value="1" literal="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
134 <eLiterals name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" value="2" literal="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
135 </eClassifiers>
136 <eClassifiers xsi:type="ecore:EEnum" name="Expense_Purpose">
137 <eLiterals name="HOUSE_CARE" literal="HOUSE_CARE"/>
138 <eLiterals name="CHILD_CARE" value="1" literal="CHILD_CARE"/>
139 <eLiterals name="DEPENDENCE_CARE" value="2" literal="DEPENDENCE_CARE"/>
140 <eLiterals name="OTHER" value="3" literal="OTHER"/>
141 <eLiterals name="ALIMONY" value="4"/>
142 <eLiterals name="RECURRENT_DEPT" value="5"/>
143 </eClassifiers>
144 <eClassifiers xsi:type="ecore:EEnum" name="Dependent_Type">
145 <eLiterals name="CHILD" literal="CHILD"/>
146 <eLiterals name="SPOUSE" value="1" literal="SPOUSE"/>
147 <eLiterals name="RELATIVE" value="2" literal="RELATIVE"/>
148 <eLiterals name="OTHER_FAMILY_MEMBER" value="3" literal="OTHER_FAMILY_MEMBER"/>
149 <eLiterals name="NOT_OWN_CHILD" value="4"/>
150 </eClassifiers>
151 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax">
152 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
153 eType="#//Tax_Payer"/>
154 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_amount" lowerBound="1"
155 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
157 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id6" ordered="false" lowerBound="1"
159 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
160 </eClassifiers>
161 <eClassifiers xsi:type="ecore:EClass" name="Tax_Payer" abstract="true" eSuperTypes="#//Physical_Person #//Tax_Case">
162 <eAnnotations source="duplicates">
163 <contents xsi:type="ecore:EReference" name="expenses" ordered="false" upperBound="-1"
164 eType="#//Expense" containment="true">
165 <eAnnotations source="redefines" references="#//Physical_Person/expenses"/>
166 </contents>
167 </eAnnotations>
168 <eOperations name="is_dependent_part_of_the_household" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
169 <eParameters name="IN_dependent" lowerBound="1" eType="#//Dependent"/>
170 </eOperations>
171 <eOperations name="number_of_months_of_allowance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
172 <eOperations name="deduction_according_disability_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
173 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
174 <details key="body" value="if ( self.disability_percentage >= 0.25 and self.disability_percentage &lt; 0.35) then&#xA;&#x9;&#x9;&#x9;150.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.35 and self.disability_percentage &lt; 0.45) then&#xA;&#x9;&#x9;&#x9;225.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.45 and self.disability_percentage &lt;0.55) then&#xA;&#x9;&#x9;&#x9;375.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.55 and self.disability_percentage &lt; 0.65 ) then&#xA;&#x9;&#x9;&#x9;450.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.65 and self.disability_percentage &lt; 0.75) then&#xA;&#x9;&#x9;&#x9;525.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.75 and self.disability_percentage &lt; 0.85) then&#xA;&#x9;&#x9;&#x9;585.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.85 and self.disability_percentage&lt; 0.95) then&#xA;&#x9;&#x9;&#x9;645.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.95 and self.disability_percentage&lt;=1)then&#xA;&#x9;&#x9;&#x9;735.0 else 0.0 endif endif endif endif endif endif endif endif"/>
175 </eAnnotations>
176 </eOperations>
177 <eOperations name="getIsTaxedJointly" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
178 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
179 <details key="body" value="let is_married:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Marriage_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: - **/&#x9;&#xA;if (is_married) = false then&#xA; let is_in_partnership_relation:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Partnership_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_in_partnership_relation) = false then&#xA; false&#xA; else&#xA; if (is_in_partnership_relation) = true then&#xA; let is_joint_tax_beneficial:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_joint_tax_beneficial) = true then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let relation_lasted_for_the_taxation_year:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = false then&#xA; false&#xA; else&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = false then&#xA; false&#xA; else&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) &#xA; &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = true then&#xA; true&#xA; else&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_joint_tax_beneficial) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_married) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let is_couple_assimilated_to_residents:Boolean = (resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_assimilated_to_residents) = true then&#xA; true&#xA; else&#xA; if (is_couple_assimilated_to_residents) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let local_professional_household_income:Real = self.getProfetionalIncomeHouseholdZZ(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = false then&#xA; false&#xA; else&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (are_both_spouses_non_resident) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let professional_income_resident_taxpayer:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes->oclIsInvalid()) then 0.0 else my_incomes.income_amount->sum() endif else if(spouse_incomes->oclIsInvalid()) then 0.0 else spouse_incomes.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = false then&#xA; false&#xA; else&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
180 </eAnnotations>
181 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
182 </eOperations>
183 <eOperations name="getIsreceivingAllowancesForChildren" ordered="false" lowerBound="1"
184 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
185 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
186 <details key="body" value="let children1:Set(Dependent)=self.dependents->select(dependent_type=Dependent_Type::CHILD) in&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in&#xA;&#x9;&#x9;&#x9;let house: Household = union.household in&#xA;&#x9;&#x9;&#x9;let children:Set(Dependent)=if (house.oclIsInvalid()) then children1 else children1->union(house.children) endif in&#xA;&#x9;&#x9;&#x9;if(children->size()=0)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let allowances:Boolean=children.allowances->select(starting_year&lt;=year and ending_year=-1 and amount>0)->size()>0in&#xA;&#x9;&#x9;&#x9;if(allowances)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
187 </eAnnotations>
188 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
189 </eOperations>
190 <eOperations name="getProfetionalIncomeHousehold" ordered="false" lowerBound="1"
191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
192 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
193 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real= if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
194 </eAnnotations>
195 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
196 </eOperations>
197 <eOperations name="getProfetionalIncomeHouseholdZZ" ordered="false" lowerBound="1"
198 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
199 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
200 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real=if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
201 </eAnnotations>
202 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
203 </eOperations>
204 <eOperations name="getTaxClass" ordered="false" lowerBound="1" eType="#//Tax_Class_Category">
205 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
206 <details key="body" value="let is_resident_taxpayer:Boolean = self.oclIsKindOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: Returns yes if a given taxpayer is a resident. - **/&#x9;&#xA;if (is_resident_taxpayer) = true then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_resident_taxpayer) = false then&#xA; let is_married:Boolean = self.getIsMaried(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married. - **/&#x9;&#xA; if (is_married) = false then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_married) = true then&#xA; let total_professional_income_household:Real = self.getProfetionalIncomeHousehold(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes. - **/&#x9;&#xA; let sum_professional_income_household_ZZ:Real = self.getProfetionalIncomeHouseholdZZ(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes that are taxed in ZZ. - **/&#x9;&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
207 </eAnnotations>
208 <eParameters name="taxation_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
209 </eOperations>
210 <eStructuralFeatures xsi:type="ecore:EReference" name="dependents" ordered="false"
211 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/responsible_person"/>
212 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" lowerBound="1"
213 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/taxPayer"/>
214 <eStructuralFeatures xsi:type="ecore:EReference" name="incomes" ordered="false"
215 lowerBound="1" upperBound="-1" eType="#//Income" containment="true" eOpposite="#//Income/taxPayer"/>
216 <eStructuralFeatures xsi:type="ecore:EReference" name="from_law" lowerBound="1"
217 eType="#//FromLaw" containment="true" eOpposite="#//FromLaw/taxPayer"/>
218 <eStructuralFeatures xsi:type="ecore:EAttribute" name="AEP_deduction" ordered="false"
219 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
220 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxesDue" ordered="false"
221 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
222 </eClassifiers>
223 <eClassifiers xsi:type="ecore:EClass" name="Physical_Person">
224 <eOperations name="is_separated_from" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
225 <eParameters name="IN_person" lowerBound="1" eType="#//Physical_Person"/>
226 </eOperations>
227 <eOperations name="is_person_affiliated_personnaly_to_social_security" lowerBound="1"
228 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
229 <eOperations name="getSeperationState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
230 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
231 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.separation_cause=seperation_type&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
232 </eAnnotations>
233 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
234 <eParameters name="seperation_type" ordered="false" lowerBound="1" eType="#//Separation_Causes"/>
235 </eOperations>
236 <eOperations name="getAge" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
237 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
238 <details key="body" value="&#x9;if(birth_year>=year )then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;year-birth_year&#xA;&#x9;&#x9;&#x9;endif"/>
239 </eAnnotations>
240 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
241 </eOperations>
242 <eOperations name="getIsMaried" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
243 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
244 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
245 </eAnnotations>
246 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
247 </eOperations>
248 <eOperations name="getSeperationYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
249 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
250 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.end_year&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
251 </eAnnotations>
252 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
253 </eOperations>
254 <eOperations name="getDivorceTransitionState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
255 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
256 <details key="body" value="let sep_year:Integer=self.getSeperationYear(year) in&#xA;&#x9;&#x9;&#x9;if(sep_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if( (sep_year &lt;= year and sep_year >= (year -3))=false) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let past_sep_year:Integer=self.getSeperationYear(year-5) in&#xA;&#x9;&#x9;&#x9;if(past_sep_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
257 </eAnnotations>
258 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
259 </eOperations>
260 <eOperations name="getSpouse" ordered="false" lowerBound="1" eType="#//Physical_Person">
261 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
262 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in &#xA;&#x9;&#x9;&#x9;if(union.oclIsInvalid())then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9; if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(lasted_union.individual_A=self)then&#xA;&#x9;&#x9;&#x9;lasted_union.individual_B&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.individual_A&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
263 </eAnnotations>
264 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
265 </eOperations>
266 <eOperations name="getLegalUnionRecord" ordered="false" lowerBound="1" eType="#//Legal_Union_Record">
267 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
268 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;lasted_union&#xA;&#x9;&#x9;&#x9;endif"/>
269 </eAnnotations>
270 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
271 </eOperations>
272 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
273 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
274 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assisting_spouse" lowerBound="1"
275 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" derived="true"/>
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="SSNo" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
277 iD="true"/>
278 <eStructuralFeatures xsi:type="ecore:EReference" name="addresses" ordered="false"
279 upperBound="-1" eType="#//Address" eOpposite="#//Address/taxPayer"/>
280 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_year" ordered="false"
281 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
282 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_percentage"
283 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
284 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_type" ordered="false"
285 unique="false" lowerBound="1" eType="#//Disability_Types"/>
286 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_affiliated_personnaly_to_social_security"
287 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
288 derived="true"/>
289 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_month" ordered="false"
290 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
291 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_day" ordered="false"
292 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
293 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
294 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/beneficiary"/>
295 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_widower" ordered="false"
296 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
297 <eStructuralFeatures xsi:type="ecore:EAttribute" name="last_start_year_widower"
298 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
299 </eClassifiers>
300 <eClassifiers xsi:type="ecore:EClass" name="Address">
301 <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" lowerBound="1"
302 eType="#//Country" defaultValueLiteral="ZZ"/>
303 <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" lowerBound="1"
304 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
305 <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" lowerBound="1"
306 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
307 <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
308 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id2" ordered="false" lowerBound="1"
309 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
310 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
311 upperBound="-1" eType="#//Physical_Person" eOpposite="#//Physical_Person/addresses"/>
312 </eClassifiers>
313 <eClassifiers xsi:type="ecore:EClass" name="Expense">
314 <eStructuralFeatures xsi:type="ecore:EAttribute" name="declared_amount" lowerBound="1"
315 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
316 <eStructuralFeatures xsi:type="ecore:EAttribute" name="expense_purpose" lowerBound="1"
317 eType="#//Expense_Purpose" defaultValueLiteral="OTHER"/>
318 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" eType="#//Dependent"
319 eOpposite="#//Dependent/expense"/>
320 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
321 eType="#//FromAgent" eOpposite="#//FromAgent/expense"/>
322 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year_expense_was_incurred_in"
323 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
324 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
325 eType="#//Income" eOpposite="#//Income/expenses"/>
326 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id4" ordered="false" lowerBound="1"
327 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
328 <eStructuralFeatures xsi:type="ecore:EReference" name="beneficiary" ordered="false"
329 eType="#//Physical_Person" eOpposite="#//Physical_Person/expenses"/>
330 </eClassifiers>
331 <eClassifiers xsi:type="ecore:EClass" name="Dependent" eSuperTypes="#//Physical_Person">
332 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CIM"
333 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
334 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_DS" lowerBound="1"
335 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
336 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care"
337 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
338 <eOperations name="is_dependent_following_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
339 <eParameters name="IN_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
340 </eOperations>
341 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dependent_type" lowerBound="1"
342 eType="#//Dependent_Type"/>
343 <eStructuralFeatures xsi:type="ecore:EReference" name="responsible_person" eType="#//Tax_Payer"
344 eOpposite="#//Tax_Payer/dependents"/>
345 <eStructuralFeatures xsi:type="ecore:EAttribute" name="continued_studies" lowerBound="1"
346 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
347 <eStructuralFeatures xsi:type="ecore:EReference" name="allowances" ordered="false"
348 upperBound="-1" eType="#//External_Allowance" containment="true" eOpposite="#//External_Allowance/person"/>
349 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
350 eType="#//Household" eOpposite="#//Household/children"/>
351 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
352 eType="#//FromAgent" eOpposite="#//FromAgent/dependent"/>
353 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
354 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/dependent"/>
355 </eClassifiers>
356 <eClassifiers xsi:type="ecore:EClass" name="External_Allowance">
357 <eOperations name="getAmount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
358 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
359 <details key="body" value=" if(dep_age>=6 and dep_age&lt;=11) then&#xA;(base + 16.17).round()&#xA; else if (dep_age>=12) then (base + 48.52).round() else &#xA; if(is_disabled) then(base + 185.60).round() else base endif endif endif"/>
360 </eAnnotations>
361 <eParameters name="base" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
362 <eParameters name="dep_age" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
363 <eParameters name="is_disabled" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
364 </eOperations>
365 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
366 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
367 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
368 </eAnnotations>
369 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
370 </eOperations>
371 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
372 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
373 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantor" lowerBound="1"
374 eType="#//Grantor"/>
375 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
376 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
377 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ending_year" ordered="false"
378 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
379 <eStructuralFeatures xsi:type="ecore:EReference" name="reciver" ordered="false"
380 lowerBound="1" eType="#//Physical_Person"/>
381 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
382 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
383 <eStructuralFeatures xsi:type="ecore:EReference" name="person" ordered="false"
384 lowerBound="1" eType="#//Dependent" eOpposite="#//Dependent/allowances"/>
385 </eClassifiers>
386 <eClassifiers xsi:type="ecore:EClass" name="Household" eSuperTypes="#//Tax_Case">
387 <eStructuralFeatures xsi:type="ecore:EReference" name="parents" ordered="false"
388 lowerBound="1" eType="#//Legal_Union_Record" containment="true" eOpposite="#//Legal_Union_Record/household"/>
389 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id1" ordered="false" lowerBound="1"
390 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
391 <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
392 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/household"/>
393 </eClassifiers>
394 <eClassifiers xsi:type="ecore:EClass" name="Legal_Union_Record" abstract="true">
395 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" lowerBound="1"
396 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
397 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_year" lowerBound="1"
398 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
399 <eStructuralFeatures xsi:type="ecore:EAttribute" name="separation_cause" ordered="false"
400 lowerBound="1" eType="#//Separation_Causes"/>
401 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_A" ordered="false"
402 lowerBound="1" eType="#//Physical_Person" containment="true">
403 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
404 <details key="body" value="legal_union_A"/>
405 </eAnnotations>
406 </eStructuralFeatures>
407 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_B" ordered="false"
408 lowerBound="1" eType="#//Physical_Person" containment="true">
409 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
410 <details key="body" value="legal_union_B"/>
411 </eAnnotations>
412 </eStructuralFeatures>
413 <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
414 lowerBound="1" upperBound="-1" eType="#//Tax_Property" containment="true"
415 eOpposite="#//Tax_Property/union_record"/>
416 <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutual_agreement" ordered="false"
417 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
418 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id9" ordered="false" lowerBound="1"
419 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
420 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
421 lowerBound="1" eType="#//Household" eOpposite="#//Household/parents"/>
422 </eClassifiers>
423 <eClassifiers xsi:type="ecore:EEnum" name="Separation_Causes">
424 <eLiterals name="NONE"/>
425 <eLiterals name="DIVORCE" value="1"/>
426 <eLiterals name="SEPARATION_DE_FAIT" value="2"/>
427 <eLiterals name="SEPARATION_BY_COURT" value="3"/>
428 </eClassifiers>
429 <eClassifiers xsi:type="ecore:EClass" name="Tax_Property">
430 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
431 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
432 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxed_jointly" ordered="false"
433 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
434 defaultValueLiteral="false"/>
435 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id10" ordered="false" lowerBound="1"
436 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
437 <eStructuralFeatures xsi:type="ecore:EReference" name="union_record" ordered="false"
438 lowerBound="1" eType="#//Legal_Union_Record" eOpposite="#//Legal_Union_Record/properties"/>
439 </eClassifiers>
440 <eClassifiers xsi:type="ecore:EClass" name="Tax_Case" abstract="true" interface="true"/>
441 <eClassifiers xsi:type="ecore:EClass" name="FromAgent">
442 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxation_year" unique="false"
443 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
444 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
445 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_agent"/>
446 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"
447 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
448 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
449 eType="#//Expense" eOpposite="#//Expense/from_agent"/>
450 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_debt" ordered="false"
451 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
452 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" ordered="false"
453 eType="#//Dependent" eOpposite="#//Dependent/from_agent"/>
454 </eClassifiers>
455 <eClassifiers xsi:type="ecore:EClass" name="Income" abstract="true">
456 <eOperations name="compute_duration_of_contract" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
457 <eOperations name="compute_duration_of_contract_within_taxation_year" lowerBound="1"
458 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
459 <eParameters name="IN_date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
460 </eOperations>
461 <eOperations name="prorata_worked_months" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
462 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
463 <details key="body" value="self.details->select(is_worked)->size()"/>
464 </eAnnotations>
465 </eOperations>
466 <eOperations name="prorata_worked_days" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
467 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
468 <details key="body" value="let a:Set(Income_Detail)=self.details->select(is_worked) in &#xA;&#x9;&#x9;&#x9;a.worked_days->sum().mod(25)"/>
469 </eAnnotations>
470 </eOperations>
471 <eOperations name="prorata_period" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
472 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
473 <details key="body" value="&#xA;&#x9;&#x9;&#x9;let nb_months:Integer=self.prorata_worked_months()in&#xA;&#x9;&#x9;&#x9;let nb_days:Integer=self.prorata_worked_days()in&#xA;&#x9;&#x9;&#x9; if(nb_months=12) then&#xA;&#x9;&#x9;&#x9;1&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;nb_months/12 + nb_days/300&#xA;&#x9;&#x9;&#x9;endif"/>
474 </eAnnotations>
475 </eOperations>
476 <eOperations name="income_per_day" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
477 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
478 <details key="body" value="income_per_year()/300"/>
479 </eAnnotations>
480 </eOperations>
481 <eOperations name="income_per_month" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
482 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
483 <details key="body" value="income_per_year()/12"/>
484 </eAnnotations>
485 </eOperations>
486 <eOperations name="income_per_year" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
487 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
488 <details key="body" value="&#x9;&#x9;&#x9;let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;involved_details.amount->sum()"/>
489 </eAnnotations>
490 </eOperations>
491 <eOperations name="getDurationInyears" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
492 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
493 <details key="body" value="&#xA;&#x9;&#x9;&#x9;if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then &#xA;&#x9;&#x9;&#x9;if(start_year.oclIsUndefined())then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in&#xA;&#x9;&#x9;&#x9;if(res&lt;0) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;res&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif"/>
494 </eAnnotations>
495 </eOperations>
496 <eStructuralFeatures xsi:type="ecore:EAttribute" name="income_amount" ordered="false"
497 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
498 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
499 <details key="derivation" value="let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in&#xA;non_null_amounts->collect(amount)->min()"/>
500 </eAnnotations>
501 </eStructuralFeatures>
502 <eStructuralFeatures xsi:type="ecore:EReference" name="income_type" lowerBound="1"
503 eType="#//Income_Type" containment="true" eOpposite="#//Income_Type/income"/>
504 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_within_taxation_year"
505 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
506 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_of_contract"
507 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
508 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_date_within_taxation_year"
509 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
510 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_card" eType="#//Tax_Card"
511 containment="true" eOpposite="#//Tax_Card/income"/>
512 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_liability" lowerBound="1"
513 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
514 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
515 lowerBound="1" eType="#//Tax_Payer" eOpposite="#//Tax_Payer/incomes"/>
516 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year" unique="false" lowerBound="1"
517 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
518 <eStructuralFeatures xsi:type="ecore:EReference" name="details" lowerBound="12"
519 upperBound="12" eType="#//Income_Detail" containment="true" eOpposite="#//Income_Detail/income"/>
520 <eStructuralFeatures xsi:type="ecore:EAttribute" name="num" ordered="false" lowerBound="1"
521 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"
522 iD="true"/>
523 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" ordered="false"
524 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
525 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
526 upperBound="-1" eType="#//Expense" containment="true" eOpposite="#//Expense/income"/>
527 </eClassifiers>
528 <eClassifiers xsi:type="ecore:EClass" name="Income_Type" abstract="true">
529 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subjectToWithholdingTax"
530 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
531 derived="true">
532 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
533 <details key="derivation" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.income.tax_card->notEmpty()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
534 </eAnnotations>
535 </eStructuralFeatures>
536 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id8" ordered="false" lowerBound="1"
537 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
538 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
539 eType="#//Income" eOpposite="#//Income/income_type"/>
540 </eClassifiers>
541 <eClassifiers xsi:type="ecore:EClass" name="Tax_Card">
542 <eOperations name="getSumDeductionsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
543 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
544 <details key="body" value="deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly"/>
545 </eAnnotations>
546 </eOperations>
547 <eOperations name="getSumCreditsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
548 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
549 <details key="body" value="credit_CIS_yearly+credit_CIP_yearly"/>
550 </eAnnotations>
551 </eOperations>
552 <eStructuralFeatures xsi:type="ecore:EAttribute" name="card_identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
553 iD="true"/>
554 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_card_type" lowerBound="1"
555 eType="#//Tax_Card_Type" derived="true">
556 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
557 <details key="derivation" value="if(self.income.taxPayer.incomes->size()=1) then &#xA;Tax_Card_Type::Principal&#xA;&#x9;else&#xA;&#x9;&#x9;let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in&#xA;&#x9;&#x9;let bigest_income:Income= all_incomes->first() in&#xA;&#x9;&#x9;&#x9; if(bigest_income=self.income) then&#xA;&#x9;&#x9;&#x9; &#x9; Tax_Card_Type::Principal&#xA;&#x9;&#x9;&#x9; else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;Tax_Card_Type::Additional&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
558 </eAnnotations>
559 </eStructuralFeatures>
560 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_office" lowerBound="1"
561 eType="#//Tax_Office"/>
562 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_from_date" ordered="false"
563 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
564 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_until_date" ordered="false"
565 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
566 <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentage_of_witholding"
567 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
568 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_name_surname"
569 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
570 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_partner_name_surname"
571 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
572 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_payers_address" eType="#//Address"/>
573 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_Employer_SSNo" ordered="false"
574 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
575 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_employers_name" ordered="false"
576 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
577 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_activity_type" lowerBound="1"
578 eType="#//Job_Activity"/>
579 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_place_of_work" lowerBound="1"
580 eType="#//Town"/>
581 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_daily" ordered="false"
582 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
583 defaultValueLiteral="0.0"/>
584 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_monthly" ordered="false"
585 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
586 defaultValueLiteral="0.0"/>
587 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_yearly" unique="false"
588 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
589 defaultValueLiteral="0.0"/>
590 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_daily" unique="false"
591 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
592 defaultValueLiteral="0.0"/>
593 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_monthly" unique="false"
594 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
595 defaultValueLiteral="0.0"/>
596 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_yearly" unique="false"
597 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
598 defaultValueLiteral="0.0"/>
599 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_daily" unique="false"
600 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
601 defaultValueLiteral="0.0"/>
602 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_monthly" unique="false"
603 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
604 defaultValueLiteral="0.0"/>
605 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_yearly" unique="false"
606 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
607 defaultValueLiteral="0.0"/>
608 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_invalidity_yearly"
609 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
610 defaultValueLiteral="0.0"/>
611 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_daily" unique="false"
612 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
613 defaultValueLiteral="0.0"/>
614 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_monthly" lowerBound="1"
615 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0"/>
616 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_yearly" unique="false"
617 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
618 defaultValueLiteral="0.0"/>
619 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_daily" unique="false"
620 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
621 defaultValueLiteral="0.0"/>
622 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_monthly" unique="false"
623 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
624 defaultValueLiteral="0.0"/>
625 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_yearly" unique="false"
626 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
627 defaultValueLiteral="0.0"/>
628 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_daily" unique="false"
629 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
630 defaultValueLiteral="0.0"/>
631 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_monthly" unique="false"
632 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
633 defaultValueLiteral="0.0"/>
634 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_monthly" unique="false"
635 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
636 defaultValueLiteral="0.0"/>
637 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_yearly" unique="false"
638 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
639 defaultValueLiteral="0.0"/>
640 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_daily" unique="false"
641 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
642 defaultValueLiteral="0.0"/>
643 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_monthly" unique="false"
644 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
645 defaultValueLiteral="0.0"/>
646 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_yearly" unique="false"
647 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
648 defaultValueLiteral="0.0"/>
649 <eStructuralFeatures xsi:type="ecore:EAttribute" name="validity" lowerBound="1"
650 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
651 <eStructuralFeatures xsi:type="ecore:EReference" name="income_Tax_Credit" ordered="false"
652 upperBound="-1" eType="#//Income_Tax_Credit" eOpposite="#//Income_Tax_Credit/taxation_Frame"/>
653 <eStructuralFeatures xsi:type="ecore:EReference" name="previous" eType="#//Tax_Card"
654 eOpposite="#//Tax_Card/current_tax_card"/>
655 <eStructuralFeatures xsi:type="ecore:EReference" name="current_tax_card" eType="#//Tax_Card"
656 eOpposite="#//Tax_Card/previous"/>
657 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_yearly" ordered="false"
658 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
659 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Alimony_yearly"
660 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
661 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Debt_yearly"
662 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
663 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
664 eType="#//Income" eOpposite="#//Income/tax_card"/>
665 </eClassifiers>
666 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax_Credit">
667 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantedBy" lowerBound="1"
668 eType="#//Grantor"/>
669 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" eType="#//Tax_Payer"/>
670 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
671 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
672 <eStructuralFeatures xsi:type="ecore:EAttribute" name="yearly" lowerBound="1"
673 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
674 <eStructuralFeatures xsi:type="ecore:EAttribute" name="monthly" lowerBound="1"
675 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="25.0"/>
676 <eStructuralFeatures xsi:type="ecore:EAttribute" name="daily" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
677 defaultValueLiteral="1.0"/>
678 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id7" ordered="false" lowerBound="1"
679 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
680 <eStructuralFeatures xsi:type="ecore:EReference" name="taxation_Frame" eType="#//Tax_Card"
681 eOpposite="#//Tax_Card/income_Tax_Credit"/>
682 </eClassifiers>
683 <eClassifiers xsi:type="ecore:EClass" name="Income_Detail">
684 <eStructuralFeatures xsi:type="ecore:EAttribute" name="month" ordered="false"
685 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
686 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
687 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
688 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_worked" lowerBound="1"
689 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
690 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance" lowerBound="1"
691 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
692 <eStructuralFeatures xsi:type="ecore:EAttribute" name="worked_days" lowerBound="1"
693 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
694 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_CNS" ordered="false"
695 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
696 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_pension"
697 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
698 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
699 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
700 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
701 eType="#//Income" eOpposite="#//Income/details"/>
702 </eClassifiers>
703 <eClassifiers xsi:type="ecore:EClass" name="FromLaw">
704 <eOperations name="CE_INVALIDITY_FLAT_RATE_TYPE_E" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
705 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
706 <details key="body" value="1455.0"/>
707 </eAnnotations>
708 </eOperations>
709 <eOperations name="CIP_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
710 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
711 <details key="body" value="25.0"/>
712 </eAnnotations>
713 </eOperations>
714 <eOperations name="CIP_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
715 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
716 <details key="body" value="300.0"/>
717 </eAnnotations>
718 </eOperations>
719 <eOperations name="FLAT_RATE_CIP_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
720 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
721 <details key="body" value="300.0"/>
722 </eAnnotations>
723 </eOperations>
724 <eOperations name="FLAT_RATE_PER_UNIT" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
725 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
726 <details key="body" value="99.0"/>
727 </eAnnotations>
728 </eOperations>
729 <eOperations name="MAXIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
730 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
731 <details key="body" value="30.0"/>
732 </eAnnotations>
733 </eOperations>
734 <eOperations name="MINIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
735 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
736 <details key="body" value="4.0"/>
737 </eAnnotations>
738 </eOperations>
739 <eOperations name="FLAT_MAXIMUM_FD" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
740 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
741 <details key="body" value="2574.0"/>
742 </eAnnotations>
743 </eOperations>
744 <eOperations name="CIS_MINIMUM_INCOME_DAY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
745 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
746 <details key="body" value="3.12"/>
747 </eAnnotations>
748 </eOperations>
749 <eOperations name="CIS_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
750 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
751 <details key="body" value="78.0"/>
752 </eAnnotations>
753 </eOperations>
754 <eOperations name="CIS_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
755 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
756 <details key="body" value="936.0"/>
757 </eAnnotations>
758 </eOperations>
759 <eOperations name="FLAT_RATE_CIS_DAILY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
760 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
761 <details key="body" value="1.0"/>
762 </eAnnotations>
763 </eOperations>
764 <eOperations name="FLAT_RATE_CIS_MONTHLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
765 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
766 <details key="body" value="25.0"/>
767 </eAnnotations>
768 </eOperations>
769 <eOperations name="FLAT_RATE_CIS_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
770 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
771 <details key="body" value="300.0"/>
772 </eAnnotations>
773 </eOperations>
774 <eOperations name="get_A_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
775 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
776 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9; endif"/>
777 </eAnnotations>
778 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
779 </eOperations>
780 <eOperations name="get_B_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
781 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
782 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 81.9&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 105.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 132.39000&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 162.405&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 195.6&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 231.975&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 271.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 314.265&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 360.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 409.275&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 461.55&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 517.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 575.64&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 637.455&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 702.45&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 770.625&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 806.30250 &#xA;&#x9;&#x9;else 890.48583&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
783 </eAnnotations>
784 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
785 </eOperations>
786 <eOperations name="get_A_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
787 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
788 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
789 </eAnnotations>
790 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
791 </eOperations>
792 <eOperations name="get_B_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
793 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
794 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 235.5&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 297.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 362.79&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 431.205&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 502.8&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 577.575&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 655.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 736.665&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 820.98&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 908.475&#xA;&#x9;&#x9;else 938.7&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9;&#x9;endif"/>
795 </eAnnotations>
796 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
797 </eOperations>
798 <eOperations name="get_A_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
799 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
800 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
801 </eAnnotations>
802 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
803 </eOperations>
804 <eOperations name="get_B_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
805 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
806 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 157&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 202.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 254.58&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 312.91&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 377.6&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 448.65&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 526.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 609.83&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 699.96&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 796.45&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 899.3&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 1008.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 1124.08&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 1246.01&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 1374.3&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 1508.95&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 1579.455&#xA;&#x9;&#x9;else 1746.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
807 </eAnnotations>
808 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
809 </eOperations>
810 <eOperations name="get_A_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
811 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
812 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
813 </eAnnotations>
814 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
815 </eOperations>
816 <eOperations name="get_B_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
817 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
818 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 80.3&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 103.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 129.99&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 159.605&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 192.4&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 228.375&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 267.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 309.865&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 355.38&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 404.075&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 455.95&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 511.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 569.24&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 630.655&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 695.25&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 763.025&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 798.5025&#xA;&#x9;&#x9;else 882.48583&#x9;&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
819 </eAnnotations>
820 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
821 </eOperations>
822 <eOperations name="get_A_for_pension_class_1A" ordered="false" lowerBound="1"
823 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
824 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
825 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
826 </eAnnotations>
827 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
828 </eOperations>
829 <eOperations name="get_B_for_pension_class_1A" ordered="false" lowerBound="1"
830 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
831 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
832 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 233.100&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 294.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 359.190&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 427.005&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 498&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 572.175&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 649.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 730.065&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 813.780&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 900.675&#xA;&#x9;&#x9;else 930.700&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
833 </eAnnotations>
834 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
835 </eOperations>
836 <eOperations name="get_A_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
837 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
838 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
839 </eAnnotations>
840 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
841 </eOperations>
842 <eOperations name="get_B_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
843 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
844 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 155.4&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 200.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 252.18&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 310.11&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 374.4&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 445.05&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 522.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 605.43&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 695.16&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 791.25&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 893.7&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 1002.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 1117.68&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 1239.21&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 1367.1&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 1501.35&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 1571.655&#xA;&#x9;&#x9;else 1738.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
845 </eAnnotations>
846 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
847 </eOperations>
848 <eOperations name="get_A_for_other_yearly_class_1" ordered="false" lowerBound="1"
849 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
850 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
851 <details key="body" value=" if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
852 </eAnnotations>
853 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
854 </eOperations>
855 <eOperations name="get_B_for_other_yearly_class_1" ordered="false" lowerBound="1"
856 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
857 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
858 <details key="body" value="if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 901.200 &#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 1164.660&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 1466.280&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 1806.060&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 2184&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 2600.100&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 3054.360&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 3546.780 &#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 4077.360&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 4646.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 5253&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 5898.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 6581.28&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 7302.66&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 8062.2&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 8859.9&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 9277.83&#xA;&#x9;&#x9;else 10277.83&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
859 </eAnnotations>
860 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
861 </eOperations>
862 <eOperations name="get_A_for_other_yearly_class_1A" ordered="false" lowerBound="1"
863 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
864 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
865 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
866 </eAnnotations>
867 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
868 </eOperations>
869 <eOperations name="get_B_for_other_yearly_class_1A" ordered="false" lowerBound="1"
870 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
871 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
872 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 2703.600&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 3417.660&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 4169.880&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 4960.260&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 5788.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 6655.500&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 7560.360&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 8503.380&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 9484.560&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 10503.900&#xA;&#x9;&#x9;else 10856.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
873 </eAnnotations>
874 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
875 </eOperations>
876 <eOperations name="get_A_for_other_yearly_class_2" ordered="false" lowerBound="1"
877 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
878 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
879 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
880 </eAnnotations>
881 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
882 </eOperations>
883 <eOperations name="get_B_for_other_yearly_class_2" ordered="false" lowerBound="1"
884 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
885 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
886 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 1802.400 &#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 2329.320&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 2932.560&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 3612.120&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 4368.000&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 5200.200&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 6108.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 7093.560&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 8154.720&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 9292.200&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 10506.000&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 11796.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 13162.560&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 14605.320&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 16124.400&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 17719.800&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 18555.660&#xA;&#x9;&#x9;else 20555.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
887 </eAnnotations>
888 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
889 </eOperations>
890 <eOperations name="calculate_taxes_per_month" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
891 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
892 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_class_2(amount) else get_A_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_class_2(amount) else get_B_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 25085 else 12585 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_class_2(amount) else get_A_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_class_2(amount) else get_B_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 25065 else 12565 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
893 </eAnnotations>
894 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
895 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
896 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
897 </eOperations>
898 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
899 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
900 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
901 </eAnnotations>
902 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
903 </eOperations>
904 <eOperations name="round_ten_cent" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
905 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
906 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;if(p1=amount) then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let p2_temp:Real = (amount-p1) * 10 in&#xA;&#x9;&#x9;&#x9;let p2:Integer = p2_temp.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()+(p2.toString().toReal()/10.0)&#xA;&#x9;&#x9;&#x9;endif"/>
907 </eAnnotations>
908 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
909 </eOperations>
910 <eOperations name="get_A_for_salary_yearly_class_1" ordered="false" lowerBound="1"
911 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
912 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
913 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
914 </eAnnotations>
915 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
916 </eOperations>
917 <eOperations name="get_B_for_salary_yearly_class_1" ordered="false" lowerBound="1"
918 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
919 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
920 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 982.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 1266.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 1588.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 1948.8600&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 2347.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 2783.7000&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 3258.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 3771.1800&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 4322.1600&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 4911.3000&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 5538.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 6204.0600&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 6907.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 7649.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 8429.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 9247.5000&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 9675.6300&#xA;&#x9;&#x9;else 10685.8300&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
921 </eAnnotations>
922 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
923 </eOperations>
924 <eOperations name="get_A_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
925 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
926 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
927 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
928 </eAnnotations>
929 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
930 </eOperations>
931 <eOperations name="get_B_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
932 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
933 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
934 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 2826.0000&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 3570.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 4353.4800&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 5174.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 6033.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 6930.9000&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 7866.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 8839.9800&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 9851.7600&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 10901.7000&#xA;&#x9;&#x9;else 11264.4000&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
935 </eAnnotations>
936 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
937 </eOperations>
938 <eOperations name="get_A_for_salary_yearly_class_2" ordered="false" lowerBound="1"
939 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
940 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
941 <details key="body" value="if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
942 </eAnnotations>
943 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
944 </eOperations>
945 <eOperations name="get_B_for_salary_yearly_class_2" ordered="false" lowerBound="1"
946 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
947 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
948 <details key="body" value=" if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 1884.000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 2431.3200&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 3054.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 3754.9200&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 4531.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 5383.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 6312.7200&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 7317.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 8399.5200&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 9557.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 10791.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 12102.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 13488.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 14952.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 16491.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 18107.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 18953.4600&#xA;&#x9;&#x9;else 20963.6600&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
949 </eAnnotations>
950 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
951 </eOperations>
952 <eOperations name="get_A_for_pension_yearly_class_1" ordered="false" lowerBound="1"
953 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
954 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
955 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
956 </eAnnotations>
957 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
958 </eOperations>
959 <eOperations name="get_B_for_pension_yearly_class_1" ordered="false" lowerBound="1"
960 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
961 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
962 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 963.600&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 1242.660&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 1559.880&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 1915.260&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 2308.800&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 2740.500&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 3210.360&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 3718.380&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 4264.560&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 4848.900&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 5471.400&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 6132.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 6830.880&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 7567.860&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 8343.000&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 9156.300&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 9582.030&#xA;&#x9;&#x9;else 10589.830&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
963 </eAnnotations>
964 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
965 </eOperations>
966 <eOperations name="get_A_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
967 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
968 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
969 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
970 </eAnnotations>
971 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
972 </eOperations>
973 <eOperations name="get_B_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
974 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
975 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
976 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 2797.200&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 3534.660&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 4310.280&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 5124.060&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 5976.000&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 6866.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 7794.360&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 8760.780&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 9765.360&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 10808.100&#xA;&#x9;&#x9;else 11168.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
977 </eAnnotations>
978 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
979 </eOperations>
980 <eOperations name="get_A_for_pension_yearly_class_2" ordered="false" lowerBound="1"
981 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
982 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
983 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
984 </eAnnotations>
985 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
986 </eOperations>
987 <eOperations name="get_B_for_pension_yearly_class_2" ordered="false" lowerBound="1"
988 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
989 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
990 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 1864.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 2407.320&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 3026.160&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 3721.320&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 4492.800&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 5340.600&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 6264.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 7265.160&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 8341.920&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 9495.000&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 10724.400&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 12030.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 13412.160&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 14870.520&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 16405.200&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 18016.200&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 18859.860&#xA;&#x9;&#x9;else 20867.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
991 </eAnnotations>
992 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
993 </eOperations>
994 <eOperations name="calculate_taxes_per_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
995 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
996 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
997 </eAnnotations>
998 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
999 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1000 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1001 </eOperations>
1002 <eOperations name="CNS_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1003 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1004 <details key="body" value="0.0305"/>
1005 </eAnnotations>
1006 </eOperations>
1007 <eOperations name="PENSION_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1008 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1009 <details key="body" value="0.08"/>
1010 </eAnnotations>
1011 </eOperations>
1012 <eOperations name="round_lower_fifty_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1013 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1014 <details key="body" value="&#x9;&#x9;if(amount&lt;50) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if (amount>=50 and amount&lt;100) then&#xA;&#x9;&#x9;&#x9;50.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let temp_amount:Real = round_lower_euros(amount) in&#xA;&#x9;&#x9;&#x9;let ch:String=temp_amount.toString()in&#xA;&#x9;&#x9;&#x9;let temp_amount1:Real = temp_amount / 100.0 in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(temp_amount1.round() = temp_amount1.floor()) then&#xA;&#x9;&#x9;&#x9;temp_amount1.floor() * 100.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;(temp_amount1.round() * 100.0) - 50&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1015 </eAnnotations>
1016 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1017 </eOperations>
1018 <eOperations name="getTaxableIncomePerYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1019 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1020 <details key="body" value="let gross_salary_year:Real= income.income_per_year() in&#xA;&#x9;&#x9;&#x9;let type:Income_Type=income.income_type in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Employment_Income)) then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in&#xA;&#x9;&#x9;&#x9;let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- sum_deductions_year in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 | &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount &#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true)then&#xA;&#x9;&#x9;&#x9; acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9; )&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;in round_lower_fifty_euros(res)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1021 </eAnnotations>
1022 <eParameters name="income" ordered="false" lowerBound="1" eType="#//Income"/>
1023 </eOperations>
1024 <eOperations name="precision" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1025 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1026 <details key="body" value="&#x9;&#x9;let ch:String=amount.toString() in&#xA;&#x9;&#x9;&#x9;if(ch.indexOf('.')=-1)then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let pos_pt:Integer=ch.indexOf('.') in&#xA;&#x9;&#x9;&#x9;if(pos_pt+degit >=ch.size()) then&#xA;&#x9;&#x9;&#x9;amount &#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let ch1:String=ch.substring(1,pos_pt+degit) in&#xA;&#x9;&#x9;&#x9;ch1.toReal()&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1027 </eAnnotations>
1028 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1029 <eParameters name="degit" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1030 </eOperations>
1031 <eOperations name="MAXIMUM_RATE_FOR_CE_CHILDREN" ordered="false" lowerBound="1"
1032 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1033 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1034 <details key="body" value="3480.0"/>
1035 </eAnnotations>
1036 </eOperations>
1037 <eOperations name="MINIMUM_LEGAL_SALARY" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1038 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1039 <details key="body" value="1921.03"/>
1040 </eAnnotations>
1041 </eOperations>
1042 <eOperations name="MAXIMUM_FLAT_RATE_FOR_ALIMONY" ordered="false" lowerBound="1"
1043 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1044 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1045 <details key="body" value="&#x9;&#x9;&#x9;if(year_divorce>1997)then&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600.0&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;if(year=2009 or year = 2010) then&#xA;&#x9;&#x9;&#x9;23400.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;24000.0&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600.0&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;23400.0&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
1046 </eAnnotations>
1047 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1048 <eParameters name="year_divorce" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1049 </eOperations>
1050 <eOperations name="AEP_FLAT_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1051 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1052 <details key="body" value="4500.0"/>
1053 </eAnnotations>
1054 </eOperations>
1055 <eOperations name="calculate_taxes_per_year_mixed" ordered="false" lowerBound="1"
1056 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1057 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1058 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1059 </eAnnotations>
1060 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1061 <eParameters name="local_amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1062 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1063 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1064 </eOperations>
1065 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" lowerBound="1"
1066 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1067 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
1068 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_law"/>
1069 </eClassifiers>
1070 <eClassifiers xsi:type="ecore:EClass" name="Fiscal_Address" eSuperTypes="#//Address"/>
1071 <eClassifiers xsi:type="ecore:EClass" name="Habitual_Address" eSuperTypes="#//Address"/>
1072 <eClassifiers xsi:type="ecore:EClass" name="Marriage_Record" eSuperTypes="#//Legal_Union_Record"/>
1073 <eClassifiers xsi:type="ecore:EClass" name="Non_Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1074 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assimilated_to_resident"
1075 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1076 defaultValueLiteral="false"/>
1077 </eClassifiers>
1078 <eClassifiers xsi:type="ecore:EClass" name="Partnership_Record" eSuperTypes="#//Legal_Union_Record"/>
1079 <eClassifiers xsi:type="ecore:EClass" name="Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1080 <eStructuralFeatures xsi:type="ecore:EAttribute" name="test" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1081 derived="true">
1082 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1083 <details key="derivation" value="self.oclAsType(Tax_Payer).from_agent.taxation_year=2014"/>
1084 </eAnnotations>
1085 </eStructuralFeatures>
1086 </eClassifiers>
1087 <eClassifiers xsi:type="ecore:EClass" name="Trade_and_Business_Income" eSuperTypes="#//Income_Type"/>
1088 <eClassifiers xsi:type="ecore:EClass" name="Agriculture_and_Forestry_Income" eSuperTypes="#//Income_Type"/>
1089 <eClassifiers xsi:type="ecore:EClass" name="Pensions_and_Annuities_Income" eSuperTypes="#//Income_Type">
1090 <eStructuralFeatures xsi:type="ecore:EAttribute" name="occasional_payement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1091 defaultValueLiteral="false"/>
1092 </eClassifiers>
1093 <eClassifiers xsi:type="ecore:EClass" name="Capital_and_Investments_Income" eSuperTypes="#//Income_Type"/>
1094 <eClassifiers xsi:type="ecore:EClass" name="Employment_Income" eSuperTypes="#//Income_Type"/>
1095 <eClassifiers xsi:type="ecore:EClass" name="Rentals_and_Leases_Income" eSuperTypes="#//Income_Type">
1096 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_periodic" lowerBound="1"
1097 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="true"/>
1098 </eClassifiers>
1099 <eClassifiers xsi:type="ecore:EClass" name="Foreign_Income" eSuperTypes="#//Income"/>
1100 <eClassifiers xsi:type="ecore:EClass" name="Local_Income" eSuperTypes="#//Income"/>
1101 <eClassifiers xsi:type="ecore:EClass" name="CIM" eSuperTypes="#//Income_Tax_Credit"/>
1102 <eClassifiers xsi:type="ecore:EClass" name="CIP" eSuperTypes="#//Income_Tax_Credit"/>
1103 <eClassifiers xsi:type="ecore:EClass" name="CIS" eSuperTypes="#//Income_Tax_Credit"/>
1104 <eClassifiers xsi:type="ecore:EClass" name="FD" eSuperTypes="#//Professional_Expenses_Deduction">
1105 <eOperations name="compute_distance_unit_between_home_and_workpalce" lowerBound="1"
1106 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1107 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance_declared_in_january"
1108 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1109 <eStructuralFeatures xsi:type="ecore:EAttribute" name="calculated_distance" lowerBound="1"
1110 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" derived="true"/>
1111 </eClassifiers>
1112 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expenses_Deduction"/>
1113 <eClassifiers xsi:type="ecore:EClass" name="FO" eSuperTypes="#//Professional_Expenses_Deduction">
1114 <eOperations name="compute_disability_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1115 <eOperations name="compute_regular_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1116 <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate_type_for_FO" lowerBound="1"
1117 eType="#//Type_of_Rate" derived="true"/>
1118 </eClassifiers>
1119 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Permanent_Expense" eSuperTypes="#//DS">
1120 <eStructuralFeatures xsi:type="ecore:EAttribute" name="permanent_expense_category"
1121 lowerBound="1" eType="#//Category_of_Permanent_Expense"/>
1122 </eClassifiers>
1123 <eClassifiers xsi:type="ecore:EClass" name="DS">
1124 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount"
1125 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1126 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id3" ordered="false" lowerBound="1"
1127 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1128 </eClassifiers>
1129 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Permanent_Expense">
1130 <eLiterals name="MISCELLANEOUS_DEBT" literal="MISCELLANEOUS_DEBT"/>
1131 <eLiterals name="ALIMONY" value="1" literal="ALIMONY"/>
1132 </eClassifiers>
1133 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Interest_Expense" eSuperTypes="#//DS">
1134 <eOperations name="compute_maximum_deductible_amount" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1135 <eParameters name="IN_children_with_allowances" ordered="false" upperBound="-1"
1136 eType="#//Dependent"/>
1137 <eParameters name="IN_legal_union" ordered="false" upperBound="-1" eType="#//Legal_Union_Record"/>
1138 </eOperations>
1139 </eClassifiers>
1140 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Health_and_Pension_Insurance"
1141 eSuperTypes="#//DS">
1142 <eStructuralFeatures xsi:type="ecore:EAttribute" name="insurance_category" lowerBound="1"
1143 eType="#//Category_of_Health_and_Pension_Insurances"/>
1144 </eClassifiers>
1145 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Health_and_Pension_Insurances">
1146 <eLiterals name="MANDATORY_HEALTH_AND_PENSION_INSURANCE" literal="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
1147 <eLiterals name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" value="1" literal="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
1148 <eLiterals name="CONTINUED_HEALTH_AND_PENSION_INSURANCE" value="2" literal="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
1149 </eClassifiers>
1150 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Private_Insurance_and_Plan" eSuperTypes="#//DS">
1151 <eOperations name="compute_increase_for_life_insurance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1152 <eOperations name="compute_maximum_deductible_amount_for_private_insruance" lowerBound="1"
1153 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1154 <eOperations name="compute_maximum_deductible_amount_for_old_age_pension_plan"
1155 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="private_insurance_and_plan_category"
1157 lowerBound="1" eType="#//Category_of_Private_Insurance_and_Plan"/>
1158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increase_for_life_insurance"
1159 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1160 derived="true"/>
1161 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_private_insurance"
1162 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1163 derived="true"/>
1164 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_old_age_pension_plan"
1165 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1166 derived="true"/>
1167 </eClassifiers>
1168 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Private_Insurance_and_Plan">
1169 <eLiterals name="PRIVATE_INSURANCE" literal="PRIVATE_INSURANCE"/>
1170 <eLiterals name="PRIVATE_LIFE_INSURANCE" value="1" literal="PRIVATE_LIFE_INSURANCE"/>
1171 <eLiterals name="COMPANY_MEMBERS_PRIVATE_INSURANCE" value="2" literal="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
1172 <eLiterals name="HOUSING_SAVING_PLAN" value="3" literal="HOUSING_SAVING_PLAN"/>
1173 <eLiterals name="OLD_AGE_PENSION_PLAN" value="4" literal="OLD_AGE_PENSION_PLAN"/>
1174 </eClassifiers>
1175 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Loss_Carryforward" eSuperTypes="#//DS"/>
1176 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Donation" eSuperTypes="#//DS"/>
1177 <eClassifiers xsi:type="ecore:EClass" name="Permanent_Expense" eSuperTypes="#//Special_Expense_DS">
1178 <eOperations name="is_expense_eligible_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
1179 <eParameters name="IN_agent_response" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1180 </eOperations>
1181 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1182 eType="#//Category_of_Permanent_Expense"/>
1183 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_for_deduction"
1184 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1185 defaultValueLiteral="false" derived="true"/>
1186 </eClassifiers>
1187 <eClassifiers xsi:type="ecore:EClass" name="Special_Expense_DS" eSuperTypes="#//Expense"/>
1188 <eClassifiers xsi:type="ecore:EClass" name="Interest_Expense" eSuperTypes="#//Special_Expense_DS"/>
1189 <eClassifiers xsi:type="ecore:EClass" name="Private_Insurance_and_Plan" eSuperTypes="#//Special_Expense_DS">
1190 <eOperations name="is_private_insurance_and_plan_eligible_for_deduction" lowerBound="1"
1191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1192 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1193 eType="#//Category_of_Private_Insurance_and_Plan"/>
1194 <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration_of_contract" lowerBound="1"
1195 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1196 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_private_insurance_and_plan_eligible_for_deduction"
1197 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1198 defaultValueLiteral="false" derived="true"/>
1199 </eClassifiers>
1200 <eClassifiers xsi:type="ecore:EClass" name="Health_and_Pension_Insurance" eSuperTypes="#//Special_Expense_DS">
1201 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1202 eType="#//Category_of_Health_and_Pension_Insurances"/>
1203 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_related_to_additional_salary"
1204 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1205 defaultValueLiteral="false"/>
1206 </eClassifiers>
1207 <eClassifiers xsi:type="ecore:EClass" name="Donation" eSuperTypes="#//Special_Expense_DS">
1208 <eOperations name="get_beneficiary_eligibility_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1209 <eStructuralFeatures xsi:type="ecore:EAttribute" name="beneficiary1" lowerBound="1"
1210 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1211 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_beneficiary_eligible"
1212 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1213 defaultValueLiteral="false" derived="true"/>
1214 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_donation_reported" lowerBound="1"
1215 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1216 </eClassifiers>
1217 <eClassifiers xsi:type="ecore:EClass" name="Loss_Carryforward" eSuperTypes="#//Special_Expense_DS">
1218 <eOperations name="is_accountability_regular" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1219 <eOperations name="is_compensated_by_other_means" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1220 <eOperations name="has_been_tax_payer_partner_in_business" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1221 <eOperations name="has_tax_payer_inherited_business_ownership" lowerBound="1"
1222 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1223 <eStructuralFeatures xsi:type="ecore:EAttribute" name="regular_accountability"
1224 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1225 derived="true"/>
1226 <eStructuralFeatures xsi:type="ecore:EAttribute" name="compensation_by_other_means"
1227 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1228 derived="true"/>
1229 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_inherited_business_ownership"
1230 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1231 defaultValueLiteral="false" derived="true"/>
1232 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_been_partner_in_business"
1233 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1234 defaultValueLiteral="true" derived="true"/>
1235 </eClassifiers>
1236 <eClassifiers xsi:type="ecore:EClass" name="Spousal_Expense_AC" eSuperTypes="#//Expense"/>
1237 <eClassifiers xsi:type="ecore:EClass" name="Extraordinary_Expense_CE" eSuperTypes="#//Expense">
1238 <eOperations name="is_above_thresholded_deduction_percentage_for_CE" lowerBound="1"
1239 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1240 <eOperations name="compute_thresholded_deduction_percentage_for_CE" lowerBound="1"
1241 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1242 <eParameters name="IN_thresholded_deduction_percentage" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1243 </eOperations>
1244 <eStructuralFeatures xsi:type="ecore:EAttribute" name="thresholded_deduction_percentage"
1245 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1246 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ce_type" lowerBound="1"
1247 eType="#//CE_Type"/>
1248 </eClassifiers>
1249 <eClassifiers xsi:type="ecore:EClass" name="Travel_Expense_FD" eSuperTypes="#//Professional_Expense"/>
1250 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expense" eSuperTypes="#//Expense"/>
1251 <eClassifiers xsi:type="ecore:EClass" name="Miscellaneous_Expense_FO" eSuperTypes="#//Professional_Expense"/>
1252 <eClassifiers xsi:type="ecore:EEnum" name="Legal_Union_Types">
1253 <eLiterals name="MARIAGE"/>
1254 <eLiterals name="PARTNERSHIP" value="1"/>
1255 <eLiterals name="OTHER" value="2"/>
1256 </eClassifiers>
1257</ecore:EPackage>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_
new file mode 100644
index 00000000..c86fd55a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/archive/TaxationOriginal.ecore_
@@ -0,0 +1,1257 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Taxation" nsURI="http:///TaxCardOriginal.ecore" nsPrefix="TaxCard">
4 <eAnnotations source="http://www.eclipse.org/OCL/Import">
5 <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EEnum" name="Grantor">
8 <eLiterals name="WWW" literal="WWW"/>
9 <eLiterals name="Employer" value="1" literal="Employer"/>
10 <eLiterals name="MMM" value="2" literal="MMM"/>
11 <eLiterals name="UUU" value="3" literal="UUU"/>
12 <eLiterals name="YYY" value="4" literal="YYY"/>
13 <eLiterals name="OOO" value="5" literal="OOO"/>
14 </eClassifiers>
15 <eClassifiers xsi:type="ecore:EClass" name="Constants" abstract="true">
16 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"
17 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
18 defaultValueLiteral="3480.0"/>
19 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"
20 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
21 defaultValueLiteral="3600.0"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_SALARY" lowerBound="1"
23 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1500.0"/>
24 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"
25 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
26 defaultValueLiteral="4500.0"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"
28 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
29 defaultValueLiteral="20.0"/>
30 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"
31 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
32 defaultValueLiteral="120.0"/>
33 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"
34 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
35 defaultValueLiteral="0.0"/>
36 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"
37 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
38 defaultValueLiteral="24000.0"/>
39 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
40 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
41 defaultValueLiteral="99.0"/>
42 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
43 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
44 defaultValueLiteral="30.0"/>
45 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
46 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
47 defaultValueLiteral="4.0"/>
48 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_DAILY" lowerBound="1"
49 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="2.0"/>
50 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_MONTHLY"
51 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
52 defaultValueLiteral="62.0"/>
53 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_YEARLY" lowerBound="1"
54 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="750.0"/>
55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_DAILY" lowerBound="1"
56 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
57 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_MONTHLY"
58 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
59 defaultValueLiteral="25.0"/>
60 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_YEARLY" lowerBound="1"
61 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="30.0"/>
62 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_DAILY" lowerBound="1"
63 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
64 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_MONTHLY"
65 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
66 defaultValueLiteral="25.0"/>
67 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_YEARLY" lowerBound="1"
68 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
69 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"
70 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
71 defaultValueLiteral="99.0"/>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"
73 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
75 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
76 <eStructuralFeatures xsi:type="ecore:EAttribute" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
77 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
78 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"
79 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
80 </eClassifiers>
81 <eClassifiers xsi:type="ecore:EEnum" name="Disability_Types">
82 <eLiterals name="beug"/>
83 <eLiterals name="NONE" value="1"/>
84 <eLiterals name="A" value="2" literal="A"/>
85 <eLiterals name="B" value="3" literal="B"/>
86 <eLiterals name="C" value="4" literal="C"/>
87 <eLiterals name="D" value="5" literal="D"/>
88 <eLiterals name="E" value="6" literal="E"/>
89 <eLiterals name="OTHER" value="7"/>
90 </eClassifiers>
91 <eClassifiers xsi:type="ecore:EEnum" name="Country">
92 <eLiterals name="ZZ" literal="ZZ"/>
93 <eLiterals name="FF" value="1" literal="FF"/>
94 <eLiterals name="BB" value="2" literal="BB"/>
95 <eLiterals name="DD" value="3" literal="DD"/>
96 <eLiterals name="NN" value="4" literal="NN"/>
97 <eLiterals name="OTHER" value="5" literal="OTHER"/>
98 </eClassifiers>
99 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Card_Type">
100 <eLiterals name="Principal" literal="Principal"/>
101 <eLiterals name="Additional" value="1" literal="Additional"/>
102 </eClassifiers>
103 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Office">
104 <eLiterals name="RTS_2" literal="RTS_2"/>
105 <eLiterals name="RTS_3" value="1" literal="RTS_3"/>
106 <eLiterals name="RTS_4" value="2" literal="RTS_4"/>
107 <eLiterals name="RTS_5" value="3" literal="RTS_5"/>
108 </eClassifiers>
109 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Class_Category">
110 <eLiterals name="One" literal="One"/>
111 <eLiterals name="One_A" value="1" literal="One_A"/>
112 <eLiterals name="Two" value="2" literal="Two"/>
113 </eClassifiers>
114 <eClassifiers xsi:type="ecore:EEnum" name="Job_Activity">
115 <eLiterals name="Salary" literal="Salary"/>
116 <eLiterals name="Pension" value="1" literal="Pension"/>
117 <eLiterals name="Annuity" value="2" literal="Annuity"/>
118 </eClassifiers>
119 <eClassifiers xsi:type="ecore:EEnum" name="Town">
120 <eLiterals name="LL" literal="LL"/>
121 <eLiterals name="BB" value="1" literal="BB"/>
122 <eLiterals name="SS" value="2" literal="SS"/>
123 <eLiterals name="TT" value="3" literal="TT"/>
124 <eLiterals name="Other" value="4" literal="Other"/>
125 </eClassifiers>
126 <eClassifiers xsi:type="ecore:EEnum" name="Type_of_Rate">
127 <eLiterals name="REGULAR" literal="REGULAR"/>
128 <eLiterals name="REAL_COST" value="1" literal="REAL_COST"/>
129 </eClassifiers>
130 <eClassifiers xsi:type="ecore:EEnum" name="CE_Type">
131 <eLiterals name="INALIDITY_AND_INFIRMITY" literal="INALIDITY_AND_INFIRMITY"/>
132 <eLiterals name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"
133 value="1" literal="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
134 <eLiterals name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" value="2" literal="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
135 </eClassifiers>
136 <eClassifiers xsi:type="ecore:EEnum" name="Expense_Purpose">
137 <eLiterals name="HOUSE_CARE" literal="HOUSE_CARE"/>
138 <eLiterals name="CHILD_CARE" value="1" literal="CHILD_CARE"/>
139 <eLiterals name="DEPENDENCE_CARE" value="2" literal="DEPENDENCE_CARE"/>
140 <eLiterals name="OTHER" value="3" literal="OTHER"/>
141 <eLiterals name="ALIMONY" value="4"/>
142 <eLiterals name="RECURRENT_DEPT" value="5"/>
143 </eClassifiers>
144 <eClassifiers xsi:type="ecore:EEnum" name="Dependent_Type">
145 <eLiterals name="CHILD" literal="CHILD"/>
146 <eLiterals name="SPOUSE" value="1" literal="SPOUSE"/>
147 <eLiterals name="RELATIVE" value="2" literal="RELATIVE"/>
148 <eLiterals name="OTHER_FAMILY_MEMBER" value="3" literal="OTHER_FAMILY_MEMBER"/>
149 <eLiterals name="NOT_OWN_CHILD" value="4"/>
150 </eClassifiers>
151 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax">
152 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
153 eType="#//Tax_Payer"/>
154 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_amount" lowerBound="1"
155 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
157 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id6" ordered="false" lowerBound="1"
159 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
160 </eClassifiers>
161 <eClassifiers xsi:type="ecore:EClass" name="Tax_Payer" abstract="true" eSuperTypes="#//Physical_Person #//Tax_Case">
162 <eAnnotations source="duplicates">
163 <contents xsi:type="ecore:EReference" name="expenses" ordered="false" upperBound="-1"
164 eType="#//Expense" containment="true">
165 <eAnnotations source="redefines" references="#//Physical_Person/expenses"/>
166 </contents>
167 </eAnnotations>
168 <eOperations name="is_dependent_part_of_the_household" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
169 <eParameters name="IN_dependent" lowerBound="1" eType="#//Dependent"/>
170 </eOperations>
171 <eOperations name="number_of_months_of_allowance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
172 <eOperations name="deduction_according_disability_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
173 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
174 <details key="body" value="if ( self.disability_percentage >= 0.25 and self.disability_percentage &lt; 0.35) then&#xA;&#x9;&#x9;&#x9;150&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.35 and self.disability_percentage &lt; 0.45) then&#xA;&#x9;&#x9;&#x9;225&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.45 and self.disability_percentage &lt;0.55) then&#xA;&#x9;&#x9;&#x9;375&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.55 and self.disability_percentage &lt; 0.65 ) then&#xA;&#x9;&#x9;&#x9;450 &#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.65 and self.disability_percentage &lt; 0.75) then&#xA;&#x9;&#x9;&#x9;525&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.75 and self.disability_percentage &lt; 0.85) then&#xA;&#x9;&#x9;&#x9;585&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.85 and self.disability_percentage&lt; 0.95) then&#xA;&#x9;&#x9;&#x9;645&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.95 and self.disability_percentage&lt;=1)then&#xA;&#x9;&#x9;&#x9;735 else 0 endif endif endif endif endif endif endif endif"/>
175 </eAnnotations>
176 </eOperations>
177 <eOperations name="getIsTaxedJointly" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
178 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
179 <details key="body" value="let is_married:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Marriage_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: - **/&#x9;&#xA;if (is_married) = false then&#xA; let is_in_partnership_relation:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Partnership_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_in_partnership_relation) = false then&#xA; false&#xA; else&#xA; if (is_in_partnership_relation) = true then&#xA; let is_joint_tax_beneficial:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_joint_tax_beneficial) = true then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let relation_lasted_for_the_taxation_year:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = false then&#xA; false&#xA; else&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = false then&#xA; false&#xA; else&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) &#xA; &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = true then&#xA; true&#xA; else&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_joint_tax_beneficial) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_married) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let is_couple_assimilated_to_residents:Boolean = (resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_assimilated_to_residents) = true then&#xA; true&#xA; else&#xA; if (is_couple_assimilated_to_residents) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let local_professional_household_income:Real = self.getProfetionalIncomeHouseholdZZ(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = false then&#xA; false&#xA; else&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (are_both_spouses_non_resident) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let professional_income_resident_taxpayer:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes->oclIsInvalid()) then 0.0 else my_incomes.income_amount->sum() endif else if(spouse_incomes->oclIsInvalid()) then 0.0 else spouse_incomes.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = false then&#xA; false&#xA; else&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
180 </eAnnotations>
181 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
182 </eOperations>
183 <eOperations name="getIsreceivingAllowancesForChildren" ordered="false" lowerBound="1"
184 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
185 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
186 <details key="body" value="let children1:Set(Dependent)=self.dependents->select(dependent_type=Dependent_Type::CHILD) in&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in&#xA;&#x9;&#x9;&#x9;let house: Household = union.household in&#xA;&#x9;&#x9;&#x9;let children:Set(Dependent)=if (house.oclIsInvalid()) then children1 else children1->union(house.children) endif in&#xA;&#x9;&#x9;&#x9;if(children->size()=0)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let allowances:Boolean=children.allowances->select(starting_year&lt;=year and ending_year=-1 and amount>0)->size()>0in&#xA;&#x9;&#x9;&#x9;if(allowances)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
187 </eAnnotations>
188 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
189 </eOperations>
190 <eOperations name="getProfetionalIncomeHousehold" ordered="false" lowerBound="1"
191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
192 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
193 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real= if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
194 </eAnnotations>
195 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
196 </eOperations>
197 <eOperations name="getProfetionalIncomeHouseholdZZ" ordered="false" lowerBound="1"
198 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
199 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
200 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real=if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
201 </eAnnotations>
202 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
203 </eOperations>
204 <eOperations name="getTaxClass" ordered="false" lowerBound="1" eType="#//Tax_Class_Category">
205 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
206 <details key="body" value="let is_resident_taxpayer:Boolean = self.oclIsKindOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: Returns yes if a given taxpayer is a resident. - **/&#x9;&#xA;if (is_resident_taxpayer) = true then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_resident_taxpayer) = false then&#xA; let is_married:Boolean = self.getIsMaried(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married. - **/&#x9;&#xA; if (is_married) = false then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_married) = true then&#xA; let total_professional_income_household:Real = self.getProfetionalIncomeHousehold(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes. - **/&#x9;&#xA; let sum_professional_income_household_ZZ:Real = self.getProfetionalIncomeHouseholdZZ(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes that are taxed in ZZ. - **/&#x9;&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
207 </eAnnotations>
208 <eParameters name="taxation_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
209 </eOperations>
210 <eStructuralFeatures xsi:type="ecore:EReference" name="dependents" ordered="false"
211 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/responsible_person"/>
212 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" lowerBound="1"
213 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/taxPayer"/>
214 <eStructuralFeatures xsi:type="ecore:EReference" name="incomes" ordered="false"
215 lowerBound="1" upperBound="-1" eType="#//Income" containment="true" eOpposite="#//Income/taxPayer"/>
216 <eStructuralFeatures xsi:type="ecore:EReference" name="from_law" lowerBound="1"
217 eType="#//FromLaw" containment="true" eOpposite="#//FromLaw/taxPayer"/>
218 <eStructuralFeatures xsi:type="ecore:EAttribute" name="AEP_deduction" ordered="false"
219 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
220 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxesDue" ordered="false"
221 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
222 </eClassifiers>
223 <eClassifiers xsi:type="ecore:EClass" name="Physical_Person">
224 <eOperations name="is_separated_from" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
225 <eParameters name="IN_person" lowerBound="1" eType="#//Physical_Person"/>
226 </eOperations>
227 <eOperations name="is_person_affiliated_personnaly_to_social_security" lowerBound="1"
228 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
229 <eOperations name="getSeperationState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
230 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
231 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.separation_cause=seperation_type&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
232 </eAnnotations>
233 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
234 <eParameters name="seperation_type" ordered="false" lowerBound="1" eType="#//Separation_Causes"/>
235 </eOperations>
236 <eOperations name="getAge" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
237 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
238 <details key="body" value="&#x9;if(birth_year>=year )then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;year-birth_year&#xA;&#x9;&#x9;&#x9;endif"/>
239 </eAnnotations>
240 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
241 </eOperations>
242 <eOperations name="getIsMaried" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
243 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
244 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
245 </eAnnotations>
246 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
247 </eOperations>
248 <eOperations name="getSeperationYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
249 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
250 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.end_year&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
251 </eAnnotations>
252 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
253 </eOperations>
254 <eOperations name="getDivorceTransitionState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
255 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
256 <details key="body" value="let sep_year:Integer=self.getSeperationYear(year) in&#xA;&#x9;&#x9;&#x9;if(sep_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if( (sep_year &lt;= year and sep_year >= (year -3))=false) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let past_sep_year:Integer=self.getSeperationYear(year-5) in&#xA;&#x9;&#x9;&#x9;if(past_sep_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
257 </eAnnotations>
258 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
259 </eOperations>
260 <eOperations name="getSpouse" ordered="false" lowerBound="1" eType="#//Physical_Person">
261 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
262 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in &#xA;&#x9;&#x9;&#x9;if(union.oclIsInvalid())then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9; if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(lasted_union.individual_A=self)then&#xA;&#x9;&#x9;&#x9;lasted_union.individual_B&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.individual_A&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
263 </eAnnotations>
264 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
265 </eOperations>
266 <eOperations name="getLegalUnionRecord" ordered="false" lowerBound="1" eType="#//Legal_Union_Record">
267 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
268 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;lasted_union&#xA;&#x9;&#x9;&#x9;endif"/>
269 </eAnnotations>
270 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
271 </eOperations>
272 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
273 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
274 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assisting_spouse" lowerBound="1"
275 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" derived="true"/>
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="SSNo" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
277 iD="true"/>
278 <eStructuralFeatures xsi:type="ecore:EReference" name="addresses" ordered="false"
279 upperBound="-1" eType="#//Address" eOpposite="#//Address/taxPayer"/>
280 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_year" ordered="false"
281 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
282 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_percentage"
283 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
284 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_type" ordered="false"
285 unique="false" lowerBound="1" eType="#//Disability_Types"/>
286 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_affiliated_personnaly_to_social_security"
287 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
288 derived="true"/>
289 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_month" ordered="false"
290 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
291 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_day" ordered="false"
292 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
293 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
294 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/beneficiary"/>
295 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_widower" ordered="false"
296 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
297 <eStructuralFeatures xsi:type="ecore:EAttribute" name="last_start_year_widower"
298 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
299 </eClassifiers>
300 <eClassifiers xsi:type="ecore:EClass" name="Address">
301 <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" lowerBound="1"
302 eType="#//Country" defaultValueLiteral="ZZ"/>
303 <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" lowerBound="1"
304 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
305 <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" lowerBound="1"
306 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
307 <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
308 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id2" ordered="false" lowerBound="1"
309 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
310 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
311 upperBound="-1" eType="#//Physical_Person" eOpposite="#//Physical_Person/addresses"/>
312 </eClassifiers>
313 <eClassifiers xsi:type="ecore:EClass" name="Expense">
314 <eStructuralFeatures xsi:type="ecore:EAttribute" name="declared_amount" lowerBound="1"
315 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
316 <eStructuralFeatures xsi:type="ecore:EAttribute" name="expense_purpose" lowerBound="1"
317 eType="#//Expense_Purpose" defaultValueLiteral="OTHER"/>
318 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" eType="#//Dependent"
319 eOpposite="#//Dependent/expense"/>
320 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
321 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/expense"/>
322 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year_expense_was_incurred_in"
323 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
324 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
325 eType="#//Income" eOpposite="#//Income/expenses"/>
326 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id4" ordered="false" lowerBound="1"
327 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
328 <eStructuralFeatures xsi:type="ecore:EReference" name="beneficiary" ordered="false"
329 eType="#//Physical_Person" eOpposite="#//Physical_Person/expenses"/>
330 </eClassifiers>
331 <eClassifiers xsi:type="ecore:EClass" name="Dependent" eSuperTypes="#//Physical_Person">
332 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CIM"
333 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
334 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_DS" lowerBound="1"
335 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
336 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care"
337 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
338 <eOperations name="is_dependent_following_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
339 <eParameters name="IN_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
340 </eOperations>
341 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dependent_type" lowerBound="1"
342 eType="#//Dependent_Type"/>
343 <eStructuralFeatures xsi:type="ecore:EReference" name="responsible_person" eType="#//Tax_Payer"
344 eOpposite="#//Tax_Payer/dependents"/>
345 <eStructuralFeatures xsi:type="ecore:EAttribute" name="continued_studies" lowerBound="1"
346 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
347 <eStructuralFeatures xsi:type="ecore:EReference" name="allowances" ordered="false"
348 upperBound="-1" eType="#//External_Allowance" containment="true" eOpposite="#//External_Allowance/person"/>
349 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
350 eType="#//Household" eOpposite="#//Household/children"/>
351 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
352 eType="#//FromAgent" eOpposite="#//FromAgent/dependent"/>
353 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
354 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/dependent"/>
355 </eClassifiers>
356 <eClassifiers xsi:type="ecore:EClass" name="External_Allowance">
357 <eOperations name="getAmount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
358 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
359 <details key="body" value=" if(dep_age>=6 and dep_age&lt;=11) then&#xA;(base + 16.17).round()&#xA; else if (dep_age>=12) then (base + 48.52).round() else &#xA; if(is_disabled) then(base + 185.60).round() else base endif endif endif"/>
360 </eAnnotations>
361 <eParameters name="base" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
362 <eParameters name="dep_age" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
363 <eParameters name="is_disabled" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
364 </eOperations>
365 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
366 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
367 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
368 </eAnnotations>
369 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
370 </eOperations>
371 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
372 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
373 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantor" lowerBound="1"
374 eType="#//Grantor"/>
375 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
376 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
377 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ending_year" ordered="false"
378 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
379 <eStructuralFeatures xsi:type="ecore:EReference" name="reciver" ordered="false"
380 lowerBound="1" eType="#//Physical_Person"/>
381 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
382 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
383 <eStructuralFeatures xsi:type="ecore:EReference" name="person" ordered="false"
384 lowerBound="1" eType="#//Dependent" eOpposite="#//Dependent/allowances"/>
385 </eClassifiers>
386 <eClassifiers xsi:type="ecore:EClass" name="Household" eSuperTypes="#//Tax_Case">
387 <eStructuralFeatures xsi:type="ecore:EReference" name="parents" ordered="false"
388 lowerBound="1" eType="#//Legal_Union_Record" containment="true" eOpposite="#//Legal_Union_Record/household"/>
389 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id1" ordered="false" lowerBound="1"
390 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
391 <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
392 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/household"/>
393 </eClassifiers>
394 <eClassifiers xsi:type="ecore:EClass" name="Legal_Union_Record" abstract="true">
395 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" lowerBound="1"
396 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
397 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_year" lowerBound="1"
398 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
399 <eStructuralFeatures xsi:type="ecore:EAttribute" name="separation_cause" ordered="false"
400 lowerBound="1" eType="#//Separation_Causes"/>
401 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_A" ordered="false"
402 lowerBound="1" eType="#//Physical_Person" containment="true">
403 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
404 <details key="body" value="legal_union_A"/>
405 </eAnnotations>
406 </eStructuralFeatures>
407 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_B" ordered="false"
408 lowerBound="1" eType="#//Physical_Person" containment="true">
409 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
410 <details key="body" value="legal_union_B"/>
411 </eAnnotations>
412 </eStructuralFeatures>
413 <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
414 lowerBound="1" upperBound="-1" eType="#//Tax_Property" containment="true"
415 eOpposite="#//Tax_Property/union_record"/>
416 <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutual_agreement" ordered="false"
417 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
418 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id9" ordered="false" lowerBound="1"
419 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
420 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
421 lowerBound="1" eType="#//Household" eOpposite="#//Household/parents"/>
422 </eClassifiers>
423 <eClassifiers xsi:type="ecore:EEnum" name="Separation_Causes">
424 <eLiterals name="NONE"/>
425 <eLiterals name="DIVORCE" value="1"/>
426 <eLiterals name="SEPARATION_DE_FAIT" value="2"/>
427 <eLiterals name="SEPARATION_BY_COURT" value="3"/>
428 </eClassifiers>
429 <eClassifiers xsi:type="ecore:EClass" name="Tax_Property">
430 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
431 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
432 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxed_jointly" ordered="false"
433 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
434 defaultValueLiteral="false"/>
435 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id10" ordered="false" lowerBound="1"
436 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
437 <eStructuralFeatures xsi:type="ecore:EReference" name="union_record" ordered="false"
438 lowerBound="1" eType="#//Legal_Union_Record" eOpposite="#//Legal_Union_Record/properties"/>
439 </eClassifiers>
440 <eClassifiers xsi:type="ecore:EClass" name="Tax_Case" abstract="true" interface="true"/>
441 <eClassifiers xsi:type="ecore:EClass" name="FromAgent">
442 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxation_year" unique="false"
443 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
444 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
445 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_agent"/>
446 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"
447 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
448 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
449 eType="#//Expense" eOpposite="#//Expense/from_agent"/>
450 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_debt" ordered="false"
451 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
452 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" ordered="false"
453 eType="#//Dependent" eOpposite="#//Dependent/from_agent"/>
454 </eClassifiers>
455 <eClassifiers xsi:type="ecore:EClass" name="Income" abstract="true">
456 <eOperations name="compute_duration_of_contract" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
457 <eOperations name="compute_duration_of_contract_within_taxation_year" lowerBound="1"
458 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
459 <eParameters name="IN_date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
460 </eOperations>
461 <eOperations name="prorata_worked_months" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
462 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
463 <details key="body" value="self.details->select(is_worked)->size()"/>
464 </eAnnotations>
465 </eOperations>
466 <eOperations name="prorata_worked_days" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
467 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
468 <details key="body" value="let a:Set(Income_Detail)=self.details->select(is_worked) in &#xA;&#x9;&#x9;&#x9;a.worked_days->sum().mod(25)"/>
469 </eAnnotations>
470 </eOperations>
471 <eOperations name="prorata_period" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
472 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
473 <details key="body" value="&#xA;&#x9;&#x9;&#x9;let nb_months:Integer=self.prorata_worked_months()in&#xA;&#x9;&#x9;&#x9;let nb_days:Integer=self.prorata_worked_days()in&#xA;&#x9;&#x9;&#x9; if(nb_months=12) then&#xA;&#x9;&#x9;&#x9;1&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;nb_months/12 + nb_days/300&#xA;&#x9;&#x9;&#x9;endif"/>
474 </eAnnotations>
475 </eOperations>
476 <eOperations name="income_per_day" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
477 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
478 <details key="body" value="income_per_year()/300"/>
479 </eAnnotations>
480 </eOperations>
481 <eOperations name="income_per_month" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
482 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
483 <details key="body" value="income_per_year()/12"/>
484 </eAnnotations>
485 </eOperations>
486 <eOperations name="income_per_year" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
487 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
488 <details key="body" value="&#x9;&#x9;&#x9;let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;involved_details.amount->sum()"/>
489 </eAnnotations>
490 </eOperations>
491 <eOperations name="getDurationInyears" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
492 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
493 <details key="body" value="&#xA;&#x9;&#x9;&#x9;if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then &#xA;&#x9;&#x9;&#x9;if(start_year.oclIsUndefined())then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in&#xA;&#x9;&#x9;&#x9;if(res&lt;0) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;res&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif"/>
494 </eAnnotations>
495 </eOperations>
496 <eStructuralFeatures xsi:type="ecore:EAttribute" name="income_amount" ordered="false"
497 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
498 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
499 <details key="derivation" value="let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in&#xA;non_null_amounts->collect(amount)->min()"/>
500 </eAnnotations>
501 </eStructuralFeatures>
502 <eStructuralFeatures xsi:type="ecore:EReference" name="income_type" lowerBound="1"
503 eType="#//Income_Type" containment="true" eOpposite="#//Income_Type/income"/>
504 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_within_taxation_year"
505 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
506 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_of_contract"
507 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
508 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_date_within_taxation_year"
509 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
510 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_card" eType="#//Tax_Card"
511 containment="true" eOpposite="#//Tax_Card/income"/>
512 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_liability" lowerBound="1"
513 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
514 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
515 lowerBound="1" eType="#//Tax_Payer" eOpposite="#//Tax_Payer/incomes"/>
516 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year" unique="false" lowerBound="1"
517 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
518 <eStructuralFeatures xsi:type="ecore:EReference" name="details" lowerBound="12"
519 upperBound="12" eType="#//Income_Detail" containment="true" eOpposite="#//Income_Detail/income"/>
520 <eStructuralFeatures xsi:type="ecore:EAttribute" name="num" ordered="false" lowerBound="1"
521 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"
522 iD="true"/>
523 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" ordered="false"
524 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
525 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
526 upperBound="-1" eType="#//Expense" containment="true" eOpposite="#//Expense/income"/>
527 </eClassifiers>
528 <eClassifiers xsi:type="ecore:EClass" name="Income_Type" abstract="true">
529 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subjectToWithholdingTax"
530 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
531 derived="true">
532 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
533 <details key="derivation" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.income.tax_card->notEmpty()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
534 </eAnnotations>
535 </eStructuralFeatures>
536 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id8" ordered="false" lowerBound="1"
537 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
538 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
539 eType="#//Income" eOpposite="#//Income/income_type"/>
540 </eClassifiers>
541 <eClassifiers xsi:type="ecore:EClass" name="Tax_Card">
542 <eOperations name="getSumDeductionsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
543 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
544 <details key="body" value="deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly"/>
545 </eAnnotations>
546 </eOperations>
547 <eOperations name="getSumCreditsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
548 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
549 <details key="body" value="credit_CIS_yearly+credit_CIP_yearly"/>
550 </eAnnotations>
551 </eOperations>
552 <eStructuralFeatures xsi:type="ecore:EAttribute" name="card_identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
553 iD="true"/>
554 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_card_type" lowerBound="1"
555 eType="#//Tax_Card_Type" derived="true">
556 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
557 <details key="derivation" value="if(self.income.taxPayer.incomes->size()=1) then &#xA;Tax_Card_Type::Principal&#xA;&#x9;else&#xA;&#x9;&#x9;let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in&#xA;&#x9;&#x9;let bigest_income:Income= all_incomes->first() in&#xA;&#x9;&#x9;&#x9; if(bigest_income=self.income) then&#xA;&#x9;&#x9;&#x9; &#x9; Tax_Card_Type::Principal&#xA;&#x9;&#x9;&#x9; else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;Tax_Card_Type::Additional&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
558 </eAnnotations>
559 </eStructuralFeatures>
560 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_office" lowerBound="1"
561 eType="#//Tax_Office"/>
562 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_from_date" ordered="false"
563 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
564 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_until_date" ordered="false"
565 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
566 <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentage_of_witholding"
567 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
568 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_name_surname"
569 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
570 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_partner_name_surname"
571 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
572 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_payers_address" eType="#//Address"/>
573 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_Employer_SSNo" ordered="false"
574 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
575 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_employers_name" ordered="false"
576 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
577 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_activity_type" lowerBound="1"
578 eType="#//Job_Activity"/>
579 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_place_of_work" lowerBound="1"
580 eType="#//Town"/>
581 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_daily" ordered="false"
582 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
583 defaultValueLiteral="0.0"/>
584 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_monthly" ordered="false"
585 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
586 defaultValueLiteral="0.0"/>
587 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_yearly" unique="false"
588 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
589 defaultValueLiteral="0.0"/>
590 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_daily" unique="false"
591 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
592 defaultValueLiteral="0.0"/>
593 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_monthly" unique="false"
594 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
595 defaultValueLiteral="0.0"/>
596 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_yearly" unique="false"
597 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
598 defaultValueLiteral="0.0"/>
599 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_daily" unique="false"
600 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
601 defaultValueLiteral="0.0"/>
602 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_monthly" unique="false"
603 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
604 defaultValueLiteral="0.0"/>
605 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_yearly" unique="false"
606 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
607 defaultValueLiteral="0.0"/>
608 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_invalidity_yearly"
609 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
610 defaultValueLiteral="0.0"/>
611 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_daily" unique="false"
612 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
613 defaultValueLiteral="0.0"/>
614 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_monthly" lowerBound="1"
615 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0"/>
616 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_yearly" unique="false"
617 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
618 defaultValueLiteral="0.0"/>
619 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_daily" unique="false"
620 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
621 defaultValueLiteral="0.0"/>
622 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_monthly" unique="false"
623 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
624 defaultValueLiteral="0.0"/>
625 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_yearly" unique="false"
626 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
627 defaultValueLiteral="0.0"/>
628 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_daily" unique="false"
629 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
630 defaultValueLiteral="0.0"/>
631 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_monthly" unique="false"
632 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
633 defaultValueLiteral="0.0"/>
634 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_monthly" unique="false"
635 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
636 defaultValueLiteral="0.0"/>
637 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_yearly" unique="false"
638 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
639 defaultValueLiteral="0.0"/>
640 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_daily" unique="false"
641 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
642 defaultValueLiteral="0.0"/>
643 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_monthly" unique="false"
644 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
645 defaultValueLiteral="0.0"/>
646 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_yearly" unique="false"
647 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
648 defaultValueLiteral="0.0"/>
649 <eStructuralFeatures xsi:type="ecore:EAttribute" name="validity" lowerBound="1"
650 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
651 <eStructuralFeatures xsi:type="ecore:EReference" name="income_Tax_Credit" ordered="false"
652 upperBound="-1" eType="#//Income_Tax_Credit" eOpposite="#//Income_Tax_Credit/taxation_Frame"/>
653 <eStructuralFeatures xsi:type="ecore:EReference" name="previous" eType="#//Tax_Card"
654 eOpposite="#//Tax_Card/current_tax_card"/>
655 <eStructuralFeatures xsi:type="ecore:EReference" name="current_tax_card" eType="#//Tax_Card"
656 eOpposite="#//Tax_Card/previous"/>
657 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_yearly" ordered="false"
658 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
659 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Alimony_yearly"
660 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
661 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Debt_yearly"
662 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
663 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
664 eType="#//Income" eOpposite="#//Income/tax_card"/>
665 </eClassifiers>
666 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax_Credit">
667 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantedBy" lowerBound="1"
668 eType="#//Grantor"/>
669 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" eType="#//Tax_Payer"/>
670 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
671 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
672 <eStructuralFeatures xsi:type="ecore:EAttribute" name="yearly" lowerBound="1"
673 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
674 <eStructuralFeatures xsi:type="ecore:EAttribute" name="monthly" lowerBound="1"
675 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="25.0"/>
676 <eStructuralFeatures xsi:type="ecore:EAttribute" name="daily" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
677 defaultValueLiteral="1.0"/>
678 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id7" ordered="false" lowerBound="1"
679 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
680 <eStructuralFeatures xsi:type="ecore:EReference" name="taxation_Frame" eType="#//Tax_Card"
681 eOpposite="#//Tax_Card/income_Tax_Credit"/>
682 </eClassifiers>
683 <eClassifiers xsi:type="ecore:EClass" name="Income_Detail">
684 <eStructuralFeatures xsi:type="ecore:EAttribute" name="month" ordered="false"
685 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
686 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
687 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
688 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_worked" lowerBound="1"
689 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
690 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance" lowerBound="1"
691 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
692 <eStructuralFeatures xsi:type="ecore:EAttribute" name="worked_days" lowerBound="1"
693 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
694 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_CNS" ordered="false"
695 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
696 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_pension"
697 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
698 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
699 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
700 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
701 eType="#//Income" eOpposite="#//Income/details"/>
702 </eClassifiers>
703 <eClassifiers xsi:type="ecore:EClass" name="FromLaw">
704 <eOperations name="CE_INVALIDITY_FLAT_RATE_TYPE_E" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
705 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
706 <details key="body" value="1455"/>
707 </eAnnotations>
708 </eOperations>
709 <eOperations name="CIP_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
710 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
711 <details key="body" value="25"/>
712 </eAnnotations>
713 </eOperations>
714 <eOperations name="CIP_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
715 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
716 <details key="body" value="300"/>
717 </eAnnotations>
718 </eOperations>
719 <eOperations name="FLAT_RATE_CIP_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
720 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
721 <details key="body" value="300"/>
722 </eAnnotations>
723 </eOperations>
724 <eOperations name="FLAT_RATE_PER_UNIT" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
725 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
726 <details key="body" value="99"/>
727 </eAnnotations>
728 </eOperations>
729 <eOperations name="MAXIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
730 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
731 <details key="body" value="30"/>
732 </eAnnotations>
733 </eOperations>
734 <eOperations name="MINIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
735 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
736 <details key="body" value="4"/>
737 </eAnnotations>
738 </eOperations>
739 <eOperations name="FLAT_MAXIMUM_FD" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
740 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
741 <details key="body" value="2574"/>
742 </eAnnotations>
743 </eOperations>
744 <eOperations name="CIS_MINIMUM_INCOME_DAY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
745 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
746 <details key="body" value="3.12"/>
747 </eAnnotations>
748 </eOperations>
749 <eOperations name="CIS_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
750 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
751 <details key="body" value="78"/>
752 </eAnnotations>
753 </eOperations>
754 <eOperations name="CIS_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
755 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
756 <details key="body" value="936"/>
757 </eAnnotations>
758 </eOperations>
759 <eOperations name="FLAT_RATE_CIS_DAILY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
760 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
761 <details key="body" value="1"/>
762 </eAnnotations>
763 </eOperations>
764 <eOperations name="FLAT_RATE_CIS_MONTHLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
765 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
766 <details key="body" value="25"/>
767 </eAnnotations>
768 </eOperations>
769 <eOperations name="FLAT_RATE_CIS_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
770 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
771 <details key="body" value="300"/>
772 </eAnnotations>
773 </eOperations>
774 <eOperations name="get_A_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
775 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
776 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9; endif"/>
777 </eAnnotations>
778 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
779 </eOperations>
780 <eOperations name="get_B_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
781 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
782 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 81.9&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 105.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 132.39000&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 162.405&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 195.6&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 231.975&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 271.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 314.265&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 360.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 409.275&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 461.55&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 517.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 575.64&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 637.455&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 702.45&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 770.625&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 806.30250 &#xA;&#x9;&#x9;else 890.48583&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
783 </eAnnotations>
784 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
785 </eOperations>
786 <eOperations name="get_A_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
787 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
788 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
789 </eAnnotations>
790 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
791 </eOperations>
792 <eOperations name="get_B_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
793 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
794 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 235.5&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 297.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 362.79&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 431.205&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 502.8&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 577.575&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 655.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 736.665&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 820.98&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 908.475&#xA;&#x9;&#x9;else 938.7&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9;&#x9;endif"/>
795 </eAnnotations>
796 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
797 </eOperations>
798 <eOperations name="get_A_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
799 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
800 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
801 </eAnnotations>
802 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
803 </eOperations>
804 <eOperations name="get_B_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
805 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
806 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 157&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 202.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 254.58&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 312.91&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 377.6&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 448.65&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 526.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 609.83&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 699.96&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 796.45&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 899.3&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 1008.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 1124.08&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 1246.01&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 1374.3&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 1508.95&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 1579.455&#xA;&#x9;&#x9;else 1746.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
807 </eAnnotations>
808 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
809 </eOperations>
810 <eOperations name="get_A_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
811 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
812 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
813 </eAnnotations>
814 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
815 </eOperations>
816 <eOperations name="get_B_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
817 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
818 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 80.3&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 103.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 129.99&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 159.605&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 192.4&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 228.375&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 267.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 309.865&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 355.38&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 404.075&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 455.95&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 511.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 569.24&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 630.655&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 695.25&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 763.025&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 798.5025&#xA;&#x9;&#x9;else 882.48583&#x9;&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
819 </eAnnotations>
820 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
821 </eOperations>
822 <eOperations name="get_A_for_pension_class_1A" ordered="false" lowerBound="1"
823 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
824 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
825 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
826 </eAnnotations>
827 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
828 </eOperations>
829 <eOperations name="get_B_for_pension_class_1A" ordered="false" lowerBound="1"
830 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
831 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
832 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 233.100&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 294.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 359.190&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 427.005&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 498&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 572.175&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 649.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 730.065&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 813.780&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 900.675&#xA;&#x9;&#x9;else 930.700&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
833 </eAnnotations>
834 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
835 </eOperations>
836 <eOperations name="get_A_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
837 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
838 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
839 </eAnnotations>
840 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
841 </eOperations>
842 <eOperations name="get_B_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
843 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
844 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 155.4&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 200.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 252.18&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 310.11&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 374.4&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 445.05&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 522.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 605.43&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 695.16&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 791.25&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 893.7&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 1002.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 1117.68&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 1239.21&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 1367.1&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 1501.35&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 1571.655&#xA;&#x9;&#x9;else 1738.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
845 </eAnnotations>
846 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
847 </eOperations>
848 <eOperations name="get_A_for_other_yearly_class_1" ordered="false" lowerBound="1"
849 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
850 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
851 <details key="body" value=" if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
852 </eAnnotations>
853 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
854 </eOperations>
855 <eOperations name="get_B_for_other_yearly_class_1" ordered="false" lowerBound="1"
856 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
857 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
858 <details key="body" value="if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 901.200 &#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 1164.660&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 1466.280&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 1806.060&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 2184&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 2600.100&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 3054.360&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 3546.780 &#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 4077.360&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 4646.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 5253&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 5898.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 6581.28&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 7302.66&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 8062.2&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 8859.9&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 9277.83&#xA;&#x9;&#x9;else 10277.83&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
859 </eAnnotations>
860 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
861 </eOperations>
862 <eOperations name="get_A_for_other_yearly_class_1A" ordered="false" lowerBound="1"
863 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
864 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
865 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
866 </eAnnotations>
867 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
868 </eOperations>
869 <eOperations name="get_B_for_other_yearly_class_1A" ordered="false" lowerBound="1"
870 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
871 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
872 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 2703.600&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 3417.660&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 4169.880&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 4960.260&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 5788.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 6655.500&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 7560.360&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 8503.380&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 9484.560&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 10503.900&#xA;&#x9;&#x9;else 10856.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
873 </eAnnotations>
874 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
875 </eOperations>
876 <eOperations name="get_A_for_other_yearly_class_2" ordered="false" lowerBound="1"
877 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
878 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
879 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
880 </eAnnotations>
881 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
882 </eOperations>
883 <eOperations name="get_B_for_other_yearly_class_2" ordered="false" lowerBound="1"
884 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
885 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
886 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 1802.400 &#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 2329.320&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 2932.560&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 3612.120&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 4368.000&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 5200.200&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 6108.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 7093.560&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 8154.720&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 9292.200&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 10506.000&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 11796.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 13162.560&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 14605.320&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 16124.400&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 17719.800&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 18555.660&#xA;&#x9;&#x9;else 20555.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
887 </eAnnotations>
888 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
889 </eOperations>
890 <eOperations name="calculate_taxes_per_month" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
891 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
892 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_class_2(amount) else get_A_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_class_2(amount) else get_B_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 25085 else 12585 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_class_2(amount) else get_A_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_class_2(amount) else get_B_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 25065 else 12565 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
893 </eAnnotations>
894 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
895 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
896 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
897 </eOperations>
898 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
899 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
900 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
901 </eAnnotations>
902 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
903 </eOperations>
904 <eOperations name="round_ten_cent" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
905 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
906 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;if(p1=amount) then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let p2_temp:Real = (amount-p1) * 10 in&#xA;&#x9;&#x9;&#x9;let p2:Integer = p2_temp.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()+(p2.toString().toReal()/10.0)&#xA;&#x9;&#x9;&#x9;endif"/>
907 </eAnnotations>
908 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
909 </eOperations>
910 <eOperations name="get_A_for_salary_yearly_class_1" ordered="false" lowerBound="1"
911 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
912 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
913 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
914 </eAnnotations>
915 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
916 </eOperations>
917 <eOperations name="get_B_for_salary_yearly_class_1" ordered="false" lowerBound="1"
918 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
919 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
920 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 982.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 1266.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 1588.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 1948.8600&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 2347.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 2783.7000&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 3258.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 3771.1800&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 4322.1600&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 4911.3000&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 5538.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 6204.0600&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 6907.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 7649.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 8429.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 9247.5000&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 9675.6300&#xA;&#x9;&#x9;else 10685.8300&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
921 </eAnnotations>
922 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
923 </eOperations>
924 <eOperations name="get_A_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
925 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
926 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
927 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
928 </eAnnotations>
929 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
930 </eOperations>
931 <eOperations name="get_B_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
932 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
933 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
934 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 2826.0000&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 3570.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 4353.4800&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 5174.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 6033.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 6930.9000&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 7866.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 8839.9800&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 9851.7600&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 10901.7000&#xA;&#x9;&#x9;else 11264.4000&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
935 </eAnnotations>
936 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
937 </eOperations>
938 <eOperations name="get_A_for_salary_yearly_class_2" ordered="false" lowerBound="1"
939 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
940 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
941 <details key="body" value="if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
942 </eAnnotations>
943 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
944 </eOperations>
945 <eOperations name="get_B_for_salary_yearly_class_2" ordered="false" lowerBound="1"
946 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
947 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
948 <details key="body" value=" if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 1884.000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 2431.3200&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 3054.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 3754.9200&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 4531.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 5383.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 6312.7200&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 7317.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 8399.5200&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 9557.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 10791.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 12102.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 13488.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 14952.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 16491.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 18107.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 18953.4600&#xA;&#x9;&#x9;else 20963.6600&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
949 </eAnnotations>
950 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
951 </eOperations>
952 <eOperations name="get_A_for_pension_yearly_class_1" ordered="false" lowerBound="1"
953 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
954 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
955 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
956 </eAnnotations>
957 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
958 </eOperations>
959 <eOperations name="get_B_for_pension_yearly_class_1" ordered="false" lowerBound="1"
960 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
961 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
962 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 963.600&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 1242.660&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 1559.880&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 1915.260&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 2308.800&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 2740.500&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 3210.360&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 3718.380&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 4264.560&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 4848.900&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 5471.400&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 6132.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 6830.880&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 7567.860&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 8343.000&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 9156.300&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 9582.030&#xA;&#x9;&#x9;else 10589.830&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
963 </eAnnotations>
964 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
965 </eOperations>
966 <eOperations name="get_A_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
967 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
968 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
969 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
970 </eAnnotations>
971 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
972 </eOperations>
973 <eOperations name="get_B_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
974 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
975 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
976 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 2797.200&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 3534.660&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 4310.280&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 5124.060&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 5976.000&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 6866.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 7794.360&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 8760.780&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 9765.360&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 10808.100&#xA;&#x9;&#x9;else 11168.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
977 </eAnnotations>
978 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
979 </eOperations>
980 <eOperations name="get_A_for_pension_yearly_class_2" ordered="false" lowerBound="1"
981 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
982 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
983 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
984 </eAnnotations>
985 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
986 </eOperations>
987 <eOperations name="get_B_for_pension_yearly_class_2" ordered="false" lowerBound="1"
988 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
989 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
990 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 1864.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 2407.320&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 3026.160&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 3721.320&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 4492.800&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 5340.600&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 6264.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 7265.160&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 8341.920&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 9495.000&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 10724.400&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 12030.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 13412.160&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 14870.520&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 16405.200&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 18016.200&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 18859.860&#xA;&#x9;&#x9;else 20867.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
991 </eAnnotations>
992 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
993 </eOperations>
994 <eOperations name="calculate_taxes_per_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
995 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
996 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
997 </eAnnotations>
998 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
999 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1000 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1001 </eOperations>
1002 <eOperations name="CNS_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1003 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1004 <details key="body" value="0.0305"/>
1005 </eAnnotations>
1006 </eOperations>
1007 <eOperations name="PENSION_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1008 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1009 <details key="body" value="0.08"/>
1010 </eAnnotations>
1011 </eOperations>
1012 <eOperations name="round_lower_fifty_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1013 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1014 <details key="body" value="&#x9;&#x9;if(amount&lt;50) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if (amount>=50 and amount&lt;100) then&#xA;&#x9;&#x9;&#x9;50.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let temp_amount:Real = round_lower_euros(amount) in&#xA;&#x9;&#x9;&#x9;let ch:String=temp_amount.toString()in&#xA;&#x9;&#x9;&#x9;let temp_amount1:Real = temp_amount / 100.0 in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(temp_amount1.round() = temp_amount1.floor()) then&#xA;&#x9;&#x9;&#x9;temp_amount1.floor() * 100.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;(temp_amount1.round() * 100.0) - 50&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1015 </eAnnotations>
1016 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1017 </eOperations>
1018 <eOperations name="getTaxableIncomePerYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1019 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1020 <details key="body" value="let gross_salary_year:Real= income.income_per_year() in&#xA;&#x9;&#x9;&#x9;let type:Income_Type=income.income_type in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Employment_Income)) then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in&#xA;&#x9;&#x9;&#x9;let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- sum_deductions_year in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 | &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount &#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true)then&#xA;&#x9;&#x9;&#x9; acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9; )&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;in round_lower_fifty_euros(res)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1021 </eAnnotations>
1022 <eParameters name="income" ordered="false" lowerBound="1" eType="#//Income"/>
1023 </eOperations>
1024 <eOperations name="precision" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1025 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1026 <details key="body" value="&#x9;&#x9;let ch:String=amount.toString() in&#xA;&#x9;&#x9;&#x9;if(ch.indexOf('.')=-1)then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let pos_pt:Integer=ch.indexOf('.') in&#xA;&#x9;&#x9;&#x9;if(pos_pt+degit >=ch.size()) then&#xA;&#x9;&#x9;&#x9;amount &#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let ch1:String=ch.substring(1,pos_pt+degit) in&#xA;&#x9;&#x9;&#x9;ch1.toReal()&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1027 </eAnnotations>
1028 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1029 <eParameters name="degit" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1030 </eOperations>
1031 <eOperations name="MAXIMUM_RATE_FOR_CE_CHILDREN" ordered="false" lowerBound="1"
1032 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1033 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1034 <details key="body" value="3480"/>
1035 </eAnnotations>
1036 </eOperations>
1037 <eOperations name="MINIMUM_LEGAL_SALARY" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1038 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1039 <details key="body" value="1921.03"/>
1040 </eAnnotations>
1041 </eOperations>
1042 <eOperations name="MAXIMUM_FLAT_RATE_FOR_ALIMONY" ordered="false" lowerBound="1"
1043 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1044 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1045 <details key="body" value="&#x9;&#x9;&#x9;if(year_divorce>1997)then&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;if(year=2009 or year = 2010) then&#xA;&#x9;&#x9;&#x9;23400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;24000&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;23400&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
1046 </eAnnotations>
1047 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1048 <eParameters name="year_divorce" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1049 </eOperations>
1050 <eOperations name="AEP_FLAT_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1051 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1052 <details key="body" value="4500"/>
1053 </eAnnotations>
1054 </eOperations>
1055 <eOperations name="calculate_taxes_per_year_mixed" ordered="false" lowerBound="1"
1056 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1057 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1058 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1059 </eAnnotations>
1060 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1061 <eParameters name="local_amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1062 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1063 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1064 </eOperations>
1065 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" lowerBound="1"
1066 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1067 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
1068 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_law"/>
1069 </eClassifiers>
1070 <eClassifiers xsi:type="ecore:EClass" name="Fiscal_Address" eSuperTypes="#//Address"/>
1071 <eClassifiers xsi:type="ecore:EClass" name="Habitual_Address" eSuperTypes="#//Address"/>
1072 <eClassifiers xsi:type="ecore:EClass" name="Marriage_Record" eSuperTypes="#//Legal_Union_Record"/>
1073 <eClassifiers xsi:type="ecore:EClass" name="Non_Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1074 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assimilated_to_resident"
1075 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1076 defaultValueLiteral="false"/>
1077 </eClassifiers>
1078 <eClassifiers xsi:type="ecore:EClass" name="Partnership_Record" eSuperTypes="#//Legal_Union_Record"/>
1079 <eClassifiers xsi:type="ecore:EClass" name="Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1080 <eStructuralFeatures xsi:type="ecore:EAttribute" name="test" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1081 derived="true">
1082 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1083 <details key="derivation" value="self.oclAsType(Tax_Payer).from_agent.taxation_year=2014"/>
1084 </eAnnotations>
1085 </eStructuralFeatures>
1086 </eClassifiers>
1087 <eClassifiers xsi:type="ecore:EClass" name="Trade_and_Business_Income" eSuperTypes="#//Income_Type"/>
1088 <eClassifiers xsi:type="ecore:EClass" name="Agriculture_and_Forestry_Income" eSuperTypes="#//Income_Type"/>
1089 <eClassifiers xsi:type="ecore:EClass" name="Pensions_and_Annuities_Income" eSuperTypes="#//Income_Type">
1090 <eStructuralFeatures xsi:type="ecore:EAttribute" name="occasional_payement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1091 defaultValueLiteral="false"/>
1092 </eClassifiers>
1093 <eClassifiers xsi:type="ecore:EClass" name="Capital_and_Investments_Income" eSuperTypes="#//Income_Type"/>
1094 <eClassifiers xsi:type="ecore:EClass" name="Employment_Income" eSuperTypes="#//Income_Type"/>
1095 <eClassifiers xsi:type="ecore:EClass" name="Rentals_and_Leases_Income" eSuperTypes="#//Income_Type">
1096 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_periodic" lowerBound="1"
1097 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="true"/>
1098 </eClassifiers>
1099 <eClassifiers xsi:type="ecore:EClass" name="Foreign_Income" eSuperTypes="#//Income"/>
1100 <eClassifiers xsi:type="ecore:EClass" name="Local_Income" eSuperTypes="#//Income"/>
1101 <eClassifiers xsi:type="ecore:EClass" name="CIM" eSuperTypes="#//Income_Tax_Credit"/>
1102 <eClassifiers xsi:type="ecore:EClass" name="CIP" eSuperTypes="#//Income_Tax_Credit"/>
1103 <eClassifiers xsi:type="ecore:EClass" name="CIS" eSuperTypes="#//Income_Tax_Credit"/>
1104 <eClassifiers xsi:type="ecore:EClass" name="FD" eSuperTypes="#//Professional_Expenses_Deduction">
1105 <eOperations name="compute_distance_unit_between_home_and_workpalce" lowerBound="1"
1106 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1107 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance_declared_in_january"
1108 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1109 <eStructuralFeatures xsi:type="ecore:EAttribute" name="calculated_distance" lowerBound="1"
1110 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" derived="true"/>
1111 </eClassifiers>
1112 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expenses_Deduction"/>
1113 <eClassifiers xsi:type="ecore:EClass" name="FO" eSuperTypes="#//Professional_Expenses_Deduction">
1114 <eOperations name="compute_disability_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1115 <eOperations name="compute_regular_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1116 <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate_type_for_FO" lowerBound="1"
1117 eType="#//Type_of_Rate" derived="true"/>
1118 </eClassifiers>
1119 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Permanent_Expense" eSuperTypes="#//DS">
1120 <eStructuralFeatures xsi:type="ecore:EAttribute" name="permanent_expense_category"
1121 lowerBound="1" eType="#//Category_of_Permanent_Expense"/>
1122 </eClassifiers>
1123 <eClassifiers xsi:type="ecore:EClass" name="DS">
1124 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount"
1125 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1126 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id3" ordered="false" lowerBound="1"
1127 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1128 </eClassifiers>
1129 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Permanent_Expense">
1130 <eLiterals name="MISCELLANEOUS_DEBT" literal="MISCELLANEOUS_DEBT"/>
1131 <eLiterals name="ALIMONY" value="1" literal="ALIMONY"/>
1132 </eClassifiers>
1133 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Interest_Expense" eSuperTypes="#//DS">
1134 <eOperations name="compute_maximum_deductible_amount" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1135 <eParameters name="IN_children_with_allowances" ordered="false" upperBound="-1"
1136 eType="#//Dependent"/>
1137 <eParameters name="IN_legal_union" ordered="false" upperBound="-1" eType="#//Legal_Union_Record"/>
1138 </eOperations>
1139 </eClassifiers>
1140 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Health_and_Pension_Insurance"
1141 eSuperTypes="#//DS">
1142 <eStructuralFeatures xsi:type="ecore:EAttribute" name="insurance_category" lowerBound="1"
1143 eType="#//Category_of_Health_and_Pension_Insurances"/>
1144 </eClassifiers>
1145 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Health_and_Pension_Insurances">
1146 <eLiterals name="MANDATORY_HEALTH_AND_PENSION_INSURANCE" literal="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
1147 <eLiterals name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" value="1" literal="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
1148 <eLiterals name="CONTINUED_HEALTH_AND_PENSION_INSURANCE" value="2" literal="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
1149 </eClassifiers>
1150 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Private_Insurance_and_Plan" eSuperTypes="#//DS">
1151 <eOperations name="compute_increase_for_life_insurance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1152 <eOperations name="compute_maximum_deductible_amount_for_private_insruance" lowerBound="1"
1153 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1154 <eOperations name="compute_maximum_deductible_amount_for_old_age_pension_plan"
1155 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="private_insurance_and_plan_category"
1157 lowerBound="1" eType="#//Category_of_Private_Insurance_and_Plan"/>
1158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increase_for_life_insurance"
1159 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1160 derived="true"/>
1161 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_private_insurance"
1162 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1163 derived="true"/>
1164 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_old_age_pension_plan"
1165 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1166 derived="true"/>
1167 </eClassifiers>
1168 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Private_Insurance_and_Plan">
1169 <eLiterals name="PRIVATE_INSURANCE" literal="PRIVATE_INSURANCE"/>
1170 <eLiterals name="PRIVATE_LIFE_INSURANCE" value="1" literal="PRIVATE_LIFE_INSURANCE"/>
1171 <eLiterals name="COMPANY_MEMBERS_PRIVATE_INSURANCE" value="2" literal="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
1172 <eLiterals name="HOUSING_SAVING_PLAN" value="3" literal="HOUSING_SAVING_PLAN"/>
1173 <eLiterals name="OLD_AGE_PENSION_PLAN" value="4" literal="OLD_AGE_PENSION_PLAN"/>
1174 </eClassifiers>
1175 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Loss_Carryforward" eSuperTypes="#//DS"/>
1176 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Donation" eSuperTypes="#//DS"/>
1177 <eClassifiers xsi:type="ecore:EClass" name="Permanent_Expense" eSuperTypes="#//Special_Expense_DS">
1178 <eOperations name="is_expense_eligible_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
1179 <eParameters name="IN_agent_response" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1180 </eOperations>
1181 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1182 eType="#//Category_of_Permanent_Expense"/>
1183 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_for_deduction"
1184 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1185 defaultValueLiteral="false" derived="true"/>
1186 </eClassifiers>
1187 <eClassifiers xsi:type="ecore:EClass" name="Special_Expense_DS" eSuperTypes="#//Expense"/>
1188 <eClassifiers xsi:type="ecore:EClass" name="Interest_Expense" eSuperTypes="#//Special_Expense_DS"/>
1189 <eClassifiers xsi:type="ecore:EClass" name="Private_Insurance_and_Plan" eSuperTypes="#//Special_Expense_DS">
1190 <eOperations name="is_private_insurance_and_plan_eligible_for_deduction" lowerBound="1"
1191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1192 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1193 eType="#//Category_of_Private_Insurance_and_Plan"/>
1194 <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration_of_contract" lowerBound="1"
1195 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1196 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_private_insurance_and_plan_eligible_for_deduction"
1197 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1198 defaultValueLiteral="false" derived="true"/>
1199 </eClassifiers>
1200 <eClassifiers xsi:type="ecore:EClass" name="Health_and_Pension_Insurance" eSuperTypes="#//Special_Expense_DS">
1201 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1202 eType="#//Category_of_Health_and_Pension_Insurances"/>
1203 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_related_to_additional_salary"
1204 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1205 defaultValueLiteral="false"/>
1206 </eClassifiers>
1207 <eClassifiers xsi:type="ecore:EClass" name="Donation" eSuperTypes="#//Special_Expense_DS">
1208 <eOperations name="get_beneficiary_eligibility_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1209 <eStructuralFeatures xsi:type="ecore:EAttribute" name="beneficiary1" lowerBound="1"
1210 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1211 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_beneficiary_eligible"
1212 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1213 defaultValueLiteral="false" derived="true"/>
1214 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_donation_reported" lowerBound="1"
1215 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1216 </eClassifiers>
1217 <eClassifiers xsi:type="ecore:EClass" name="Loss_Carryforward" eSuperTypes="#//Special_Expense_DS">
1218 <eOperations name="is_accountability_regular" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1219 <eOperations name="is_compensated_by_other_means" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1220 <eOperations name="has_been_tax_payer_partner_in_business" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1221 <eOperations name="has_tax_payer_inherited_business_ownership" lowerBound="1"
1222 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1223 <eStructuralFeatures xsi:type="ecore:EAttribute" name="regular_accountability"
1224 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1225 derived="true"/>
1226 <eStructuralFeatures xsi:type="ecore:EAttribute" name="compensation_by_other_means"
1227 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1228 derived="true"/>
1229 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_inherited_business_ownership"
1230 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1231 defaultValueLiteral="false" derived="true"/>
1232 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_been_partner_in_business"
1233 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1234 defaultValueLiteral="true" derived="true"/>
1235 </eClassifiers>
1236 <eClassifiers xsi:type="ecore:EClass" name="Spousal_Expense_AC" eSuperTypes="#//Expense"/>
1237 <eClassifiers xsi:type="ecore:EClass" name="Extraordinary_Expense_CE" eSuperTypes="#//Expense">
1238 <eOperations name="is_above_thresholded_deduction_percentage_for_CE" lowerBound="1"
1239 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1240 <eOperations name="compute_thresholded_deduction_percentage_for_CE" lowerBound="1"
1241 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1242 <eParameters name="IN_thresholded_deduction_percentage" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1243 </eOperations>
1244 <eStructuralFeatures xsi:type="ecore:EAttribute" name="thresholded_deduction_percentage"
1245 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1246 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ce_type" lowerBound="1"
1247 eType="#//CE_Type"/>
1248 </eClassifiers>
1249 <eClassifiers xsi:type="ecore:EClass" name="Travel_Expense_FD" eSuperTypes="#//Professional_Expense"/>
1250 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expense" eSuperTypes="#//Expense"/>
1251 <eClassifiers xsi:type="ecore:EClass" name="Miscellaneous_Expense_FO" eSuperTypes="#//Professional_Expense"/>
1252 <eClassifiers xsi:type="ecore:EEnum" name="Legal_Union_Types">
1253 <eLiterals name="MARIAGE"/>
1254 <eLiterals name="PARTNERSHIP" value="1"/>
1255 <eLiterals name="OTHER" value="2"/>
1256 </eClassifiers>
1257</ecore:EPackage>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/build.properties b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/build.properties
new file mode 100644
index 00000000..aed85a48
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/build.properties
@@ -0,0 +1,5 @@
1bin.includes = META-INF/,\
2 .
3source.. = src/,\
4 src-gen/
5output.. = bin/
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.aird b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.aird
new file mode 100644
index 00000000..6e583e0f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.aird
@@ -0,0 +1,5853 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_XxmRwGDAEeq8BovXV4ESzw" selectedViews="_YbwCAGDAEeq8BovXV4ESzw _YcJDkGDAEeq8BovXV4ESzw _YcK4wGDAEeq8BovXV4ESzw _YdwNIGDAEeq8BovXV4ESzw" version="14.3.0.201909031200">
4 <semanticResources>Taxation.ecore</semanticResources>
5 <semanticResources>Taxation.genmodel</semanticResources>
6 <ownedViews xmi:type="viewpoint:DView" uid="_YbwCAGDAEeq8BovXV4ESzw">
7 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
8 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_ZFSuQGDAEeq8BovXV4ESzw" name="Taxation class diagram" repPath="#_ZDuoAGDAEeq8BovXV4ESzw" changeId="02ad4336-9a13-4a8a-8fbe-8fb518194552">
9 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10 <target xmi:type="ecore:EPackage" href="Taxation.ecore#/"/>
11 </ownedRepresentationDescriptors>
12 </ownedViews>
13 <ownedViews xmi:type="viewpoint:DView" uid="_YcJDkGDAEeq8BovXV4ESzw">
14 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
15 </ownedViews>
16 <ownedViews xmi:type="viewpoint:DView" uid="_YcK4wGDAEeq8BovXV4ESzw">
17 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
18 </ownedViews>
19 <ownedViews xmi:type="viewpoint:DView" uid="_YdwNIGDAEeq8BovXV4ESzw">
20 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
21 </ownedViews>
22 </viewpoint:DAnalysis>
23 <diagram:DSemanticDiagram uid="_ZDuoAGDAEeq8BovXV4ESzw">
24 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ZFLZgGDAEeq8BovXV4ESzw" source="DANNOTATION_CUSTOMIZATION_KEY">
25 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_ZFMAkGDAEeq8BovXV4ESzw">
26 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_aLikoGDAEeq8BovXV4ESzw" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
27 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
28 <labelFormat>bold</labelFormat>
29 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
30 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
31 </computedStyleDescriptions>
32 <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_aL9bYGDAEeq8BovXV4ESzw" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
33 <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
34 <labelFormat>bold</labelFormat>
35 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
36 <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
37 </computedStyleDescriptions>
38 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aYT1UGDAEeq8BovXV4ESzw" routingStyle="manhattan">
39 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
40 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_aYT1UWDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:render">
41 <labelFormat>bold</labelFormat>
42 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
43 </centerLabelStyleDescription>
44 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aYT1UmDAEeq8BovXV4ESzw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
45 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
46 </endLabelStyleDescription>
47 </computedStyleDescriptions>
48 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aYe0cGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan">
49 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
50 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_aYe0cWDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:render">
51 <labelFormat>bold</labelFormat>
52 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
53 </centerLabelStyleDescription>
54 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aYe0cmDAEeq8BovXV4ESzw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
55 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
56 </endLabelStyleDescription>
57 </computedStyleDescriptions>
58 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aZPpcGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan">
59 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
60 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_aZPpcWDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:renderEOpposite">
61 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
62 </beginLabelStyleDescription>
63 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aZPpcmDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:render">
64 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
65 </endLabelStyleDescription>
66 </computedStyleDescriptions>
67 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan">
68 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
69 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_aZReomDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:renderEOpposite">
70 <labelFormat>bold</labelFormat>
71 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
72 </beginLabelStyleDescription>
73 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aZReo2DAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:render">
74 <labelFormat>bold</labelFormat>
75 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
76 </endLabelStyleDescription>
77 </computedStyleDescriptions>
78 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aZUh8GDAEeq8BovXV4ESzw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
79 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
80 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_aZUh8WDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:renderEOpposite">
81 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
82 </beginLabelStyleDescription>
83 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aZUh8mDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:render">
84 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
85 </endLabelStyleDescription>
86 </computedStyleDescriptions>
87 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_aZaokGDAEeq8BovXV4ESzw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
88 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
89 <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_aZaokWDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:renderEOpposite">
90 <labelFormat>bold</labelFormat>
91 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
92 </beginLabelStyleDescription>
93 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_aZaokmDAEeq8BovXV4ESzw" showIcon="false" labelExpression="service:render">
94 <labelFormat>bold</labelFormat>
95 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
96 </endLabelStyleDescription>
97 </computedStyleDescriptions>
98 </data>
99 </ownedAnnotationEntries>
100 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ZGdy8GDAEeq8BovXV4ESzw" source="GMF_DIAGRAMS">
101 <data xmi:type="notation:Diagram" xmi:id="_ZGdy8WDAEeq8BovXV4ESzw" type="Sirius" element="_ZDuoAGDAEeq8BovXV4ESzw" measurementUnit="Pixel">
102 <children xmi:type="notation:Node" xmi:id="_aZ6-4GDAEeq8BovXV4ESzw" type="2003" element="_aAS98GDAEeq8BovXV4ESzw">
103 <children xmi:type="notation:Node" xmi:id="_aZ8NAGDAEeq8BovXV4ESzw" type="5007"/>
104 <children xmi:type="notation:Node" xmi:id="_aaBskGDAEeq8BovXV4ESzw" type="7004">
105 <children xmi:type="notation:Node" xmi:id="_abSQ0GDAEeq8BovXV4ESzw" type="3010" element="_aXfV8mDAEeq8BovXV4ESzw">
106 <styles xmi:type="notation:FontStyle" xmi:id="_abSQ0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
107 <layoutConstraint xmi:type="notation:Location" xmi:id="_abSQ0mDAEeq8BovXV4ESzw"/>
108 </children>
109 <children xmi:type="notation:Node" xmi:id="_abTe8GDAEeq8BovXV4ESzw" type="3010" element="_aXf9AWDAEeq8BovXV4ESzw">
110 <styles xmi:type="notation:FontStyle" xmi:id="_abTe8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
111 <layoutConstraint xmi:type="notation:Location" xmi:id="_abTe8mDAEeq8BovXV4ESzw"/>
112 </children>
113 <children xmi:type="notation:Node" xmi:id="_abUGAGDAEeq8BovXV4ESzw" type="3010" element="_aXf9A2DAEeq8BovXV4ESzw">
114 <styles xmi:type="notation:FontStyle" xmi:id="_abUGAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
115 <layoutConstraint xmi:type="notation:Location" xmi:id="_abUGAmDAEeq8BovXV4ESzw"/>
116 </children>
117 <children xmi:type="notation:Node" xmi:id="_abUGA2DAEeq8BovXV4ESzw" type="3010" element="_aXgkEWDAEeq8BovXV4ESzw">
118 <styles xmi:type="notation:FontStyle" xmi:id="_abUGBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
119 <layoutConstraint xmi:type="notation:Location" xmi:id="_abUGBWDAEeq8BovXV4ESzw"/>
120 </children>
121 <children xmi:type="notation:Node" xmi:id="_abUtEGDAEeq8BovXV4ESzw" type="3010" element="_aXgkE2DAEeq8BovXV4ESzw">
122 <styles xmi:type="notation:FontStyle" xmi:id="_abUtEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
123 <layoutConstraint xmi:type="notation:Location" xmi:id="_abUtEmDAEeq8BovXV4ESzw"/>
124 </children>
125 <children xmi:type="notation:Node" xmi:id="_abVUIGDAEeq8BovXV4ESzw" type="3010" element="_aXhLIWDAEeq8BovXV4ESzw">
126 <styles xmi:type="notation:FontStyle" xmi:id="_abVUIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
127 <layoutConstraint xmi:type="notation:Location" xmi:id="_abVUImDAEeq8BovXV4ESzw"/>
128 </children>
129 <styles xmi:type="notation:SortingStyle" xmi:id="_aaBskWDAEeq8BovXV4ESzw"/>
130 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaBskmDAEeq8BovXV4ESzw"/>
131 </children>
132 <styles xmi:type="notation:ShapeStyle" xmi:id="_aZ6-4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
133 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aZ6-4mDAEeq8BovXV4ESzw"/>
134 </children>
135 <children xmi:type="notation:Node" xmi:id="_aaCToGDAEeq8BovXV4ESzw" type="2003" element="_aAYdgGDAEeq8BovXV4ESzw">
136 <children xmi:type="notation:Node" xmi:id="_aaC6sGDAEeq8BovXV4ESzw" type="5007"/>
137 <children xmi:type="notation:Node" xmi:id="_aaC6sWDAEeq8BovXV4ESzw" type="7004">
138 <children xmi:type="notation:Node" xmi:id="_abV7MGDAEeq8BovXV4ESzw" type="3010" element="_aLfhUGDAEeq8BovXV4ESzw">
139 <styles xmi:type="notation:FontStyle" xmi:id="_abV7MWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
140 <layoutConstraint xmi:type="notation:Location" xmi:id="_abV7MmDAEeq8BovXV4ESzw"/>
141 </children>
142 <children xmi:type="notation:Node" xmi:id="_abWiQGDAEeq8BovXV4ESzw" type="3010" element="_aLln8GDAEeq8BovXV4ESzw">
143 <styles xmi:type="notation:FontStyle" xmi:id="_abWiQWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
144 <layoutConstraint xmi:type="notation:Location" xmi:id="_abWiQmDAEeq8BovXV4ESzw"/>
145 </children>
146 <children xmi:type="notation:Node" xmi:id="_abWiQ2DAEeq8BovXV4ESzw" type="3010" element="_aLm2EGDAEeq8BovXV4ESzw">
147 <styles xmi:type="notation:FontStyle" xmi:id="_abWiRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
148 <layoutConstraint xmi:type="notation:Location" xmi:id="_abWiRWDAEeq8BovXV4ESzw"/>
149 </children>
150 <children xmi:type="notation:Node" xmi:id="_abXJUGDAEeq8BovXV4ESzw" type="3010" element="_aLndIWDAEeq8BovXV4ESzw">
151 <styles xmi:type="notation:FontStyle" xmi:id="_abXJUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
152 <layoutConstraint xmi:type="notation:Location" xmi:id="_abXJUmDAEeq8BovXV4ESzw"/>
153 </children>
154 <children xmi:type="notation:Node" xmi:id="_abXJU2DAEeq8BovXV4ESzw" type="3010" element="_aLoEMWDAEeq8BovXV4ESzw">
155 <styles xmi:type="notation:FontStyle" xmi:id="_abXJVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
156 <layoutConstraint xmi:type="notation:Location" xmi:id="_abXJVWDAEeq8BovXV4ESzw"/>
157 </children>
158 <children xmi:type="notation:Node" xmi:id="_abXwYGDAEeq8BovXV4ESzw" type="3010" element="_aLpSUWDAEeq8BovXV4ESzw">
159 <styles xmi:type="notation:FontStyle" xmi:id="_abXwYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
160 <layoutConstraint xmi:type="notation:Location" xmi:id="_abXwYmDAEeq8BovXV4ESzw"/>
161 </children>
162 <children xmi:type="notation:Node" xmi:id="_abYXcGDAEeq8BovXV4ESzw" type="3010" element="_aLp5YWDAEeq8BovXV4ESzw">
163 <styles xmi:type="notation:FontStyle" xmi:id="_abYXcWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
164 <layoutConstraint xmi:type="notation:Location" xmi:id="_abYXcmDAEeq8BovXV4ESzw"/>
165 </children>
166 <children xmi:type="notation:Node" xmi:id="_abYXc2DAEeq8BovXV4ESzw" type="3010" element="_aLqgcWDAEeq8BovXV4ESzw">
167 <styles xmi:type="notation:FontStyle" xmi:id="_abYXdGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
168 <layoutConstraint xmi:type="notation:Location" xmi:id="_abYXdWDAEeq8BovXV4ESzw"/>
169 </children>
170 <children xmi:type="notation:Node" xmi:id="_abY-gGDAEeq8BovXV4ESzw" type="3010" element="_aLrHgWDAEeq8BovXV4ESzw">
171 <styles xmi:type="notation:FontStyle" xmi:id="_abY-gWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
172 <layoutConstraint xmi:type="notation:Location" xmi:id="_abY-gmDAEeq8BovXV4ESzw"/>
173 </children>
174 <children xmi:type="notation:Node" xmi:id="_abZlkGDAEeq8BovXV4ESzw" type="3010" element="_aLrukWDAEeq8BovXV4ESzw">
175 <styles xmi:type="notation:FontStyle" xmi:id="_abZlkWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
176 <layoutConstraint xmi:type="notation:Location" xmi:id="_abZlkmDAEeq8BovXV4ESzw"/>
177 </children>
178 <children xmi:type="notation:Node" xmi:id="_abaMoGDAEeq8BovXV4ESzw" type="3010" element="_aLsVoWDAEeq8BovXV4ESzw">
179 <styles xmi:type="notation:FontStyle" xmi:id="_abaMoWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
180 <layoutConstraint xmi:type="notation:Location" xmi:id="_abaMomDAEeq8BovXV4ESzw"/>
181 </children>
182 <children xmi:type="notation:Node" xmi:id="_abazsGDAEeq8BovXV4ESzw" type="3010" element="_aLs8sWDAEeq8BovXV4ESzw">
183 <styles xmi:type="notation:FontStyle" xmi:id="_abazsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
184 <layoutConstraint xmi:type="notation:Location" xmi:id="_abazsmDAEeq8BovXV4ESzw"/>
185 </children>
186 <children xmi:type="notation:Node" xmi:id="_abazs2DAEeq8BovXV4ESzw" type="3010" element="_aLuK0WDAEeq8BovXV4ESzw">
187 <styles xmi:type="notation:FontStyle" xmi:id="_abaztGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
188 <layoutConstraint xmi:type="notation:Location" xmi:id="_abaztWDAEeq8BovXV4ESzw"/>
189 </children>
190 <children xmi:type="notation:Node" xmi:id="_abbawGDAEeq8BovXV4ESzw" type="3010" element="_aLux4GDAEeq8BovXV4ESzw">
191 <styles xmi:type="notation:FontStyle" xmi:id="_abbawWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
192 <layoutConstraint xmi:type="notation:Location" xmi:id="_abbawmDAEeq8BovXV4ESzw"/>
193 </children>
194 <children xmi:type="notation:Node" xmi:id="_abcB0GDAEeq8BovXV4ESzw" type="3010" element="_aLvY8GDAEeq8BovXV4ESzw">
195 <styles xmi:type="notation:FontStyle" xmi:id="_abcB0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
196 <layoutConstraint xmi:type="notation:Location" xmi:id="_abcB0mDAEeq8BovXV4ESzw"/>
197 </children>
198 <children xmi:type="notation:Node" xmi:id="_abcB02DAEeq8BovXV4ESzw" type="3010" element="_aLwAAGDAEeq8BovXV4ESzw">
199 <styles xmi:type="notation:FontStyle" xmi:id="_abcB1GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
200 <layoutConstraint xmi:type="notation:Location" xmi:id="_abcB1WDAEeq8BovXV4ESzw"/>
201 </children>
202 <children xmi:type="notation:Node" xmi:id="_abco4GDAEeq8BovXV4ESzw" type="3010" element="_aLx1MGDAEeq8BovXV4ESzw">
203 <styles xmi:type="notation:FontStyle" xmi:id="_abco4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
204 <layoutConstraint xmi:type="notation:Location" xmi:id="_abco4mDAEeq8BovXV4ESzw"/>
205 </children>
206 <children xmi:type="notation:Node" xmi:id="_abco42DAEeq8BovXV4ESzw" type="3010" element="_aLycQGDAEeq8BovXV4ESzw">
207 <styles xmi:type="notation:FontStyle" xmi:id="_abco5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
208 <layoutConstraint xmi:type="notation:Location" xmi:id="_abco5WDAEeq8BovXV4ESzw"/>
209 </children>
210 <children xmi:type="notation:Node" xmi:id="_abdP8GDAEeq8BovXV4ESzw" type="3010" element="_aLzDUGDAEeq8BovXV4ESzw">
211 <styles xmi:type="notation:FontStyle" xmi:id="_abdP8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
212 <layoutConstraint xmi:type="notation:Location" xmi:id="_abdP8mDAEeq8BovXV4ESzw"/>
213 </children>
214 <children xmi:type="notation:Node" xmi:id="_abdP82DAEeq8BovXV4ESzw" type="3010" element="_aLzqYWDAEeq8BovXV4ESzw">
215 <styles xmi:type="notation:FontStyle" xmi:id="_abd3AGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
216 <layoutConstraint xmi:type="notation:Location" xmi:id="_abd3AWDAEeq8BovXV4ESzw"/>
217 </children>
218 <children xmi:type="notation:Node" xmi:id="_abd3AmDAEeq8BovXV4ESzw" type="3010" element="_aL0RcWDAEeq8BovXV4ESzw">
219 <styles xmi:type="notation:FontStyle" xmi:id="_abd3A2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
220 <layoutConstraint xmi:type="notation:Location" xmi:id="_abd3BGDAEeq8BovXV4ESzw"/>
221 </children>
222 <children xmi:type="notation:Node" xmi:id="_abeeEGDAEeq8BovXV4ESzw" type="3010" element="_aL1fkGDAEeq8BovXV4ESzw">
223 <styles xmi:type="notation:FontStyle" xmi:id="_abeeEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
224 <layoutConstraint xmi:type="notation:Location" xmi:id="_abeeEmDAEeq8BovXV4ESzw"/>
225 </children>
226 <children xmi:type="notation:Node" xmi:id="_abeeE2DAEeq8BovXV4ESzw" type="3010" element="_aL2GoWDAEeq8BovXV4ESzw">
227 <styles xmi:type="notation:FontStyle" xmi:id="_abeeFGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
228 <layoutConstraint xmi:type="notation:Location" xmi:id="_abeeFWDAEeq8BovXV4ESzw"/>
229 </children>
230 <children xmi:type="notation:Node" xmi:id="_abfFIGDAEeq8BovXV4ESzw" type="3010" element="_aL2tsWDAEeq8BovXV4ESzw">
231 <styles xmi:type="notation:FontStyle" xmi:id="_abfFIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
232 <layoutConstraint xmi:type="notation:Location" xmi:id="_abfFImDAEeq8BovXV4ESzw"/>
233 </children>
234 <children xmi:type="notation:Node" xmi:id="_abfFI2DAEeq8BovXV4ESzw" type="3010" element="_aL3UwWDAEeq8BovXV4ESzw">
235 <styles xmi:type="notation:FontStyle" xmi:id="_abfFJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
236 <layoutConstraint xmi:type="notation:Location" xmi:id="_abfFJWDAEeq8BovXV4ESzw"/>
237 </children>
238 <styles xmi:type="notation:SortingStyle" xmi:id="_aaC6smDAEeq8BovXV4ESzw"/>
239 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaC6s2DAEeq8BovXV4ESzw"/>
240 </children>
241 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaCToWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" italic="true"/>
242 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaCTomDAEeq8BovXV4ESzw" x="178"/>
243 </children>
244 <children xmi:type="notation:Node" xmi:id="_aaDhwGDAEeq8BovXV4ESzw" type="2003" element="_aAdWAGDAEeq8BovXV4ESzw">
245 <children xmi:type="notation:Node" xmi:id="_aaEI0GDAEeq8BovXV4ESzw" type="5007"/>
246 <children xmi:type="notation:Node" xmi:id="_aaEI0WDAEeq8BovXV4ESzw" type="7004">
247 <children xmi:type="notation:Node" xmi:id="_abfsMGDAEeq8BovXV4ESzw" type="3010" element="_aXhyMGDAEeq8BovXV4ESzw">
248 <styles xmi:type="notation:FontStyle" xmi:id="_abfsMWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
249 <layoutConstraint xmi:type="notation:Location" xmi:id="_abfsMmDAEeq8BovXV4ESzw"/>
250 </children>
251 <children xmi:type="notation:Node" xmi:id="_abfsM2DAEeq8BovXV4ESzw" type="3010" element="_aXhyMmDAEeq8BovXV4ESzw">
252 <styles xmi:type="notation:FontStyle" xmi:id="_abfsNGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
253 <layoutConstraint xmi:type="notation:Location" xmi:id="_abfsNWDAEeq8BovXV4ESzw"/>
254 </children>
255 <children xmi:type="notation:Node" xmi:id="_abgTQGDAEeq8BovXV4ESzw" type="3010" element="_aXhyNGDAEeq8BovXV4ESzw">
256 <styles xmi:type="notation:FontStyle" xmi:id="_abgTQWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
257 <layoutConstraint xmi:type="notation:Location" xmi:id="_abgTQmDAEeq8BovXV4ESzw"/>
258 </children>
259 <children xmi:type="notation:Node" xmi:id="_abgTQ2DAEeq8BovXV4ESzw" type="3010" element="_aXiZQWDAEeq8BovXV4ESzw">
260 <styles xmi:type="notation:FontStyle" xmi:id="_abgTRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
261 <layoutConstraint xmi:type="notation:Location" xmi:id="_abgTRWDAEeq8BovXV4ESzw"/>
262 </children>
263 <children xmi:type="notation:Node" xmi:id="_abgTRmDAEeq8BovXV4ESzw" type="3010" element="_aXiZQ2DAEeq8BovXV4ESzw">
264 <styles xmi:type="notation:FontStyle" xmi:id="_abgTR2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
265 <layoutConstraint xmi:type="notation:Location" xmi:id="_abgTSGDAEeq8BovXV4ESzw"/>
266 </children>
267 <children xmi:type="notation:Node" xmi:id="_abg6UGDAEeq8BovXV4ESzw" type="3010" element="_aXjAUWDAEeq8BovXV4ESzw">
268 <styles xmi:type="notation:FontStyle" xmi:id="_abg6UWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
269 <layoutConstraint xmi:type="notation:Location" xmi:id="_abg6UmDAEeq8BovXV4ESzw"/>
270 </children>
271 <children xmi:type="notation:Node" xmi:id="_abg6U2DAEeq8BovXV4ESzw" type="3010" element="_aXkOcWDAEeq8BovXV4ESzw">
272 <styles xmi:type="notation:FontStyle" xmi:id="_abg6VGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
273 <layoutConstraint xmi:type="notation:Location" xmi:id="_abg6VWDAEeq8BovXV4ESzw"/>
274 </children>
275 <children xmi:type="notation:Node" xmi:id="_abhhYGDAEeq8BovXV4ESzw" type="3010" element="_aXk1gWDAEeq8BovXV4ESzw">
276 <styles xmi:type="notation:FontStyle" xmi:id="_abhhYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
277 <layoutConstraint xmi:type="notation:Location" xmi:id="_abhhYmDAEeq8BovXV4ESzw"/>
278 </children>
279 <styles xmi:type="notation:SortingStyle" xmi:id="_aaEI0mDAEeq8BovXV4ESzw"/>
280 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaEI02DAEeq8BovXV4ESzw"/>
281 </children>
282 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaDhwWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
283 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaDhwmDAEeq8BovXV4ESzw" x="828"/>
284 </children>
285 <children xmi:type="notation:Node" xmi:id="_aaEI1GDAEeq8BovXV4ESzw" type="2003" element="_aAekIGDAEeq8BovXV4ESzw">
286 <children xmi:type="notation:Node" xmi:id="_aaEv4GDAEeq8BovXV4ESzw" type="5007"/>
287 <children xmi:type="notation:Node" xmi:id="_aaEv4WDAEeq8BovXV4ESzw" type="7004">
288 <children xmi:type="notation:Node" xmi:id="_abhhY2DAEeq8BovXV4ESzw" type="3010" element="_aXmDoGDAEeq8BovXV4ESzw">
289 <styles xmi:type="notation:FontStyle" xmi:id="_abhhZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
290 <layoutConstraint xmi:type="notation:Location" xmi:id="_abhhZWDAEeq8BovXV4ESzw"/>
291 </children>
292 <children xmi:type="notation:Node" xmi:id="_abhhZmDAEeq8BovXV4ESzw" type="3010" element="_aXmqsWDAEeq8BovXV4ESzw">
293 <styles xmi:type="notation:FontStyle" xmi:id="_abhhZ2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
294 <layoutConstraint xmi:type="notation:Location" xmi:id="_abhhaGDAEeq8BovXV4ESzw"/>
295 </children>
296 <children xmi:type="notation:Node" xmi:id="_abiIcGDAEeq8BovXV4ESzw" type="3010" element="_aXnRwGDAEeq8BovXV4ESzw">
297 <styles xmi:type="notation:FontStyle" xmi:id="_abiIcWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
298 <layoutConstraint xmi:type="notation:Location" xmi:id="_abiIcmDAEeq8BovXV4ESzw"/>
299 </children>
300 <children xmi:type="notation:Node" xmi:id="_abiIc2DAEeq8BovXV4ESzw" type="3010" element="_aXnRwmDAEeq8BovXV4ESzw">
301 <styles xmi:type="notation:FontStyle" xmi:id="_abiIdGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
302 <layoutConstraint xmi:type="notation:Location" xmi:id="_abiIdWDAEeq8BovXV4ESzw"/>
303 </children>
304 <children xmi:type="notation:Node" xmi:id="_abivgGDAEeq8BovXV4ESzw" type="3010" element="_aXn40WDAEeq8BovXV4ESzw">
305 <styles xmi:type="notation:FontStyle" xmi:id="_abivgWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
306 <layoutConstraint xmi:type="notation:Location" xmi:id="_abivgmDAEeq8BovXV4ESzw"/>
307 </children>
308 <children xmi:type="notation:Node" xmi:id="_abivg2DAEeq8BovXV4ESzw" type="3010" element="_aXof4GDAEeq8BovXV4ESzw">
309 <styles xmi:type="notation:FontStyle" xmi:id="_abivhGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
310 <layoutConstraint xmi:type="notation:Location" xmi:id="_abivhWDAEeq8BovXV4ESzw"/>
311 </children>
312 <styles xmi:type="notation:SortingStyle" xmi:id="_aaEv4mDAEeq8BovXV4ESzw"/>
313 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaEv42DAEeq8BovXV4ESzw"/>
314 </children>
315 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaEI1WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
316 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaEI1mDAEeq8BovXV4ESzw" x="1008"/>
317 </children>
318 <children xmi:type="notation:Node" xmi:id="_aaFW8GDAEeq8BovXV4ESzw" type="2003" element="_aAfLMWDAEeq8BovXV4ESzw">
319 <children xmi:type="notation:Node" xmi:id="_aaF-AGDAEeq8BovXV4ESzw" type="5007"/>
320 <children xmi:type="notation:Node" xmi:id="_aaF-AWDAEeq8BovXV4ESzw" type="7004">
321 <children xmi:type="notation:Node" xmi:id="_abjWkGDAEeq8BovXV4ESzw" type="3010" element="_aXof4mDAEeq8BovXV4ESzw">
322 <styles xmi:type="notation:FontStyle" xmi:id="_abjWkWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
323 <layoutConstraint xmi:type="notation:Location" xmi:id="_abjWkmDAEeq8BovXV4ESzw"/>
324 </children>
325 <children xmi:type="notation:Node" xmi:id="_abjWk2DAEeq8BovXV4ESzw" type="3010" element="_aXpG8WDAEeq8BovXV4ESzw">
326 <styles xmi:type="notation:FontStyle" xmi:id="_abjWlGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
327 <layoutConstraint xmi:type="notation:Location" xmi:id="_abjWlWDAEeq8BovXV4ESzw"/>
328 </children>
329 <styles xmi:type="notation:SortingStyle" xmi:id="_aaF-AmDAEeq8BovXV4ESzw"/>
330 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaF-A2DAEeq8BovXV4ESzw"/>
331 </children>
332 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaFW8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
333 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaFW8mDAEeq8BovXV4ESzw" x="1188"/>
334 </children>
335 <children xmi:type="notation:Node" xmi:id="_aaGlEGDAEeq8BovXV4ESzw" type="2003" element="_aAhAYGDAEeq8BovXV4ESzw">
336 <children xmi:type="notation:Node" xmi:id="_aaGlE2DAEeq8BovXV4ESzw" type="5007"/>
337 <children xmi:type="notation:Node" xmi:id="_aaHMIGDAEeq8BovXV4ESzw" type="7004">
338 <children xmi:type="notation:Node" xmi:id="_abjWlmDAEeq8BovXV4ESzw" type="3010" element="_aXpuAGDAEeq8BovXV4ESzw">
339 <styles xmi:type="notation:FontStyle" xmi:id="_abjWl2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
340 <layoutConstraint xmi:type="notation:Location" xmi:id="_abjWmGDAEeq8BovXV4ESzw"/>
341 </children>
342 <children xmi:type="notation:Node" xmi:id="_abj9oGDAEeq8BovXV4ESzw" type="3010" element="_aXqVEGDAEeq8BovXV4ESzw">
343 <styles xmi:type="notation:FontStyle" xmi:id="_abj9oWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
344 <layoutConstraint xmi:type="notation:Location" xmi:id="_abj9omDAEeq8BovXV4ESzw"/>
345 </children>
346 <children xmi:type="notation:Node" xmi:id="_abj9o2DAEeq8BovXV4ESzw" type="3010" element="_aXqVEmDAEeq8BovXV4ESzw">
347 <styles xmi:type="notation:FontStyle" xmi:id="_abj9pGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
348 <layoutConstraint xmi:type="notation:Location" xmi:id="_abj9pWDAEeq8BovXV4ESzw"/>
349 </children>
350 <children xmi:type="notation:Node" xmi:id="_abkksGDAEeq8BovXV4ESzw" type="3010" element="_aXq8IGDAEeq8BovXV4ESzw">
351 <styles xmi:type="notation:FontStyle" xmi:id="_abkksWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
352 <layoutConstraint xmi:type="notation:Location" xmi:id="_abkksmDAEeq8BovXV4ESzw"/>
353 </children>
354 <styles xmi:type="notation:SortingStyle" xmi:id="_aaHMIWDAEeq8BovXV4ESzw"/>
355 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaHMImDAEeq8BovXV4ESzw"/>
356 </children>
357 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaGlEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
358 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaGlEmDAEeq8BovXV4ESzw" x="1368"/>
359 </children>
360 <children xmi:type="notation:Node" xmi:id="_aaHMI2DAEeq8BovXV4ESzw" type="2003" element="_aAhncWDAEeq8BovXV4ESzw">
361 <children xmi:type="notation:Node" xmi:id="_aaHzMGDAEeq8BovXV4ESzw" type="5007"/>
362 <children xmi:type="notation:Node" xmi:id="_aaIaQGDAEeq8BovXV4ESzw" type="7004">
363 <children xmi:type="notation:Node" xmi:id="_ablLwGDAEeq8BovXV4ESzw" type="3010" element="_aXrjMGDAEeq8BovXV4ESzw">
364 <styles xmi:type="notation:FontStyle" xmi:id="_ablLwWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
365 <layoutConstraint xmi:type="notation:Location" xmi:id="_ablLwmDAEeq8BovXV4ESzw"/>
366 </children>
367 <children xmi:type="notation:Node" xmi:id="_ablLw2DAEeq8BovXV4ESzw" type="3010" element="_aXrjMmDAEeq8BovXV4ESzw">
368 <styles xmi:type="notation:FontStyle" xmi:id="_ablLxGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
369 <layoutConstraint xmi:type="notation:Location" xmi:id="_ablLxWDAEeq8BovXV4ESzw"/>
370 </children>
371 <children xmi:type="notation:Node" xmi:id="_ably0GDAEeq8BovXV4ESzw" type="3010" element="_aXsKQGDAEeq8BovXV4ESzw">
372 <styles xmi:type="notation:FontStyle" xmi:id="_ably0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
373 <layoutConstraint xmi:type="notation:Location" xmi:id="_ably0mDAEeq8BovXV4ESzw"/>
374 </children>
375 <styles xmi:type="notation:SortingStyle" xmi:id="_aaIaQWDAEeq8BovXV4ESzw"/>
376 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaIaQmDAEeq8BovXV4ESzw"/>
377 </children>
378 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaHMJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
379 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaHMJWDAEeq8BovXV4ESzw" x="1548"/>
380 </children>
381 <children xmi:type="notation:Node" xmi:id="_aaJBUGDAEeq8BovXV4ESzw" type="2003" element="_aAi1kGDAEeq8BovXV4ESzw">
382 <children xmi:type="notation:Node" xmi:id="_aaJoYGDAEeq8BovXV4ESzw" type="5007"/>
383 <children xmi:type="notation:Node" xmi:id="_aaJoYWDAEeq8BovXV4ESzw" type="7004">
384 <children xmi:type="notation:Node" xmi:id="_abmZ4GDAEeq8BovXV4ESzw" type="3010" element="_aXsxUGDAEeq8BovXV4ESzw">
385 <styles xmi:type="notation:FontStyle" xmi:id="_abmZ4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
386 <layoutConstraint xmi:type="notation:Location" xmi:id="_abmZ4mDAEeq8BovXV4ESzw"/>
387 </children>
388 <children xmi:type="notation:Node" xmi:id="_abmZ42DAEeq8BovXV4ESzw" type="3010" element="_aXsxUmDAEeq8BovXV4ESzw">
389 <styles xmi:type="notation:FontStyle" xmi:id="_abmZ5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
390 <layoutConstraint xmi:type="notation:Location" xmi:id="_abmZ5WDAEeq8BovXV4ESzw"/>
391 </children>
392 <children xmi:type="notation:Node" xmi:id="_abmZ5mDAEeq8BovXV4ESzw" type="3010" element="_aXumgGDAEeq8BovXV4ESzw">
393 <styles xmi:type="notation:FontStyle" xmi:id="_abmZ52DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
394 <layoutConstraint xmi:type="notation:Location" xmi:id="_abmZ6GDAEeq8BovXV4ESzw"/>
395 </children>
396 <styles xmi:type="notation:SortingStyle" xmi:id="_aaJoYmDAEeq8BovXV4ESzw"/>
397 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaJoY2DAEeq8BovXV4ESzw"/>
398 </children>
399 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaJBUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
400 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaJBUmDAEeq8BovXV4ESzw" x="1728"/>
401 </children>
402 <children xmi:type="notation:Node" xmi:id="_aaKPcGDAEeq8BovXV4ESzw" type="2003" element="_aAjcoWDAEeq8BovXV4ESzw">
403 <children xmi:type="notation:Node" xmi:id="_aaK2gGDAEeq8BovXV4ESzw" type="5007"/>
404 <children xmi:type="notation:Node" xmi:id="_aaK2gWDAEeq8BovXV4ESzw" type="7004">
405 <children xmi:type="notation:Node" xmi:id="_abnA8GDAEeq8BovXV4ESzw" type="3010" element="_aXv0oGDAEeq8BovXV4ESzw">
406 <styles xmi:type="notation:FontStyle" xmi:id="_abnA8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
407 <layoutConstraint xmi:type="notation:Location" xmi:id="_abnA8mDAEeq8BovXV4ESzw"/>
408 </children>
409 <children xmi:type="notation:Node" xmi:id="_abnA82DAEeq8BovXV4ESzw" type="3010" element="_aXwbsGDAEeq8BovXV4ESzw">
410 <styles xmi:type="notation:FontStyle" xmi:id="_abnA9GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
411 <layoutConstraint xmi:type="notation:Location" xmi:id="_abnA9WDAEeq8BovXV4ESzw"/>
412 </children>
413 <children xmi:type="notation:Node" xmi:id="_abnoAGDAEeq8BovXV4ESzw" type="3010" element="_aXwbsmDAEeq8BovXV4ESzw">
414 <styles xmi:type="notation:FontStyle" xmi:id="_abnoAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
415 <layoutConstraint xmi:type="notation:Location" xmi:id="_abnoAmDAEeq8BovXV4ESzw"/>
416 </children>
417 <children xmi:type="notation:Node" xmi:id="_abnoA2DAEeq8BovXV4ESzw" type="3010" element="_aXxCwWDAEeq8BovXV4ESzw">
418 <styles xmi:type="notation:FontStyle" xmi:id="_abnoBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
419 <layoutConstraint xmi:type="notation:Location" xmi:id="_abnoBWDAEeq8BovXV4ESzw"/>
420 </children>
421 <children xmi:type="notation:Node" xmi:id="_abnoBmDAEeq8BovXV4ESzw" type="3010" element="_aXxp0GDAEeq8BovXV4ESzw">
422 <styles xmi:type="notation:FontStyle" xmi:id="_abnoB2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
423 <layoutConstraint xmi:type="notation:Location" xmi:id="_abnoCGDAEeq8BovXV4ESzw"/>
424 </children>
425 <styles xmi:type="notation:SortingStyle" xmi:id="_aaK2gmDAEeq8BovXV4ESzw"/>
426 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaK2g2DAEeq8BovXV4ESzw"/>
427 </children>
428 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaKPcWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
429 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaKPcmDAEeq8BovXV4ESzw" x="1908"/>
430 </children>
431 <children xmi:type="notation:Node" xmi:id="_aaLdkGDAEeq8BovXV4ESzw" type="2003" element="_aAkDsWDAEeq8BovXV4ESzw">
432 <children xmi:type="notation:Node" xmi:id="_aaLdk2DAEeq8BovXV4ESzw" type="5007"/>
433 <children xmi:type="notation:Node" xmi:id="_aaMEoGDAEeq8BovXV4ESzw" type="7004">
434 <children xmi:type="notation:Node" xmi:id="_aboPEGDAEeq8BovXV4ESzw" type="3010" element="_aXxp0mDAEeq8BovXV4ESzw">
435 <styles xmi:type="notation:FontStyle" xmi:id="_aboPEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
436 <layoutConstraint xmi:type="notation:Location" xmi:id="_aboPEmDAEeq8BovXV4ESzw"/>
437 </children>
438 <children xmi:type="notation:Node" xmi:id="_aboPE2DAEeq8BovXV4ESzw" type="3010" element="_aXyQ4WDAEeq8BovXV4ESzw">
439 <styles xmi:type="notation:FontStyle" xmi:id="_aboPFGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
440 <layoutConstraint xmi:type="notation:Location" xmi:id="_aboPFWDAEeq8BovXV4ESzw"/>
441 </children>
442 <styles xmi:type="notation:SortingStyle" xmi:id="_aaMEoWDAEeq8BovXV4ESzw"/>
443 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaMEomDAEeq8BovXV4ESzw"/>
444 </children>
445 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaLdkWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
446 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaLdkmDAEeq8BovXV4ESzw" x="2088"/>
447 </children>
448 <children xmi:type="notation:Node" xmi:id="_aaMEo2DAEeq8BovXV4ESzw" type="2003" element="_aAlR0GDAEeq8BovXV4ESzw">
449 <children xmi:type="notation:Node" xmi:id="_aaMrsGDAEeq8BovXV4ESzw" type="5007"/>
450 <children xmi:type="notation:Node" xmi:id="_aaMrsWDAEeq8BovXV4ESzw" type="7004">
451 <children xmi:type="notation:Node" xmi:id="_abo2IGDAEeq8BovXV4ESzw" type="3010" element="_aXyQ42DAEeq8BovXV4ESzw">
452 <styles xmi:type="notation:FontStyle" xmi:id="_abo2IWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
453 <layoutConstraint xmi:type="notation:Location" xmi:id="_abo2ImDAEeq8BovXV4ESzw"/>
454 </children>
455 <children xmi:type="notation:Node" xmi:id="_abo2I2DAEeq8BovXV4ESzw" type="3010" element="_aXy38WDAEeq8BovXV4ESzw">
456 <styles xmi:type="notation:FontStyle" xmi:id="_abo2JGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
457 <layoutConstraint xmi:type="notation:Location" xmi:id="_abo2JWDAEeq8BovXV4ESzw"/>
458 </children>
459 <children xmi:type="notation:Node" xmi:id="_abpdMGDAEeq8BovXV4ESzw" type="3010" element="_aXy382DAEeq8BovXV4ESzw">
460 <styles xmi:type="notation:FontStyle" xmi:id="_abpdMWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
461 <layoutConstraint xmi:type="notation:Location" xmi:id="_abpdMmDAEeq8BovXV4ESzw"/>
462 </children>
463 <styles xmi:type="notation:SortingStyle" xmi:id="_aaMrsmDAEeq8BovXV4ESzw"/>
464 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaMrs2DAEeq8BovXV4ESzw"/>
465 </children>
466 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaMEpGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
467 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaMEpWDAEeq8BovXV4ESzw" x="2268"/>
468 </children>
469 <children xmi:type="notation:Node" xmi:id="_aaMrtGDAEeq8BovXV4ESzw" type="2003" element="_aAl44GDAEeq8BovXV4ESzw">
470 <children xmi:type="notation:Node" xmi:id="_aaNSwGDAEeq8BovXV4ESzw" type="5007"/>
471 <children xmi:type="notation:Node" xmi:id="_aaNSwWDAEeq8BovXV4ESzw" type="7004">
472 <children xmi:type="notation:Node" xmi:id="_abpdM2DAEeq8BovXV4ESzw" type="3010" element="_aXzfAWDAEeq8BovXV4ESzw">
473 <styles xmi:type="notation:FontStyle" xmi:id="_abpdNGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
474 <layoutConstraint xmi:type="notation:Location" xmi:id="_abpdNWDAEeq8BovXV4ESzw"/>
475 </children>
476 <children xmi:type="notation:Node" xmi:id="_abqrUGDAEeq8BovXV4ESzw" type="3010" element="_aX0GEGDAEeq8BovXV4ESzw">
477 <styles xmi:type="notation:FontStyle" xmi:id="_abqrUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
478 <layoutConstraint xmi:type="notation:Location" xmi:id="_abqrUmDAEeq8BovXV4ESzw"/>
479 </children>
480 <children xmi:type="notation:Node" xmi:id="_abqrU2DAEeq8BovXV4ESzw" type="3010" element="_aX0GEmDAEeq8BovXV4ESzw">
481 <styles xmi:type="notation:FontStyle" xmi:id="_abqrVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
482 <layoutConstraint xmi:type="notation:Location" xmi:id="_abqrVWDAEeq8BovXV4ESzw"/>
483 </children>
484 <children xmi:type="notation:Node" xmi:id="_abqrVmDAEeq8BovXV4ESzw" type="3010" element="_aX0tIGDAEeq8BovXV4ESzw">
485 <styles xmi:type="notation:FontStyle" xmi:id="_abqrV2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
486 <layoutConstraint xmi:type="notation:Location" xmi:id="_abqrWGDAEeq8BovXV4ESzw"/>
487 </children>
488 <children xmi:type="notation:Node" xmi:id="_abrSYGDAEeq8BovXV4ESzw" type="3010" element="_aX0tImDAEeq8BovXV4ESzw">
489 <styles xmi:type="notation:FontStyle" xmi:id="_abrSYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
490 <layoutConstraint xmi:type="notation:Location" xmi:id="_abrSYmDAEeq8BovXV4ESzw"/>
491 </children>
492 <children xmi:type="notation:Node" xmi:id="_abrSY2DAEeq8BovXV4ESzw" type="3010" element="_aX1UMGDAEeq8BovXV4ESzw">
493 <styles xmi:type="notation:FontStyle" xmi:id="_abrSZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
494 <layoutConstraint xmi:type="notation:Location" xmi:id="_abrSZWDAEeq8BovXV4ESzw"/>
495 </children>
496 <styles xmi:type="notation:SortingStyle" xmi:id="_aaNSwmDAEeq8BovXV4ESzw"/>
497 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaNSw2DAEeq8BovXV4ESzw"/>
498 </children>
499 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaMrtWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
500 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaMrtmDAEeq8BovXV4ESzw" x="2760"/>
501 </children>
502 <children xmi:type="notation:Node" xmi:id="_aaNSxGDAEeq8BovXV4ESzw" type="2003" element="_aAnHAGDAEeq8BovXV4ESzw">
503 <children xmi:type="notation:Node" xmi:id="_aaN50GDAEeq8BovXV4ESzw" type="5007"/>
504 <children xmi:type="notation:Node" xmi:id="_aaN50WDAEeq8BovXV4ESzw" type="7004">
505 <children xmi:type="notation:Node" xmi:id="_abr5cGDAEeq8BovXV4ESzw" type="3010" element="_aX1UMmDAEeq8BovXV4ESzw">
506 <styles xmi:type="notation:FontStyle" xmi:id="_abr5cWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
507 <layoutConstraint xmi:type="notation:Location" xmi:id="_abr5cmDAEeq8BovXV4ESzw"/>
508 </children>
509 <children xmi:type="notation:Node" xmi:id="_absggGDAEeq8BovXV4ESzw" type="3010" element="_aX17QWDAEeq8BovXV4ESzw">
510 <styles xmi:type="notation:FontStyle" xmi:id="_absggWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
511 <layoutConstraint xmi:type="notation:Location" xmi:id="_absggmDAEeq8BovXV4ESzw"/>
512 </children>
513 <children xmi:type="notation:Node" xmi:id="_absgg2DAEeq8BovXV4ESzw" type="3010" element="_aX17Q2DAEeq8BovXV4ESzw">
514 <styles xmi:type="notation:FontStyle" xmi:id="_absghGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
515 <layoutConstraint xmi:type="notation:Location" xmi:id="_absghWDAEeq8BovXV4ESzw"/>
516 </children>
517 <children xmi:type="notation:Node" xmi:id="_abtHkGDAEeq8BovXV4ESzw" type="3010" element="_aX2iUWDAEeq8BovXV4ESzw">
518 <styles xmi:type="notation:FontStyle" xmi:id="_abtHkWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
519 <layoutConstraint xmi:type="notation:Location" xmi:id="_abtHkmDAEeq8BovXV4ESzw"/>
520 </children>
521 <children xmi:type="notation:Node" xmi:id="_abtHk2DAEeq8BovXV4ESzw" type="3010" element="_aX3JYGDAEeq8BovXV4ESzw">
522 <styles xmi:type="notation:FontStyle" xmi:id="_abtuoGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
523 <layoutConstraint xmi:type="notation:Location" xmi:id="_abtuoWDAEeq8BovXV4ESzw"/>
524 </children>
525 <styles xmi:type="notation:SortingStyle" xmi:id="_aaN50mDAEeq8BovXV4ESzw"/>
526 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaN502DAEeq8BovXV4ESzw"/>
527 </children>
528 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaNSxWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
529 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaNSxmDAEeq8BovXV4ESzw" x="2952"/>
530 </children>
531 <children xmi:type="notation:Node" xmi:id="_aaN51GDAEeq8BovXV4ESzw" type="2003" element="_aAoVIGDAEeq8BovXV4ESzw">
532 <children xmi:type="notation:Node" xmi:id="_aaOg4GDAEeq8BovXV4ESzw" type="5007"/>
533 <children xmi:type="notation:Node" xmi:id="_aaOg4WDAEeq8BovXV4ESzw" type="7004">
534 <children xmi:type="notation:Node" xmi:id="_abtuomDAEeq8BovXV4ESzw" type="3010" element="_aL4i4GDAEeq8BovXV4ESzw">
535 <styles xmi:type="notation:FontStyle" xmi:id="_abtuo2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
536 <layoutConstraint xmi:type="notation:Location" xmi:id="_abtupGDAEeq8BovXV4ESzw"/>
537 </children>
538 <children xmi:type="notation:Node" xmi:id="_abuVsGDAEeq8BovXV4ESzw" type="3010" element="_aL5J8GDAEeq8BovXV4ESzw">
539 <styles xmi:type="notation:FontStyle" xmi:id="_abuVsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
540 <layoutConstraint xmi:type="notation:Location" xmi:id="_abuVsmDAEeq8BovXV4ESzw"/>
541 </children>
542 <children xmi:type="notation:Node" xmi:id="_abuVs2DAEeq8BovXV4ESzw" type="3010" element="_aL5J8mDAEeq8BovXV4ESzw">
543 <styles xmi:type="notation:FontStyle" xmi:id="_abuVtGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
544 <layoutConstraint xmi:type="notation:Location" xmi:id="_abuVtWDAEeq8BovXV4ESzw"/>
545 </children>
546 <styles xmi:type="notation:SortingStyle" xmi:id="_aaOg4mDAEeq8BovXV4ESzw"/>
547 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaOg42DAEeq8BovXV4ESzw"/>
548 </children>
549 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaN51WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
550 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaN51mDAEeq8BovXV4ESzw" x="7704" y="1212"/>
551 </children>
552 <children xmi:type="notation:Node" xmi:id="_aaOg5GDAEeq8BovXV4ESzw" type="2003" element="_aApjQGDAEeq8BovXV4ESzw">
553 <children xmi:type="notation:Node" xmi:id="_aaPvAGDAEeq8BovXV4ESzw" type="5007"/>
554 <children xmi:type="notation:Node" xmi:id="_aaPvAWDAEeq8BovXV4ESzw" type="7004">
555 <children xmi:type="notation:Node" xmi:id="_abvj0GDAEeq8BovXV4ESzw" type="3010" element="_aL6_IGDAEeq8BovXV4ESzw">
556 <styles xmi:type="notation:FontStyle" xmi:id="_abvj0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
557 <layoutConstraint xmi:type="notation:Location" xmi:id="_abvj0mDAEeq8BovXV4ESzw"/>
558 </children>
559 <styles xmi:type="notation:SortingStyle" xmi:id="_aaPvAmDAEeq8BovXV4ESzw"/>
560 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaPvA2DAEeq8BovXV4ESzw"/>
561 </children>
562 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaOg5WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" italic="true"/>
563 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaOg5mDAEeq8BovXV4ESzw" x="7776" y="1044"/>
564 </children>
565 <children xmi:type="notation:Node" xmi:id="_aaQWEGDAEeq8BovXV4ESzw" type="2003" element="_aArYcGDAEeq8BovXV4ESzw">
566 <children xmi:type="notation:Node" xmi:id="_aaRkMGDAEeq8BovXV4ESzw" type="5007"/>
567 <children xmi:type="notation:Node" xmi:id="_aaSLQGDAEeq8BovXV4ESzw" type="7004">
568 <children xmi:type="notation:Node" xmi:id="_abwK4GDAEeq8BovXV4ESzw" type="3010" element="_aL80UGDAEeq8BovXV4ESzw">
569 <styles xmi:type="notation:FontStyle" xmi:id="_abwK4WDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
570 <layoutConstraint xmi:type="notation:Location" xmi:id="_abwK4mDAEeq8BovXV4ESzw"/>
571 </children>
572 <children xmi:type="notation:Node" xmi:id="_abwK42DAEeq8BovXV4ESzw" type="3010" element="_aL-CcWDAEeq8BovXV4ESzw">
573 <styles xmi:type="notation:FontStyle" xmi:id="_abwK5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
574 <layoutConstraint xmi:type="notation:Location" xmi:id="_abwK5WDAEeq8BovXV4ESzw"/>
575 </children>
576 <children xmi:type="notation:Node" xmi:id="_abwx8GDAEeq8BovXV4ESzw" type="3010" element="_aL_QkGDAEeq8BovXV4ESzw">
577 <styles xmi:type="notation:FontStyle" xmi:id="_abwx8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
578 <layoutConstraint xmi:type="notation:Location" xmi:id="_abwx8mDAEeq8BovXV4ESzw"/>
579 </children>
580 <children xmi:type="notation:Node" xmi:id="_abxZAGDAEeq8BovXV4ESzw" type="3010" element="_aL_3oGDAEeq8BovXV4ESzw">
581 <styles xmi:type="notation:FontStyle" xmi:id="_abxZAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
582 <layoutConstraint xmi:type="notation:Location" xmi:id="_abxZAmDAEeq8BovXV4ESzw"/>
583 </children>
584 <children xmi:type="notation:Node" xmi:id="_abxZA2DAEeq8BovXV4ESzw" type="3010" element="_aMAesWDAEeq8BovXV4ESzw">
585 <styles xmi:type="notation:FontStyle" xmi:id="_abxZBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
586 <layoutConstraint xmi:type="notation:Location" xmi:id="_abxZBWDAEeq8BovXV4ESzw"/>
587 </children>
588 <children xmi:type="notation:Node" xmi:id="_abyAEGDAEeq8BovXV4ESzw" type="3010" element="_aMBs0GDAEeq8BovXV4ESzw">
589 <styles xmi:type="notation:FontStyle" xmi:id="_abyAEWDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
590 <layoutConstraint xmi:type="notation:Location" xmi:id="_abyAEmDAEeq8BovXV4ESzw"/>
591 </children>
592 <children xmi:type="notation:Node" xmi:id="_abyAE2DAEeq8BovXV4ESzw" type="3010" element="_aMCT4WDAEeq8BovXV4ESzw">
593 <styles xmi:type="notation:FontStyle" xmi:id="_abyAFGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
594 <layoutConstraint xmi:type="notation:Location" xmi:id="_abyAFWDAEeq8BovXV4ESzw"/>
595 </children>
596 <children xmi:type="notation:Node" xmi:id="_abynIGDAEeq8BovXV4ESzw" type="3010" element="_aMC68WDAEeq8BovXV4ESzw">
597 <styles xmi:type="notation:FontStyle" xmi:id="_abynIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
598 <layoutConstraint xmi:type="notation:Location" xmi:id="_abynImDAEeq8BovXV4ESzw"/>
599 </children>
600 <children xmi:type="notation:Node" xmi:id="_abynI2DAEeq8BovXV4ESzw" type="3010" element="_aMDiAWDAEeq8BovXV4ESzw">
601 <styles xmi:type="notation:FontStyle" xmi:id="_abzOMGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
602 <layoutConstraint xmi:type="notation:Location" xmi:id="_abzOMWDAEeq8BovXV4ESzw"/>
603 </children>
604 <styles xmi:type="notation:SortingStyle" xmi:id="_aaSLQWDAEeq8BovXV4ESzw"/>
605 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaSLQmDAEeq8BovXV4ESzw"/>
606 </children>
607 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaQWEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
608 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaQWEmDAEeq8BovXV4ESzw" x="7548" y="168"/>
609 </children>
610 <children xmi:type="notation:Node" xmi:id="_aaSyUGDAEeq8BovXV4ESzw" type="2003" element="_aAubwGDAEeq8BovXV4ESzw">
611 <children xmi:type="notation:Node" xmi:id="_aaTZYGDAEeq8BovXV4ESzw" type="5007"/>
612 <children xmi:type="notation:Node" xmi:id="_aaUAcGDAEeq8BovXV4ESzw" type="7004">
613 <children xmi:type="notation:Node" xmi:id="_ab0cUGDAEeq8BovXV4ESzw" type="3010" element="_aMFXMGDAEeq8BovXV4ESzw">
614 <styles xmi:type="notation:FontStyle" xmi:id="_ab0cUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
615 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab0cUmDAEeq8BovXV4ESzw"/>
616 </children>
617 <children xmi:type="notation:Node" xmi:id="_ab0cU2DAEeq8BovXV4ESzw" type="3010" element="_aMGlUWDAEeq8BovXV4ESzw">
618 <styles xmi:type="notation:FontStyle" xmi:id="_ab0cVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
619 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab0cVWDAEeq8BovXV4ESzw"/>
620 </children>
621 <children xmi:type="notation:Node" xmi:id="_ab1DYGDAEeq8BovXV4ESzw" type="3010" element="_aMHMYWDAEeq8BovXV4ESzw">
622 <styles xmi:type="notation:FontStyle" xmi:id="_ab1DYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
623 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab1DYmDAEeq8BovXV4ESzw"/>
624 </children>
625 <children xmi:type="notation:Node" xmi:id="_ab1DY2DAEeq8BovXV4ESzw" type="3010" element="_aMHzcWDAEeq8BovXV4ESzw">
626 <styles xmi:type="notation:FontStyle" xmi:id="_ab1DZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
627 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab1DZWDAEeq8BovXV4ESzw"/>
628 </children>
629 <children xmi:type="notation:Node" xmi:id="_ab1DZmDAEeq8BovXV4ESzw" type="3010" element="_aMIagWDAEeq8BovXV4ESzw">
630 <styles xmi:type="notation:FontStyle" xmi:id="_ab1DZ2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
631 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab1DaGDAEeq8BovXV4ESzw"/>
632 </children>
633 <styles xmi:type="notation:SortingStyle" xmi:id="_aaUAcWDAEeq8BovXV4ESzw"/>
634 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaUAcmDAEeq8BovXV4ESzw"/>
635 </children>
636 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaSyUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
637 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaSyUmDAEeq8BovXV4ESzw" x="7656"/>
638 </children>
639 <children xmi:type="notation:Node" xmi:id="_aaUAc2DAEeq8BovXV4ESzw" type="2003" element="_aAvp4GDAEeq8BovXV4ESzw">
640 <children xmi:type="notation:Node" xmi:id="_aaUngGDAEeq8BovXV4ESzw" type="5007"/>
641 <children xmi:type="notation:Node" xmi:id="_aaVOkGDAEeq8BovXV4ESzw" type="7004">
642 <children xmi:type="notation:Node" xmi:id="_ab1qcGDAEeq8BovXV4ESzw" type="3010" element="_aMJooGDAEeq8BovXV4ESzw">
643 <styles xmi:type="notation:FontStyle" xmi:id="_ab1qcWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
644 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab1qcmDAEeq8BovXV4ESzw"/>
645 </children>
646 <children xmi:type="notation:Node" xmi:id="_ab2RgGDAEeq8BovXV4ESzw" type="3010" element="_aMKPsGDAEeq8BovXV4ESzw">
647 <styles xmi:type="notation:FontStyle" xmi:id="_ab2RgWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
648 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab2RgmDAEeq8BovXV4ESzw"/>
649 </children>
650 <children xmi:type="notation:Node" xmi:id="_ab3foGDAEeq8BovXV4ESzw" type="3010" element="_aMK2wmDAEeq8BovXV4ESzw">
651 <styles xmi:type="notation:FontStyle" xmi:id="_ab3foWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
652 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab3fomDAEeq8BovXV4ESzw"/>
653 </children>
654 <styles xmi:type="notation:SortingStyle" xmi:id="_aaVOkWDAEeq8BovXV4ESzw"/>
655 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaVOkmDAEeq8BovXV4ESzw"/>
656 </children>
657 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaUAdGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
658 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaUAdWDAEeq8BovXV4ESzw" x="6912" y="1044"/>
659 </children>
660 <children xmi:type="notation:Node" xmi:id="_aaWcsGDAEeq8BovXV4ESzw" type="2003" element="_aAw4AGDAEeq8BovXV4ESzw">
661 <children xmi:type="notation:Node" xmi:id="_aaXDwGDAEeq8BovXV4ESzw" type="5007"/>
662 <children xmi:type="notation:Node" xmi:id="_aaXDwWDAEeq8BovXV4ESzw" type="7004">
663 <children xmi:type="notation:Node" xmi:id="_ab3fo2DAEeq8BovXV4ESzw" type="3010" element="_aMME4GDAEeq8BovXV4ESzw">
664 <styles xmi:type="notation:FontStyle" xmi:id="_ab3fpGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
665 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab3fpWDAEeq8BovXV4ESzw"/>
666 </children>
667 <children xmi:type="notation:Node" xmi:id="_ab4GsGDAEeq8BovXV4ESzw" type="3010" element="_aMMr8GDAEeq8BovXV4ESzw">
668 <styles xmi:type="notation:FontStyle" xmi:id="_ab4GsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
669 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab4GsmDAEeq8BovXV4ESzw"/>
670 </children>
671 <styles xmi:type="notation:SortingStyle" xmi:id="_aaXDwmDAEeq8BovXV4ESzw"/>
672 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaXDw2DAEeq8BovXV4ESzw"/>
673 </children>
674 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaWcsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
675 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaWcsmDAEeq8BovXV4ESzw" x="7560" y="828"/>
676 </children>
677 <children xmi:type="notation:Node" xmi:id="_aaXq0GDAEeq8BovXV4ESzw" type="2003" element="_aAyGIGDAEeq8BovXV4ESzw">
678 <children xmi:type="notation:Node" xmi:id="_aaYR4GDAEeq8BovXV4ESzw" type="5007"/>
679 <children xmi:type="notation:Node" xmi:id="_aaYR4WDAEeq8BovXV4ESzw" type="7004">
680 <children xmi:type="notation:Node" xmi:id="_ab4Gs2DAEeq8BovXV4ESzw" type="3010" element="_aMNTAGDAEeq8BovXV4ESzw">
681 <styles xmi:type="notation:FontStyle" xmi:id="_ab4GtGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
682 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab4GtWDAEeq8BovXV4ESzw"/>
683 </children>
684 <children xmi:type="notation:Node" xmi:id="_ab4twGDAEeq8BovXV4ESzw" type="3010" element="_aMOhIGDAEeq8BovXV4ESzw">
685 <styles xmi:type="notation:FontStyle" xmi:id="_ab4twWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
686 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab4twmDAEeq8BovXV4ESzw"/>
687 </children>
688 <children xmi:type="notation:Node" xmi:id="_ab4tw2DAEeq8BovXV4ESzw" type="3010" element="_aMPIMGDAEeq8BovXV4ESzw">
689 <styles xmi:type="notation:FontStyle" xmi:id="_ab4txGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
690 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab4txWDAEeq8BovXV4ESzw"/>
691 </children>
692 <children xmi:type="notation:Node" xmi:id="_ab5U0GDAEeq8BovXV4ESzw" type="3010" element="_aMPvQGDAEeq8BovXV4ESzw">
693 <styles xmi:type="notation:FontStyle" xmi:id="_ab5U0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
694 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab5U0mDAEeq8BovXV4ESzw"/>
695 </children>
696 <children xmi:type="notation:Node" xmi:id="_ab574GDAEeq8BovXV4ESzw" type="3010" element="_aMQWUGDAEeq8BovXV4ESzw">
697 <styles xmi:type="notation:FontStyle" xmi:id="_ab574WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
698 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab574mDAEeq8BovXV4ESzw"/>
699 </children>
700 <styles xmi:type="notation:SortingStyle" xmi:id="_aaYR4mDAEeq8BovXV4ESzw"/>
701 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaYR42DAEeq8BovXV4ESzw"/>
702 </children>
703 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaXq0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
704 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaXq0mDAEeq8BovXV4ESzw" x="7644" y="432"/>
705 </children>
706 <children xmi:type="notation:Node" xmi:id="_aaY48GDAEeq8BovXV4ESzw" type="2003" element="_aAzUQGDAEeq8BovXV4ESzw">
707 <children xmi:type="notation:Node" xmi:id="_aaY482DAEeq8BovXV4ESzw" type="5007"/>
708 <children xmi:type="notation:Node" xmi:id="_aaZgAGDAEeq8BovXV4ESzw" type="7004">
709 <children xmi:type="notation:Node" xmi:id="_ab5742DAEeq8BovXV4ESzw" type="3010" element="_aMQ9YGDAEeq8BovXV4ESzw">
710 <styles xmi:type="notation:FontStyle" xmi:id="_ab575GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
711 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab575WDAEeq8BovXV4ESzw"/>
712 </children>
713 <styles xmi:type="notation:SortingStyle" xmi:id="_aaZgAWDAEeq8BovXV4ESzw"/>
714 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaZgAmDAEeq8BovXV4ESzw"/>
715 </children>
716 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaY48WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
717 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaY48mDAEeq8BovXV4ESzw" x="7848" y="612"/>
718 </children>
719 <children xmi:type="notation:Node" xmi:id="_aaZgA2DAEeq8BovXV4ESzw" type="2003" element="_aA1JcGDAEeq8BovXV4ESzw">
720 <children xmi:type="notation:Node" xmi:id="_aaaHEGDAEeq8BovXV4ESzw" type="5007"/>
721 <children xmi:type="notation:Node" xmi:id="_aaaHEWDAEeq8BovXV4ESzw" type="7004">
722 <children xmi:type="notation:Node" xmi:id="_ab6i8GDAEeq8BovXV4ESzw" type="3010" element="_aMSLgGDAEeq8BovXV4ESzw">
723 <styles xmi:type="notation:FontStyle" xmi:id="_ab6i8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
724 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab6i8mDAEeq8BovXV4ESzw"/>
725 </children>
726 <children xmi:type="notation:Node" xmi:id="_ab7KAGDAEeq8BovXV4ESzw" type="3010" element="_aMSykWDAEeq8BovXV4ESzw">
727 <styles xmi:type="notation:FontStyle" xmi:id="_ab7KAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
728 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab7KAmDAEeq8BovXV4ESzw"/>
729 </children>
730 <children xmi:type="notation:Node" xmi:id="_ab7KA2DAEeq8BovXV4ESzw" type="3010" element="_aMTZoWDAEeq8BovXV4ESzw">
731 <styles xmi:type="notation:FontStyle" xmi:id="_ab7KBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
732 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab7KBWDAEeq8BovXV4ESzw"/>
733 </children>
734 <children xmi:type="notation:Node" xmi:id="_ab7xEGDAEeq8BovXV4ESzw" type="3010" element="_aMUAsGDAEeq8BovXV4ESzw">
735 <styles xmi:type="notation:FontStyle" xmi:id="_ab7xEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
736 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab7xEmDAEeq8BovXV4ESzw"/>
737 </children>
738 <children xmi:type="notation:Node" xmi:id="_ab7xE2DAEeq8BovXV4ESzw" type="3010" element="_aMUnwWDAEeq8BovXV4ESzw">
739 <styles xmi:type="notation:FontStyle" xmi:id="_ab7xFGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
740 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab7xFWDAEeq8BovXV4ESzw"/>
741 </children>
742 <styles xmi:type="notation:SortingStyle" xmi:id="_aaaHEmDAEeq8BovXV4ESzw"/>
743 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaaHE2DAEeq8BovXV4ESzw"/>
744 </children>
745 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaZgBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" italic="true"/>
746 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaZgBWDAEeq8BovXV4ESzw" x="6648" y="432"/>
747 </children>
748 <children xmi:type="notation:Node" xmi:id="_aaauIGDAEeq8BovXV4ESzw" type="2003" element="_aA2XkWDAEeq8BovXV4ESzw">
749 <children xmi:type="notation:Node" xmi:id="_aabVMGDAEeq8BovXV4ESzw" type="5007"/>
750 <children xmi:type="notation:Node" xmi:id="_aabVMWDAEeq8BovXV4ESzw" type="7004">
751 <children xmi:type="notation:Node" xmi:id="_ab8YIGDAEeq8BovXV4ESzw" type="3010" element="_aX3wcGDAEeq8BovXV4ESzw">
752 <styles xmi:type="notation:FontStyle" xmi:id="_ab8YIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
753 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab8YImDAEeq8BovXV4ESzw"/>
754 </children>
755 <children xmi:type="notation:Node" xmi:id="_ab8YI2DAEeq8BovXV4ESzw" type="3010" element="_aX4-kGDAEeq8BovXV4ESzw">
756 <styles xmi:type="notation:FontStyle" xmi:id="_ab8_MGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
757 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab8_MWDAEeq8BovXV4ESzw"/>
758 </children>
759 <children xmi:type="notation:Node" xmi:id="_ab8_MmDAEeq8BovXV4ESzw" type="3010" element="_aX5loWDAEeq8BovXV4ESzw">
760 <styles xmi:type="notation:FontStyle" xmi:id="_ab8_M2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
761 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab8_NGDAEeq8BovXV4ESzw"/>
762 </children>
763 <children xmi:type="notation:Node" xmi:id="_ab9mQGDAEeq8BovXV4ESzw" type="3010" element="_aX6MsGDAEeq8BovXV4ESzw">
764 <styles xmi:type="notation:FontStyle" xmi:id="_ab9mQWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
765 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab9mQmDAEeq8BovXV4ESzw"/>
766 </children>
767 <styles xmi:type="notation:SortingStyle" xmi:id="_aabVMmDAEeq8BovXV4ESzw"/>
768 <styles xmi:type="notation:FilteringStyle" xmi:id="_aabVM2DAEeq8BovXV4ESzw"/>
769 </children>
770 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaauIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
771 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaauImDAEeq8BovXV4ESzw" x="3168"/>
772 </children>
773 <children xmi:type="notation:Node" xmi:id="_aab8QGDAEeq8BovXV4ESzw" type="2003" element="_aA4MwGDAEeq8BovXV4ESzw">
774 <children xmi:type="notation:Node" xmi:id="_aacjUGDAEeq8BovXV4ESzw" type="5007"/>
775 <children xmi:type="notation:Node" xmi:id="_aadKYGDAEeq8BovXV4ESzw" type="7004">
776 <children xmi:type="notation:Node" xmi:id="_ab9mQ2DAEeq8BovXV4ESzw" type="3010" element="_aMV14GDAEeq8BovXV4ESzw">
777 <styles xmi:type="notation:FontStyle" xmi:id="_ab9mRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
778 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab9mRWDAEeq8BovXV4ESzw"/>
779 </children>
780 <children xmi:type="notation:Node" xmi:id="_ab-NU2DAEeq8BovXV4ESzw" type="3010" element="_aMXEAWDAEeq8BovXV4ESzw">
781 <styles xmi:type="notation:FontStyle" xmi:id="_ab-NVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
782 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab-NVWDAEeq8BovXV4ESzw"/>
783 </children>
784 <styles xmi:type="notation:SortingStyle" xmi:id="_aadKYWDAEeq8BovXV4ESzw"/>
785 <styles xmi:type="notation:FilteringStyle" xmi:id="_aadKYmDAEeq8BovXV4ESzw"/>
786 </children>
787 <styles xmi:type="notation:ShapeStyle" xmi:id="_aab8QWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
788 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aab8QmDAEeq8BovXV4ESzw" x="7296" y="168"/>
789 </children>
790 <children xmi:type="notation:Node" xmi:id="_aadKY2DAEeq8BovXV4ESzw" type="2003" element="_aA5a4GDAEeq8BovXV4ESzw">
791 <children xmi:type="notation:Node" xmi:id="_aadxcGDAEeq8BovXV4ESzw" type="5007"/>
792 <children xmi:type="notation:Node" xmi:id="_aaeYgGDAEeq8BovXV4ESzw" type="7004">
793 <styles xmi:type="notation:SortingStyle" xmi:id="_aaeYgWDAEeq8BovXV4ESzw"/>
794 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaeYgmDAEeq8BovXV4ESzw"/>
795 </children>
796 <styles xmi:type="notation:ShapeStyle" xmi:id="_aadKZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" italic="true"/>
797 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aadKZWDAEeq8BovXV4ESzw" x="8005" y="276"/>
798 </children>
799 <children xmi:type="notation:Node" xmi:id="_aaeYg2DAEeq8BovXV4ESzw" type="2003" element="_aA6pAGDAEeq8BovXV4ESzw">
800 <children xmi:type="notation:Node" xmi:id="_aae_kGDAEeq8BovXV4ESzw" type="5007"/>
801 <children xmi:type="notation:Node" xmi:id="_aae_kWDAEeq8BovXV4ESzw" type="7004">
802 <children xmi:type="notation:Node" xmi:id="_ab_bcGDAEeq8BovXV4ESzw" type="3010" element="_aMY5MWDAEeq8BovXV4ESzw">
803 <styles xmi:type="notation:FontStyle" xmi:id="_ab_bcWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
804 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab_bcmDAEeq8BovXV4ESzw"/>
805 </children>
806 <children xmi:type="notation:Node" xmi:id="_ab_bc2DAEeq8BovXV4ESzw" type="3010" element="_aMb8gGDAEeq8BovXV4ESzw">
807 <styles xmi:type="notation:FontStyle" xmi:id="_ab_bdGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
808 <layoutConstraint xmi:type="notation:Location" xmi:id="_ab_bdWDAEeq8BovXV4ESzw"/>
809 </children>
810 <styles xmi:type="notation:SortingStyle" xmi:id="_aae_kmDAEeq8BovXV4ESzw"/>
811 <styles xmi:type="notation:FilteringStyle" xmi:id="_aae_k2DAEeq8BovXV4ESzw"/>
812 </children>
813 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaeYhGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
814 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaeYhWDAEeq8BovXV4ESzw" x="7152" y="612"/>
815 </children>
816 <children xmi:type="notation:Node" xmi:id="_aae_lGDAEeq8BovXV4ESzw" type="2003" element="_aA73IWDAEeq8BovXV4ESzw">
817 <children xmi:type="notation:Node" xmi:id="_aafmoGDAEeq8BovXV4ESzw" type="5007"/>
818 <children xmi:type="notation:Node" xmi:id="_aafmoWDAEeq8BovXV4ESzw" type="7004">
819 <children xmi:type="notation:Node" xmi:id="_acACgGDAEeq8BovXV4ESzw" type="3010" element="_aMdKoGDAEeq8BovXV4ESzw">
820 <styles xmi:type="notation:FontStyle" xmi:id="_acACgWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
821 <layoutConstraint xmi:type="notation:Location" xmi:id="_acACgmDAEeq8BovXV4ESzw"/>
822 </children>
823 <children xmi:type="notation:Node" xmi:id="_acApkGDAEeq8BovXV4ESzw" type="3010" element="_aPURYWDAEeq8BovXV4ESzw">
824 <styles xmi:type="notation:FontStyle" xmi:id="_acApkWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
825 <layoutConstraint xmi:type="notation:Location" xmi:id="_acApkmDAEeq8BovXV4ESzw"/>
826 </children>
827 <children xmi:type="notation:Node" xmi:id="_acBQoGDAEeq8BovXV4ESzw" type="3010" element="_aPVfgGDAEeq8BovXV4ESzw">
828 <styles xmi:type="notation:FontStyle" xmi:id="_acBQoWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
829 <layoutConstraint xmi:type="notation:Location" xmi:id="_acBQomDAEeq8BovXV4ESzw"/>
830 </children>
831 <children xmi:type="notation:Node" xmi:id="_acBQo2DAEeq8BovXV4ESzw" type="3010" element="_aPVfgmDAEeq8BovXV4ESzw">
832 <styles xmi:type="notation:FontStyle" xmi:id="_acBQpGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
833 <layoutConstraint xmi:type="notation:Location" xmi:id="_acBQpWDAEeq8BovXV4ESzw"/>
834 </children>
835 <children xmi:type="notation:Node" xmi:id="_acB3sGDAEeq8BovXV4ESzw" type="3010" element="_aPWGkWDAEeq8BovXV4ESzw">
836 <styles xmi:type="notation:FontStyle" xmi:id="_acB3sWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
837 <layoutConstraint xmi:type="notation:Location" xmi:id="_acB3smDAEeq8BovXV4ESzw"/>
838 </children>
839 <children xmi:type="notation:Node" xmi:id="_acCewGDAEeq8BovXV4ESzw" type="3010" element="_aPXUsWDAEeq8BovXV4ESzw">
840 <styles xmi:type="notation:FontStyle" xmi:id="_acCewWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
841 <layoutConstraint xmi:type="notation:Location" xmi:id="_acCewmDAEeq8BovXV4ESzw"/>
842 </children>
843 <styles xmi:type="notation:SortingStyle" xmi:id="_aafmomDAEeq8BovXV4ESzw"/>
844 <styles xmi:type="notation:FilteringStyle" xmi:id="_aafmo2DAEeq8BovXV4ESzw"/>
845 </children>
846 <styles xmi:type="notation:ShapeStyle" xmi:id="_aae_lWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" italic="true"/>
847 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aae_lmDAEeq8BovXV4ESzw" x="8124" y="828"/>
848 </children>
849 <children xmi:type="notation:Node" xmi:id="_aagNsGDAEeq8BovXV4ESzw" type="2003" element="_aDFzQGDAEeq8BovXV4ESzw">
850 <children xmi:type="notation:Node" xmi:id="_aagNs2DAEeq8BovXV4ESzw" type="5007"/>
851 <children xmi:type="notation:Node" xmi:id="_aag0wGDAEeq8BovXV4ESzw" type="7004">
852 <children xmi:type="notation:Node" xmi:id="_acDF02DAEeq8BovXV4ESzw" type="3010" element="_aPZJ4GDAEeq8BovXV4ESzw">
853 <styles xmi:type="notation:FontStyle" xmi:id="_acDF1GDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
854 <layoutConstraint xmi:type="notation:Location" xmi:id="_acDF1WDAEeq8BovXV4ESzw"/>
855 </children>
856 <children xmi:type="notation:Node" xmi:id="_acDs4GDAEeq8BovXV4ESzw" type="3010" element="_aRNHwGDAEeq8BovXV4ESzw">
857 <styles xmi:type="notation:FontStyle" xmi:id="_acDs4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
858 <layoutConstraint xmi:type="notation:Location" xmi:id="_acDs4mDAEeq8BovXV4ESzw"/>
859 </children>
860 <styles xmi:type="notation:SortingStyle" xmi:id="_aag0wWDAEeq8BovXV4ESzw"/>
861 <styles xmi:type="notation:FilteringStyle" xmi:id="_aag0wmDAEeq8BovXV4ESzw"/>
862 </children>
863 <styles xmi:type="notation:ShapeStyle" xmi:id="_aagNsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" italic="true"/>
864 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aagNsmDAEeq8BovXV4ESzw" x="9408" y="612"/>
865 </children>
866 <children xmi:type="notation:Node" xmi:id="_aag0w2DAEeq8BovXV4ESzw" type="2003" element="_aFaugGDAEeq8BovXV4ESzw">
867 <children xmi:type="notation:Node" xmi:id="_aaiC4GDAEeq8BovXV4ESzw" type="5007"/>
868 <children xmi:type="notation:Node" xmi:id="_aaiC4WDAEeq8BovXV4ESzw" type="7004">
869 <children xmi:type="notation:Node" xmi:id="_acET8GDAEeq8BovXV4ESzw" type="3010" element="_aROV4GDAEeq8BovXV4ESzw">
870 <styles xmi:type="notation:FontStyle" xmi:id="_acET8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
871 <layoutConstraint xmi:type="notation:Location" xmi:id="_acET8mDAEeq8BovXV4ESzw"/>
872 </children>
873 <children xmi:type="notation:Node" xmi:id="_acE7AGDAEeq8BovXV4ESzw" type="3010" element="_aRO88GDAEeq8BovXV4ESzw">
874 <styles xmi:type="notation:FontStyle" xmi:id="_acE7AWDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
875 <layoutConstraint xmi:type="notation:Location" xmi:id="_acE7AmDAEeq8BovXV4ESzw"/>
876 </children>
877 <children xmi:type="notation:Node" xmi:id="_acE7A2DAEeq8BovXV4ESzw" type="3010" element="_aT_WAWDAEeq8BovXV4ESzw">
878 <styles xmi:type="notation:FontStyle" xmi:id="_acE7BGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
879 <layoutConstraint xmi:type="notation:Location" xmi:id="_acE7BWDAEeq8BovXV4ESzw"/>
880 </children>
881 <children xmi:type="notation:Node" xmi:id="_acFiEGDAEeq8BovXV4ESzw" type="3010" element="_aUAkIGDAEeq8BovXV4ESzw">
882 <styles xmi:type="notation:FontStyle" xmi:id="_acFiEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
883 <layoutConstraint xmi:type="notation:Location" xmi:id="_acFiEmDAEeq8BovXV4ESzw"/>
884 </children>
885 <children xmi:type="notation:Node" xmi:id="_acFiE2DAEeq8BovXV4ESzw" type="3010" element="_aUBLMGDAEeq8BovXV4ESzw">
886 <styles xmi:type="notation:FontStyle" xmi:id="_acFiFGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
887 <layoutConstraint xmi:type="notation:Location" xmi:id="_acFiFWDAEeq8BovXV4ESzw"/>
888 </children>
889 <children xmi:type="notation:Node" xmi:id="_acGJIGDAEeq8BovXV4ESzw" type="3010" element="_aUByQGDAEeq8BovXV4ESzw">
890 <styles xmi:type="notation:FontStyle" xmi:id="_acGJIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
891 <layoutConstraint xmi:type="notation:Location" xmi:id="_acGJImDAEeq8BovXV4ESzw"/>
892 </children>
893 <children xmi:type="notation:Node" xmi:id="_acGJI2DAEeq8BovXV4ESzw" type="3010" element="_aUCZUGDAEeq8BovXV4ESzw">
894 <styles xmi:type="notation:FontStyle" xmi:id="_acGJJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
895 <layoutConstraint xmi:type="notation:Location" xmi:id="_acGJJWDAEeq8BovXV4ESzw"/>
896 </children>
897 <children xmi:type="notation:Node" xmi:id="_acGwMGDAEeq8BovXV4ESzw" type="3010" element="_aUCZUmDAEeq8BovXV4ESzw">
898 <styles xmi:type="notation:FontStyle" xmi:id="_acGwMWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
899 <layoutConstraint xmi:type="notation:Location" xmi:id="_acGwMmDAEeq8BovXV4ESzw"/>
900 </children>
901 <children xmi:type="notation:Node" xmi:id="_acGwM2DAEeq8BovXV4ESzw" type="3010" element="_aUEOgGDAEeq8BovXV4ESzw">
902 <styles xmi:type="notation:FontStyle" xmi:id="_acGwNGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
903 <layoutConstraint xmi:type="notation:Location" xmi:id="_acGwNWDAEeq8BovXV4ESzw"/>
904 </children>
905 <children xmi:type="notation:Node" xmi:id="_acHXQGDAEeq8BovXV4ESzw" type="3010" element="_aUFcoGDAEeq8BovXV4ESzw">
906 <styles xmi:type="notation:FontStyle" xmi:id="_acHXQWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
907 <layoutConstraint xmi:type="notation:Location" xmi:id="_acHXQmDAEeq8BovXV4ESzw"/>
908 </children>
909 <children xmi:type="notation:Node" xmi:id="_acH-UGDAEeq8BovXV4ESzw" type="3010" element="_aUGDsGDAEeq8BovXV4ESzw">
910 <styles xmi:type="notation:FontStyle" xmi:id="_acH-UWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
911 <layoutConstraint xmi:type="notation:Location" xmi:id="_acH-UmDAEeq8BovXV4ESzw"/>
912 </children>
913 <children xmi:type="notation:Node" xmi:id="_acH-U2DAEeq8BovXV4ESzw" type="3010" element="_aUGqwGDAEeq8BovXV4ESzw">
914 <styles xmi:type="notation:FontStyle" xmi:id="_acH-VGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
915 <layoutConstraint xmi:type="notation:Location" xmi:id="_acH-VWDAEeq8BovXV4ESzw"/>
916 </children>
917 <children xmi:type="notation:Node" xmi:id="_acIlYGDAEeq8BovXV4ESzw" type="3010" element="_aUH44GDAEeq8BovXV4ESzw">
918 <styles xmi:type="notation:FontStyle" xmi:id="_acIlYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
919 <layoutConstraint xmi:type="notation:Location" xmi:id="_acIlYmDAEeq8BovXV4ESzw"/>
920 </children>
921 <children xmi:type="notation:Node" xmi:id="_acIlY2DAEeq8BovXV4ESzw" type="3010" element="_aUIf8GDAEeq8BovXV4ESzw">
922 <styles xmi:type="notation:FontStyle" xmi:id="_acIlZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
923 <layoutConstraint xmi:type="notation:Location" xmi:id="_acIlZWDAEeq8BovXV4ESzw"/>
924 </children>
925 <children xmi:type="notation:Node" xmi:id="_acJzgGDAEeq8BovXV4ESzw" type="3010" element="_aUJuEGDAEeq8BovXV4ESzw">
926 <styles xmi:type="notation:FontStyle" xmi:id="_acJzgWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
927 <layoutConstraint xmi:type="notation:Location" xmi:id="_acJzgmDAEeq8BovXV4ESzw"/>
928 </children>
929 <children xmi:type="notation:Node" xmi:id="_acJzg2DAEeq8BovXV4ESzw" type="3010" element="_aUKVIGDAEeq8BovXV4ESzw">
930 <styles xmi:type="notation:FontStyle" xmi:id="_acJzhGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
931 <layoutConstraint xmi:type="notation:Location" xmi:id="_acJzhWDAEeq8BovXV4ESzw"/>
932 </children>
933 <children xmi:type="notation:Node" xmi:id="_acKakGDAEeq8BovXV4ESzw" type="3010" element="_aUKVImDAEeq8BovXV4ESzw">
934 <styles xmi:type="notation:FontStyle" xmi:id="_acKakWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
935 <layoutConstraint xmi:type="notation:Location" xmi:id="_acKakmDAEeq8BovXV4ESzw"/>
936 </children>
937 <children xmi:type="notation:Node" xmi:id="_acKak2DAEeq8BovXV4ESzw" type="3010" element="_aUK8MWDAEeq8BovXV4ESzw">
938 <styles xmi:type="notation:FontStyle" xmi:id="_acKalGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
939 <layoutConstraint xmi:type="notation:Location" xmi:id="_acKalWDAEeq8BovXV4ESzw"/>
940 </children>
941 <children xmi:type="notation:Node" xmi:id="_acLBoGDAEeq8BovXV4ESzw" type="3010" element="_aULjQWDAEeq8BovXV4ESzw">
942 <styles xmi:type="notation:FontStyle" xmi:id="_acLBoWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
943 <layoutConstraint xmi:type="notation:Location" xmi:id="_acLBomDAEeq8BovXV4ESzw"/>
944 </children>
945 <children xmi:type="notation:Node" xmi:id="_acLBo2DAEeq8BovXV4ESzw" type="3010" element="_aUMKUWDAEeq8BovXV4ESzw">
946 <styles xmi:type="notation:FontStyle" xmi:id="_acLBpGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
947 <layoutConstraint xmi:type="notation:Location" xmi:id="_acLBpWDAEeq8BovXV4ESzw"/>
948 </children>
949 <children xmi:type="notation:Node" xmi:id="_acMPwGDAEeq8BovXV4ESzw" type="3010" element="_aUMxYmDAEeq8BovXV4ESzw">
950 <styles xmi:type="notation:FontStyle" xmi:id="_acMPwWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
951 <layoutConstraint xmi:type="notation:Location" xmi:id="_acMPwmDAEeq8BovXV4ESzw"/>
952 </children>
953 <children xmi:type="notation:Node" xmi:id="_acM20GDAEeq8BovXV4ESzw" type="3010" element="_aUNYcGDAEeq8BovXV4ESzw">
954 <styles xmi:type="notation:FontStyle" xmi:id="_acM20WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
955 <layoutConstraint xmi:type="notation:Location" xmi:id="_acM20mDAEeq8BovXV4ESzw"/>
956 </children>
957 <children xmi:type="notation:Node" xmi:id="_acNd4GDAEeq8BovXV4ESzw" type="3010" element="_aUP0sWDAEeq8BovXV4ESzw">
958 <styles xmi:type="notation:FontStyle" xmi:id="_acNd4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
959 <layoutConstraint xmi:type="notation:Location" xmi:id="_acNd4mDAEeq8BovXV4ESzw"/>
960 </children>
961 <children xmi:type="notation:Node" xmi:id="_acOE8GDAEeq8BovXV4ESzw" type="3010" element="_aURC0GDAEeq8BovXV4ESzw">
962 <styles xmi:type="notation:FontStyle" xmi:id="_acOE8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
963 <layoutConstraint xmi:type="notation:Location" xmi:id="_acOE8mDAEeq8BovXV4ESzw"/>
964 </children>
965 <children xmi:type="notation:Node" xmi:id="_acOE82DAEeq8BovXV4ESzw" type="3010" element="_aURp4GDAEeq8BovXV4ESzw">
966 <styles xmi:type="notation:FontStyle" xmi:id="_acOE9GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
967 <layoutConstraint xmi:type="notation:Location" xmi:id="_acOE9WDAEeq8BovXV4ESzw"/>
968 </children>
969 <children xmi:type="notation:Node" xmi:id="_acOsAGDAEeq8BovXV4ESzw" type="3010" element="_aUSQ8WDAEeq8BovXV4ESzw">
970 <styles xmi:type="notation:FontStyle" xmi:id="_acOsAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
971 <layoutConstraint xmi:type="notation:Location" xmi:id="_acOsAmDAEeq8BovXV4ESzw"/>
972 </children>
973 <children xmi:type="notation:Node" xmi:id="_acOsA2DAEeq8BovXV4ESzw" type="3010" element="_aUS4AGDAEeq8BovXV4ESzw">
974 <styles xmi:type="notation:FontStyle" xmi:id="_acOsBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
975 <layoutConstraint xmi:type="notation:Location" xmi:id="_acOsBWDAEeq8BovXV4ESzw"/>
976 </children>
977 <children xmi:type="notation:Node" xmi:id="_acP6I2DAEeq8BovXV4ESzw" type="3010" element="_aUUtMGDAEeq8BovXV4ESzw">
978 <styles xmi:type="notation:FontStyle" xmi:id="_acP6JGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
979 <layoutConstraint xmi:type="notation:Location" xmi:id="_acP6JWDAEeq8BovXV4ESzw"/>
980 </children>
981 <children xmi:type="notation:Node" xmi:id="_acRIQGDAEeq8BovXV4ESzw" type="3010" element="_aUWiYWDAEeq8BovXV4ESzw">
982 <styles xmi:type="notation:FontStyle" xmi:id="_acRIQWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
983 <layoutConstraint xmi:type="notation:Location" xmi:id="_acRIQmDAEeq8BovXV4ESzw"/>
984 </children>
985 <children xmi:type="notation:Node" xmi:id="_acRIQ2DAEeq8BovXV4ESzw" type="3010" element="_aUXJcWDAEeq8BovXV4ESzw">
986 <styles xmi:type="notation:FontStyle" xmi:id="_acRIRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
987 <layoutConstraint xmi:type="notation:Location" xmi:id="_acRIRWDAEeq8BovXV4ESzw"/>
988 </children>
989 <children xmi:type="notation:Node" xmi:id="_acRvUGDAEeq8BovXV4ESzw" type="3010" element="_aUXwgWDAEeq8BovXV4ESzw">
990 <styles xmi:type="notation:FontStyle" xmi:id="_acRvUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
991 <layoutConstraint xmi:type="notation:Location" xmi:id="_acRvUmDAEeq8BovXV4ESzw"/>
992 </children>
993 <children xmi:type="notation:Node" xmi:id="_acRvU2DAEeq8BovXV4ESzw" type="3010" element="_aUY-oWDAEeq8BovXV4ESzw">
994 <styles xmi:type="notation:FontStyle" xmi:id="_acRvVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
995 <layoutConstraint xmi:type="notation:Location" xmi:id="_acRvVWDAEeq8BovXV4ESzw"/>
996 </children>
997 <styles xmi:type="notation:SortingStyle" xmi:id="_aaiC4mDAEeq8BovXV4ESzw"/>
998 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaiC42DAEeq8BovXV4ESzw"/>
999 </children>
1000 <styles xmi:type="notation:ShapeStyle" xmi:id="_aag0xGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1001 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aag0xWDAEeq8BovXV4ESzw" x="8304" y="1392"/>
1002 </children>
1003 <children xmi:type="notation:Node" xmi:id="_aaip8GDAEeq8BovXV4ESzw" type="2003" element="_aHnt8WDAEeq8BovXV4ESzw">
1004 <children xmi:type="notation:Node" xmi:id="_aajRAGDAEeq8BovXV4ESzw" type="5007"/>
1005 <children xmi:type="notation:Node" xmi:id="_aaj4EGDAEeq8BovXV4ESzw" type="7004">
1006 <children xmi:type="notation:Node" xmi:id="_acTkgGDAEeq8BovXV4ESzw" type="3010" element="_aUaMwGDAEeq8BovXV4ESzw">
1007 <styles xmi:type="notation:FontStyle" xmi:id="_acTkgWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1008 <layoutConstraint xmi:type="notation:Location" xmi:id="_acTkgmDAEeq8BovXV4ESzw"/>
1009 </children>
1010 <children xmi:type="notation:Node" xmi:id="_acULkGDAEeq8BovXV4ESzw" type="3010" element="_aUba4GDAEeq8BovXV4ESzw">
1011 <styles xmi:type="notation:FontStyle" xmi:id="_acULkWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1012 <layoutConstraint xmi:type="notation:Location" xmi:id="_acULkmDAEeq8BovXV4ESzw"/>
1013 </children>
1014 <children xmi:type="notation:Node" xmi:id="_acULk2DAEeq8BovXV4ESzw" type="3010" element="_aUcB8WDAEeq8BovXV4ESzw">
1015 <styles xmi:type="notation:FontStyle" xmi:id="_acULlGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1016 <layoutConstraint xmi:type="notation:Location" xmi:id="_acULlWDAEeq8BovXV4ESzw"/>
1017 </children>
1018 <children xmi:type="notation:Node" xmi:id="_acUyoGDAEeq8BovXV4ESzw" type="3010" element="_aUdQEGDAEeq8BovXV4ESzw">
1019 <styles xmi:type="notation:FontStyle" xmi:id="_acUyoWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1020 <layoutConstraint xmi:type="notation:Location" xmi:id="_acUyomDAEeq8BovXV4ESzw"/>
1021 </children>
1022 <children xmi:type="notation:Node" xmi:id="_acUyo2DAEeq8BovXV4ESzw" type="3010" element="_aUd3IGDAEeq8BovXV4ESzw">
1023 <styles xmi:type="notation:FontStyle" xmi:id="_acUypGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1024 <layoutConstraint xmi:type="notation:Location" xmi:id="_acUypWDAEeq8BovXV4ESzw"/>
1025 </children>
1026 <children xmi:type="notation:Node" xmi:id="_acVZsGDAEeq8BovXV4ESzw" type="3010" element="_aUd3ImDAEeq8BovXV4ESzw">
1027 <styles xmi:type="notation:FontStyle" xmi:id="_acVZsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1028 <layoutConstraint xmi:type="notation:Location" xmi:id="_acVZsmDAEeq8BovXV4ESzw"/>
1029 </children>
1030 <styles xmi:type="notation:SortingStyle" xmi:id="_aaj4EWDAEeq8BovXV4ESzw"/>
1031 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaj4EmDAEeq8BovXV4ESzw"/>
1032 </children>
1033 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaip8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1034 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaip8mDAEeq8BovXV4ESzw" x="7944" y="1212"/>
1035 </children>
1036 <children xmi:type="notation:Node" xmi:id="_aaj4E2DAEeq8BovXV4ESzw" type="2003" element="_aHqxQGDAEeq8BovXV4ESzw">
1037 <children xmi:type="notation:Node" xmi:id="_aakfIGDAEeq8BovXV4ESzw" type="5007"/>
1038 <children xmi:type="notation:Node" xmi:id="_aalGMGDAEeq8BovXV4ESzw" type="7004">
1039 <children xmi:type="notation:Node" xmi:id="_acWn0GDAEeq8BovXV4ESzw" type="3010" element="_aUfsUWDAEeq8BovXV4ESzw">
1040 <styles xmi:type="notation:FontStyle" xmi:id="_acWn0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1041 <layoutConstraint xmi:type="notation:Location" xmi:id="_acWn0mDAEeq8BovXV4ESzw"/>
1042 </children>
1043 <children xmi:type="notation:Node" xmi:id="_acWn02DAEeq8BovXV4ESzw" type="3010" element="_aUgTYWDAEeq8BovXV4ESzw">
1044 <styles xmi:type="notation:FontStyle" xmi:id="_acWn1GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1045 <layoutConstraint xmi:type="notation:Location" xmi:id="_acWn1WDAEeq8BovXV4ESzw"/>
1046 </children>
1047 <children xmi:type="notation:Node" xmi:id="_acXO4GDAEeq8BovXV4ESzw" type="3010" element="_aUhhgGDAEeq8BovXV4ESzw">
1048 <styles xmi:type="notation:FontStyle" xmi:id="_acXO4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1049 <layoutConstraint xmi:type="notation:Location" xmi:id="_acXO4mDAEeq8BovXV4ESzw"/>
1050 </children>
1051 <children xmi:type="notation:Node" xmi:id="_acXO42DAEeq8BovXV4ESzw" type="3010" element="_aUjWsGDAEeq8BovXV4ESzw">
1052 <styles xmi:type="notation:FontStyle" xmi:id="_acXO5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1053 <layoutConstraint xmi:type="notation:Location" xmi:id="_acXO5WDAEeq8BovXV4ESzw"/>
1054 </children>
1055 <children xmi:type="notation:Node" xmi:id="_acX18GDAEeq8BovXV4ESzw" type="3010" element="_aUj9wWDAEeq8BovXV4ESzw">
1056 <styles xmi:type="notation:FontStyle" xmi:id="_acX18WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1057 <layoutConstraint xmi:type="notation:Location" xmi:id="_acX18mDAEeq8BovXV4ESzw"/>
1058 </children>
1059 <children xmi:type="notation:Node" xmi:id="_acYdAGDAEeq8BovXV4ESzw" type="3010" element="_aUlL4WDAEeq8BovXV4ESzw">
1060 <styles xmi:type="notation:FontStyle" xmi:id="_acYdAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1061 <layoutConstraint xmi:type="notation:Location" xmi:id="_acYdAmDAEeq8BovXV4ESzw"/>
1062 </children>
1063 <styles xmi:type="notation:SortingStyle" xmi:id="_aalGMWDAEeq8BovXV4ESzw"/>
1064 <styles xmi:type="notation:FilteringStyle" xmi:id="_aalGMmDAEeq8BovXV4ESzw"/>
1065 </children>
1066 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaj4FGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1067 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaj4FWDAEeq8BovXV4ESzw" x="8124" y="612"/>
1068 </children>
1069 <children xmi:type="notation:Node" xmi:id="_aalGM2DAEeq8BovXV4ESzw" type="2003" element="_aHr_YWDAEeq8BovXV4ESzw">
1070 <children xmi:type="notation:Node" xmi:id="_aaltQGDAEeq8BovXV4ESzw" type="5007"/>
1071 <children xmi:type="notation:Node" xmi:id="_aamUUGDAEeq8BovXV4ESzw" type="7004">
1072 <children xmi:type="notation:Node" xmi:id="_acYdA2DAEeq8BovXV4ESzw" type="3010" element="_aUly8GDAEeq8BovXV4ESzw">
1073 <styles xmi:type="notation:FontStyle" xmi:id="_acYdBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1074 <layoutConstraint xmi:type="notation:Location" xmi:id="_acYdBWDAEeq8BovXV4ESzw"/>
1075 </children>
1076 <styles xmi:type="notation:SortingStyle" xmi:id="_aamUUWDAEeq8BovXV4ESzw"/>
1077 <styles xmi:type="notation:FilteringStyle" xmi:id="_aamUUmDAEeq8BovXV4ESzw"/>
1078 </children>
1079 <styles xmi:type="notation:ShapeStyle" xmi:id="_aalGNGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1080 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aalGNWDAEeq8BovXV4ESzw" x="7872" y="828"/>
1081 </children>
1082 <children xmi:type="notation:Node" xmi:id="_aamUU2DAEeq8BovXV4ESzw" type="2003" element="_aHt0kGDAEeq8BovXV4ESzw">
1083 <children xmi:type="notation:Node" xmi:id="_aam7YGDAEeq8BovXV4ESzw" type="5007"/>
1084 <children xmi:type="notation:Node" xmi:id="_aanicGDAEeq8BovXV4ESzw" type="7004">
1085 <styles xmi:type="notation:SortingStyle" xmi:id="_aanicWDAEeq8BovXV4ESzw"/>
1086 <styles xmi:type="notation:FilteringStyle" xmi:id="_aanicmDAEeq8BovXV4ESzw"/>
1087 </children>
1088 <styles xmi:type="notation:ShapeStyle" xmi:id="_aamUVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1089 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aamUVWDAEeq8BovXV4ESzw" x="6936" y="168"/>
1090 </children>
1091 <children xmi:type="notation:Node" xmi:id="_aanic2DAEeq8BovXV4ESzw" type="2003" element="_aHvpwGDAEeq8BovXV4ESzw">
1092 <children xmi:type="notation:Node" xmi:id="_aaoJgGDAEeq8BovXV4ESzw" type="5007"/>
1093 <children xmi:type="notation:Node" xmi:id="_aaoJgWDAEeq8BovXV4ESzw" type="7004">
1094 <styles xmi:type="notation:SortingStyle" xmi:id="_aaoJgmDAEeq8BovXV4ESzw"/>
1095 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaoJg2DAEeq8BovXV4ESzw"/>
1096 </children>
1097 <styles xmi:type="notation:ShapeStyle" xmi:id="_aanidGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1098 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aanidWDAEeq8BovXV4ESzw" x="7116" y="168"/>
1099 </children>
1100 <children xmi:type="notation:Node" xmi:id="_aaoJhGDAEeq8BovXV4ESzw" type="2003" element="_aHwQ0WDAEeq8BovXV4ESzw">
1101 <children xmi:type="notation:Node" xmi:id="_aaowkGDAEeq8BovXV4ESzw" type="5007"/>
1102 <children xmi:type="notation:Node" xmi:id="_aaowkWDAEeq8BovXV4ESzw" type="7004">
1103 <styles xmi:type="notation:SortingStyle" xmi:id="_aaowkmDAEeq8BovXV4ESzw"/>
1104 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaowk2DAEeq8BovXV4ESzw"/>
1105 </children>
1106 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaoJhWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1107 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaoJhmDAEeq8BovXV4ESzw" x="6612" y="612"/>
1108 </children>
1109 <children xmi:type="notation:Node" xmi:id="_aaowlGDAEeq8BovXV4ESzw" type="2003" element="_aHxe8GDAEeq8BovXV4ESzw">
1110 <children xmi:type="notation:Node" xmi:id="_aapXoGDAEeq8BovXV4ESzw" type="5007"/>
1111 <children xmi:type="notation:Node" xmi:id="_aapXoWDAEeq8BovXV4ESzw" type="7004">
1112 <children xmi:type="notation:Node" xmi:id="_acZEEGDAEeq8BovXV4ESzw" type="3010" element="_aUmaAGDAEeq8BovXV4ESzw">
1113 <styles xmi:type="notation:FontStyle" xmi:id="_acZEEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1114 <layoutConstraint xmi:type="notation:Location" xmi:id="_acZEEmDAEeq8BovXV4ESzw"/>
1115 </children>
1116 <styles xmi:type="notation:SortingStyle" xmi:id="_aapXomDAEeq8BovXV4ESzw"/>
1117 <styles xmi:type="notation:FilteringStyle" xmi:id="_aapXo2DAEeq8BovXV4ESzw"/>
1118 </children>
1119 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaowlWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1120 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaowlmDAEeq8BovXV4ESzw" x="7392" y="1212"/>
1121 </children>
1122 <children xmi:type="notation:Node" xmi:id="_aap-sGDAEeq8BovXV4ESzw" type="2003" element="_aHytEGDAEeq8BovXV4ESzw">
1123 <children xmi:type="notation:Node" xmi:id="_aap-s2DAEeq8BovXV4ESzw" type="5007"/>
1124 <children xmi:type="notation:Node" xmi:id="_aaqlwGDAEeq8BovXV4ESzw" type="7004">
1125 <styles xmi:type="notation:SortingStyle" xmi:id="_aaqlwWDAEeq8BovXV4ESzw"/>
1126 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaqlwmDAEeq8BovXV4ESzw"/>
1127 </children>
1128 <styles xmi:type="notation:ShapeStyle" xmi:id="_aap-sWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1129 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aap-smDAEeq8BovXV4ESzw" x="6792" y="612"/>
1130 </children>
1131 <children xmi:type="notation:Node" xmi:id="_aaqlw2DAEeq8BovXV4ESzw" type="2003" element="_aHz7MGDAEeq8BovXV4ESzw">
1132 <children xmi:type="notation:Node" xmi:id="_aarM0GDAEeq8BovXV4ESzw" type="5007"/>
1133 <children xmi:type="notation:Node" xmi:id="_aarM0WDAEeq8BovXV4ESzw" type="7004">
1134 <styles xmi:type="notation:SortingStyle" xmi:id="_aarM0mDAEeq8BovXV4ESzw"/>
1135 <styles xmi:type="notation:FilteringStyle" xmi:id="_aarM02DAEeq8BovXV4ESzw"/>
1136 </children>
1137 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaqlxGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1138 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaqlxWDAEeq8BovXV4ESzw" x="7176" y="1212"/>
1139 </children>
1140 <children xmi:type="notation:Node" xmi:id="_aarM1GDAEeq8BovXV4ESzw" type="2003" element="_aJsxkGDAEeq8BovXV4ESzw">
1141 <children xmi:type="notation:Node" xmi:id="_aarz4GDAEeq8BovXV4ESzw" type="5007"/>
1142 <children xmi:type="notation:Node" xmi:id="_aarz4WDAEeq8BovXV4ESzw" type="7004">
1143 <styles xmi:type="notation:SortingStyle" xmi:id="_aarz4mDAEeq8BovXV4ESzw"/>
1144 <styles xmi:type="notation:FilteringStyle" xmi:id="_aarz42DAEeq8BovXV4ESzw"/>
1145 </children>
1146 <styles xmi:type="notation:ShapeStyle" xmi:id="_aarM1WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1147 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aarM1mDAEeq8BovXV4ESzw" x="9696" y="828"/>
1148 </children>
1149 <children xmi:type="notation:Node" xmi:id="_aarz5GDAEeq8BovXV4ESzw" type="2003" element="_aJt_sGDAEeq8BovXV4ESzw">
1150 <children xmi:type="notation:Node" xmi:id="_aasa8GDAEeq8BovXV4ESzw" type="5007"/>
1151 <children xmi:type="notation:Node" xmi:id="_aasa8WDAEeq8BovXV4ESzw" type="7004">
1152 <styles xmi:type="notation:SortingStyle" xmi:id="_aasa8mDAEeq8BovXV4ESzw"/>
1153 <styles xmi:type="notation:FilteringStyle" xmi:id="_aasa82DAEeq8BovXV4ESzw"/>
1154 </children>
1155 <styles xmi:type="notation:ShapeStyle" xmi:id="_aarz5WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1156 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aarz5mDAEeq8BovXV4ESzw" x="10104" y="828"/>
1157 </children>
1158 <children xmi:type="notation:Node" xmi:id="_aasa9GDAEeq8BovXV4ESzw" type="2003" element="_aJvN0GDAEeq8BovXV4ESzw">
1159 <children xmi:type="notation:Node" xmi:id="_aatCAGDAEeq8BovXV4ESzw" type="5007"/>
1160 <children xmi:type="notation:Node" xmi:id="_aatCAWDAEeq8BovXV4ESzw" type="7004">
1161 <children xmi:type="notation:Node" xmi:id="_acZrI2DAEeq8BovXV4ESzw" type="3010" element="_aW3q4GDAEeq8BovXV4ESzw">
1162 <styles xmi:type="notation:FontStyle" xmi:id="_acZrJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1163 <layoutConstraint xmi:type="notation:Location" xmi:id="_acZrJWDAEeq8BovXV4ESzw"/>
1164 </children>
1165 <styles xmi:type="notation:SortingStyle" xmi:id="_aatCAmDAEeq8BovXV4ESzw"/>
1166 <styles xmi:type="notation:FilteringStyle" xmi:id="_aatCA2DAEeq8BovXV4ESzw"/>
1167 </children>
1168 <styles xmi:type="notation:ShapeStyle" xmi:id="_aasa9WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1169 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aasa9mDAEeq8BovXV4ESzw" x="9144" y="828"/>
1170 </children>
1171 <children xmi:type="notation:Node" xmi:id="_aatpEGDAEeq8BovXV4ESzw" type="2003" element="_aJwb8GDAEeq8BovXV4ESzw">
1172 <children xmi:type="notation:Node" xmi:id="_aauQIGDAEeq8BovXV4ESzw" type="5007"/>
1173 <children xmi:type="notation:Node" xmi:id="_aauQIWDAEeq8BovXV4ESzw" type="7004">
1174 <styles xmi:type="notation:SortingStyle" xmi:id="_aauQImDAEeq8BovXV4ESzw"/>
1175 <styles xmi:type="notation:FilteringStyle" xmi:id="_aauQI2DAEeq8BovXV4ESzw"/>
1176 </children>
1177 <styles xmi:type="notation:ShapeStyle" xmi:id="_aatpEWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1178 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aatpEmDAEeq8BovXV4ESzw" x="9444" y="828"/>
1179 </children>
1180 <children xmi:type="notation:Node" xmi:id="_aau3MGDAEeq8BovXV4ESzw" type="2003" element="_aJxqEGDAEeq8BovXV4ESzw">
1181 <children xmi:type="notation:Node" xmi:id="_aau3M2DAEeq8BovXV4ESzw" type="5007"/>
1182 <children xmi:type="notation:Node" xmi:id="_aaveQGDAEeq8BovXV4ESzw" type="7004">
1183 <styles xmi:type="notation:SortingStyle" xmi:id="_aaveQWDAEeq8BovXV4ESzw"/>
1184 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaveQmDAEeq8BovXV4ESzw"/>
1185 </children>
1186 <styles xmi:type="notation:ShapeStyle" xmi:id="_aau3MWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1187 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aau3MmDAEeq8BovXV4ESzw" x="9924" y="828"/>
1188 </children>
1189 <children xmi:type="notation:Node" xmi:id="_aaveQ2DAEeq8BovXV4ESzw" type="2003" element="_aJzfQGDAEeq8BovXV4ESzw">
1190 <children xmi:type="notation:Node" xmi:id="_aawFUGDAEeq8BovXV4ESzw" type="5007"/>
1191 <children xmi:type="notation:Node" xmi:id="_aawFUWDAEeq8BovXV4ESzw" type="7004">
1192 <children xmi:type="notation:Node" xmi:id="_acaSMGDAEeq8BovXV4ESzw" type="3010" element="_aW5gEGDAEeq8BovXV4ESzw">
1193 <styles xmi:type="notation:FontStyle" xmi:id="_acaSMWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1194 <layoutConstraint xmi:type="notation:Location" xmi:id="_acaSMmDAEeq8BovXV4ESzw"/>
1195 </children>
1196 <styles xmi:type="notation:SortingStyle" xmi:id="_aawFUmDAEeq8BovXV4ESzw"/>
1197 <styles xmi:type="notation:FilteringStyle" xmi:id="_aawFU2DAEeq8BovXV4ESzw"/>
1198 </children>
1199 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaveRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1200 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaveRWDAEeq8BovXV4ESzw" x="8904" y="828"/>
1201 </children>
1202 <children xmi:type="notation:Node" xmi:id="_aawFVGDAEeq8BovXV4ESzw" type="2003" element="_aJ0tYGDAEeq8BovXV4ESzw">
1203 <children xmi:type="notation:Node" xmi:id="_aawsYGDAEeq8BovXV4ESzw" type="5007"/>
1204 <children xmi:type="notation:Node" xmi:id="_aawsYWDAEeq8BovXV4ESzw" type="7004">
1205 <styles xmi:type="notation:SortingStyle" xmi:id="_aawsYmDAEeq8BovXV4ESzw"/>
1206 <styles xmi:type="notation:FilteringStyle" xmi:id="_aawsY2DAEeq8BovXV4ESzw"/>
1207 </children>
1208 <styles xmi:type="notation:ShapeStyle" xmi:id="_aawFVWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1209 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aawFVmDAEeq8BovXV4ESzw" x="8544" y="1044"/>
1210 </children>
1211 <children xmi:type="notation:Node" xmi:id="_aawsZGDAEeq8BovXV4ESzw" type="2003" element="_aJ17gGDAEeq8BovXV4ESzw">
1212 <children xmi:type="notation:Node" xmi:id="_aaxTcGDAEeq8BovXV4ESzw" type="5007"/>
1213 <children xmi:type="notation:Node" xmi:id="_aaxTcWDAEeq8BovXV4ESzw" type="7004">
1214 <styles xmi:type="notation:SortingStyle" xmi:id="_aaxTcmDAEeq8BovXV4ESzw"/>
1215 <styles xmi:type="notation:FilteringStyle" xmi:id="_aaxTc2DAEeq8BovXV4ESzw"/>
1216 </children>
1217 <styles xmi:type="notation:ShapeStyle" xmi:id="_aawsZWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1218 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aawsZmDAEeq8BovXV4ESzw" x="8364" y="1044"/>
1219 </children>
1220 <children xmi:type="notation:Node" xmi:id="_aaxTdGDAEeq8BovXV4ESzw" type="2003" element="_aJ3JoGDAEeq8BovXV4ESzw">
1221 <children xmi:type="notation:Node" xmi:id="_aax6gGDAEeq8BovXV4ESzw" type="5007"/>
1222 <children xmi:type="notation:Node" xmi:id="_aax6gWDAEeq8BovXV4ESzw" type="7004">
1223 <styles xmi:type="notation:SortingStyle" xmi:id="_aax6gmDAEeq8BovXV4ESzw"/>
1224 <styles xmi:type="notation:FilteringStyle" xmi:id="_aax6g2DAEeq8BovXV4ESzw"/>
1225 </children>
1226 <styles xmi:type="notation:ShapeStyle" xmi:id="_aaxTdWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1227 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aaxTdmDAEeq8BovXV4ESzw" x="7944" y="1392"/>
1228 </children>
1229 <children xmi:type="notation:Node" xmi:id="_aax6hGDAEeq8BovXV4ESzw" type="2003" element="_aJ4XwGDAEeq8BovXV4ESzw">
1230 <children xmi:type="notation:Node" xmi:id="_aayhkGDAEeq8BovXV4ESzw" type="5007"/>
1231 <children xmi:type="notation:Node" xmi:id="_aayhkWDAEeq8BovXV4ESzw" type="7004">
1232 <styles xmi:type="notation:SortingStyle" xmi:id="_aayhkmDAEeq8BovXV4ESzw"/>
1233 <styles xmi:type="notation:FilteringStyle" xmi:id="_aayhk2DAEeq8BovXV4ESzw"/>
1234 </children>
1235 <styles xmi:type="notation:ShapeStyle" xmi:id="_aax6hWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1236 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aax6hmDAEeq8BovXV4ESzw" x="7764" y="1392"/>
1237 </children>
1238 <children xmi:type="notation:Node" xmi:id="_aayhlGDAEeq8BovXV4ESzw" type="2003" element="_aJ5l4GDAEeq8BovXV4ESzw">
1239 <children xmi:type="notation:Node" xmi:id="_aazIoGDAEeq8BovXV4ESzw" type="5007"/>
1240 <children xmi:type="notation:Node" xmi:id="_aazIoWDAEeq8BovXV4ESzw" type="7004">
1241 <styles xmi:type="notation:SortingStyle" xmi:id="_aazIomDAEeq8BovXV4ESzw"/>
1242 <styles xmi:type="notation:FilteringStyle" xmi:id="_aazIo2DAEeq8BovXV4ESzw"/>
1243 </children>
1244 <styles xmi:type="notation:ShapeStyle" xmi:id="_aayhlWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1245 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aayhlmDAEeq8BovXV4ESzw" x="8124" y="1392"/>
1246 </children>
1247 <children xmi:type="notation:Node" xmi:id="_aazIpGDAEeq8BovXV4ESzw" type="2003" element="_aJ60AGDAEeq8BovXV4ESzw">
1248 <children xmi:type="notation:Node" xmi:id="_aazvsGDAEeq8BovXV4ESzw" type="5007"/>
1249 <children xmi:type="notation:Node" xmi:id="_aa0WwGDAEeq8BovXV4ESzw" type="7004">
1250 <children xmi:type="notation:Node" xmi:id="_aca5QGDAEeq8BovXV4ESzw" type="3010" element="_aW9KcGDAEeq8BovXV4ESzw">
1251 <styles xmi:type="notation:FontStyle" xmi:id="_aca5QWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1252 <layoutConstraint xmi:type="notation:Location" xmi:id="_aca5QmDAEeq8BovXV4ESzw"/>
1253 </children>
1254 <children xmi:type="notation:Node" xmi:id="_aca5Q2DAEeq8BovXV4ESzw" type="3010" element="_aW9xgGDAEeq8BovXV4ESzw">
1255 <styles xmi:type="notation:FontStyle" xmi:id="_aca5RGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1256 <layoutConstraint xmi:type="notation:Location" xmi:id="_aca5RWDAEeq8BovXV4ESzw"/>
1257 </children>
1258 <styles xmi:type="notation:SortingStyle" xmi:id="_aa0WwWDAEeq8BovXV4ESzw"/>
1259 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa0WwmDAEeq8BovXV4ESzw"/>
1260 </children>
1261 <styles xmi:type="notation:ShapeStyle" xmi:id="_aazIpWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1262 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aazIpmDAEeq8BovXV4ESzw" x="10692" y="156"/>
1263 </children>
1264 <children xmi:type="notation:Node" xmi:id="_aa0Ww2DAEeq8BovXV4ESzw" type="2003" element="_aJ8pMGDAEeq8BovXV4ESzw">
1265 <children xmi:type="notation:Node" xmi:id="_aa090GDAEeq8BovXV4ESzw" type="5007"/>
1266 <children xmi:type="notation:Node" xmi:id="_aa1k4GDAEeq8BovXV4ESzw" type="7004">
1267 <styles xmi:type="notation:SortingStyle" xmi:id="_aa1k4WDAEeq8BovXV4ESzw"/>
1268 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa1k4mDAEeq8BovXV4ESzw"/>
1269 </children>
1270 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa0WxGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1271 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa0WxWDAEeq8BovXV4ESzw" x="10560"/>
1272 </children>
1273 <children xmi:type="notation:Node" xmi:id="_aa1k42DAEeq8BovXV4ESzw" type="2003" element="_aJ93UGDAEeq8BovXV4ESzw">
1274 <children xmi:type="notation:Node" xmi:id="_aa2L8GDAEeq8BovXV4ESzw" type="5007"/>
1275 <children xmi:type="notation:Node" xmi:id="_aa2zAGDAEeq8BovXV4ESzw" type="7004">
1276 <children xmi:type="notation:Node" xmi:id="_acbgUGDAEeq8BovXV4ESzw" type="3010" element="_aW-_oGDAEeq8BovXV4ESzw">
1277 <styles xmi:type="notation:FontStyle" xmi:id="_acbgUWDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1278 <layoutConstraint xmi:type="notation:Location" xmi:id="_acbgUmDAEeq8BovXV4ESzw"/>
1279 </children>
1280 <styles xmi:type="notation:SortingStyle" xmi:id="_aa2zAWDAEeq8BovXV4ESzw"/>
1281 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa2zAmDAEeq8BovXV4ESzw"/>
1282 </children>
1283 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa1k5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1284 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa1k5WDAEeq8BovXV4ESzw" x="10332" y="156"/>
1285 </children>
1286 <children xmi:type="notation:Node" xmi:id="_aa2zA2DAEeq8BovXV4ESzw" type="2003" element="_aJ_FcGDAEeq8BovXV4ESzw">
1287 <children xmi:type="notation:Node" xmi:id="_aa2zBmDAEeq8BovXV4ESzw" type="5007"/>
1288 <children xmi:type="notation:Node" xmi:id="_aa3aEGDAEeq8BovXV4ESzw" type="7004">
1289 <children xmi:type="notation:Node" xmi:id="_accHYGDAEeq8BovXV4ESzw" type="3010" element="_aW_msGDAEeq8BovXV4ESzw">
1290 <styles xmi:type="notation:FontStyle" xmi:id="_accHYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1291 <layoutConstraint xmi:type="notation:Location" xmi:id="_accHYmDAEeq8BovXV4ESzw"/>
1292 </children>
1293 <styles xmi:type="notation:SortingStyle" xmi:id="_aa3aEWDAEeq8BovXV4ESzw"/>
1294 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa3aEmDAEeq8BovXV4ESzw"/>
1295 </children>
1296 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa2zBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1297 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa2zBWDAEeq8BovXV4ESzw" x="12960" y="156"/>
1298 </children>
1299 <children xmi:type="notation:Node" xmi:id="_aa3aE2DAEeq8BovXV4ESzw" type="2003" element="_aKATkGDAEeq8BovXV4ESzw">
1300 <children xmi:type="notation:Node" xmi:id="_aa3aFmDAEeq8BovXV4ESzw" type="5007"/>
1301 <children xmi:type="notation:Node" xmi:id="_aa4BIGDAEeq8BovXV4ESzw" type="7004">
1302 <children xmi:type="notation:Node" xmi:id="_accHY2DAEeq8BovXV4ESzw" type="3010" element="_aXA00GDAEeq8BovXV4ESzw">
1303 <styles xmi:type="notation:FontStyle" xmi:id="_accHZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1304 <layoutConstraint xmi:type="notation:Location" xmi:id="_accHZWDAEeq8BovXV4ESzw"/>
1305 </children>
1306 <children xmi:type="notation:Node" xmi:id="_accHZmDAEeq8BovXV4ESzw" type="3010" element="_aXBb4WDAEeq8BovXV4ESzw">
1307 <styles xmi:type="notation:FontStyle" xmi:id="_accHZ2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1308 <layoutConstraint xmi:type="notation:Location" xmi:id="_accHaGDAEeq8BovXV4ESzw"/>
1309 </children>
1310 <styles xmi:type="notation:SortingStyle" xmi:id="_aa4BIWDAEeq8BovXV4ESzw"/>
1311 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa4BImDAEeq8BovXV4ESzw"/>
1312 </children>
1313 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa3aFGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1314 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa3aFWDAEeq8BovXV4ESzw" x="12168"/>
1315 </children>
1316 <children xmi:type="notation:Node" xmi:id="_aa4BI2DAEeq8BovXV4ESzw" type="2003" element="_aKBhsGDAEeq8BovXV4ESzw">
1317 <children xmi:type="notation:Node" xmi:id="_aa4oMGDAEeq8BovXV4ESzw" type="5007"/>
1318 <children xmi:type="notation:Node" xmi:id="_aa5PQGDAEeq8BovXV4ESzw" type="7004">
1319 <children xmi:type="notation:Node" xmi:id="_accucGDAEeq8BovXV4ESzw" type="3010" element="_aX6zwGDAEeq8BovXV4ESzw">
1320 <styles xmi:type="notation:FontStyle" xmi:id="_accucWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1321 <layoutConstraint xmi:type="notation:Location" xmi:id="_accucmDAEeq8BovXV4ESzw"/>
1322 </children>
1323 <children xmi:type="notation:Node" xmi:id="_accuc2DAEeq8BovXV4ESzw" type="3010" element="_aX7a0GDAEeq8BovXV4ESzw">
1324 <styles xmi:type="notation:FontStyle" xmi:id="_accudGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1325 <layoutConstraint xmi:type="notation:Location" xmi:id="_accudWDAEeq8BovXV4ESzw"/>
1326 </children>
1327 <styles xmi:type="notation:SortingStyle" xmi:id="_aa5PQWDAEeq8BovXV4ESzw"/>
1328 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa5PQmDAEeq8BovXV4ESzw"/>
1329 </children>
1330 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa4BJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1331 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa4BJWDAEeq8BovXV4ESzw" x="3384"/>
1332 </children>
1333 <children xmi:type="notation:Node" xmi:id="_aa5PQ2DAEeq8BovXV4ESzw" type="2003" element="_aKCv0GDAEeq8BovXV4ESzw">
1334 <children xmi:type="notation:Node" xmi:id="_aa52UGDAEeq8BovXV4ESzw" type="5007"/>
1335 <children xmi:type="notation:Node" xmi:id="_aa52UWDAEeq8BovXV4ESzw" type="7004">
1336 <styles xmi:type="notation:SortingStyle" xmi:id="_aa52UmDAEeq8BovXV4ESzw"/>
1337 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa52U2DAEeq8BovXV4ESzw"/>
1338 </children>
1339 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa5PRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1340 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa5PRWDAEeq8BovXV4ESzw" x="12540" y="156"/>
1341 </children>
1342 <children xmi:type="notation:Node" xmi:id="_aa6dYGDAEeq8BovXV4ESzw" type="2003" element="_aKD98GDAEeq8BovXV4ESzw">
1343 <children xmi:type="notation:Node" xmi:id="_aa6dY2DAEeq8BovXV4ESzw" type="5007"/>
1344 <children xmi:type="notation:Node" xmi:id="_aa7EcGDAEeq8BovXV4ESzw" type="7004">
1345 <children xmi:type="notation:Node" xmi:id="_acdVgGDAEeq8BovXV4ESzw" type="3010" element="_aXCqAGDAEeq8BovXV4ESzw">
1346 <styles xmi:type="notation:FontStyle" xmi:id="_acdVgWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1347 <layoutConstraint xmi:type="notation:Location" xmi:id="_acdVgmDAEeq8BovXV4ESzw"/>
1348 </children>
1349 <styles xmi:type="notation:SortingStyle" xmi:id="_aa7EcWDAEeq8BovXV4ESzw"/>
1350 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa7EcmDAEeq8BovXV4ESzw"/>
1351 </children>
1352 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa6dYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1353 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa6dYmDAEeq8BovXV4ESzw" x="11820" y="156"/>
1354 </children>
1355 <children xmi:type="notation:Node" xmi:id="_aa7Ec2DAEeq8BovXV4ESzw" type="2003" element="_aKFMEGDAEeq8BovXV4ESzw">
1356 <children xmi:type="notation:Node" xmi:id="_aa7rgGDAEeq8BovXV4ESzw" type="5007"/>
1357 <children xmi:type="notation:Node" xmi:id="_aa7rgWDAEeq8BovXV4ESzw" type="7004">
1358 <children xmi:type="notation:Node" xmi:id="_acdVg2DAEeq8BovXV4ESzw" type="3010" element="_aX8B4GDAEeq8BovXV4ESzw">
1359 <styles xmi:type="notation:FontStyle" xmi:id="_acdVhGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1360 <layoutConstraint xmi:type="notation:Location" xmi:id="_acdVhWDAEeq8BovXV4ESzw"/>
1361 </children>
1362 <children xmi:type="notation:Node" xmi:id="_acd8kGDAEeq8BovXV4ESzw" type="3010" element="_aX8o8GDAEeq8BovXV4ESzw">
1363 <styles xmi:type="notation:FontStyle" xmi:id="_acd8kWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1364 <layoutConstraint xmi:type="notation:Location" xmi:id="_acd8kmDAEeq8BovXV4ESzw"/>
1365 </children>
1366 <children xmi:type="notation:Node" xmi:id="_acd8k2DAEeq8BovXV4ESzw" type="3010" element="_aX8o8mDAEeq8BovXV4ESzw">
1367 <styles xmi:type="notation:FontStyle" xmi:id="_acd8lGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1368 <layoutConstraint xmi:type="notation:Location" xmi:id="_acd8lWDAEeq8BovXV4ESzw"/>
1369 </children>
1370 <styles xmi:type="notation:SortingStyle" xmi:id="_aa7rgmDAEeq8BovXV4ESzw"/>
1371 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa7rg2DAEeq8BovXV4ESzw"/>
1372 </children>
1373 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa7EdGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1374 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa7EdWDAEeq8BovXV4ESzw" x="3624"/>
1375 </children>
1376 <children xmi:type="notation:Node" xmi:id="_aa7rhGDAEeq8BovXV4ESzw" type="2003" element="_aKFzIWDAEeq8BovXV4ESzw">
1377 <children xmi:type="notation:Node" xmi:id="_aa8SkGDAEeq8BovXV4ESzw" type="5007"/>
1378 <children xmi:type="notation:Node" xmi:id="_aa85oGDAEeq8BovXV4ESzw" type="7004">
1379 <children xmi:type="notation:Node" xmi:id="_acd8lmDAEeq8BovXV4ESzw" type="3010" element="_aXD4IGDAEeq8BovXV4ESzw">
1380 <styles xmi:type="notation:FontStyle" xmi:id="_acd8l2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1381 <layoutConstraint xmi:type="notation:Location" xmi:id="_acd8mGDAEeq8BovXV4ESzw"/>
1382 </children>
1383 <children xmi:type="notation:Node" xmi:id="_acejoGDAEeq8BovXV4ESzw" type="3010" element="_aXEfMGDAEeq8BovXV4ESzw">
1384 <styles xmi:type="notation:FontStyle" xmi:id="_acejoWDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1385 <layoutConstraint xmi:type="notation:Location" xmi:id="_acejomDAEeq8BovXV4ESzw"/>
1386 </children>
1387 <children xmi:type="notation:Node" xmi:id="_acejo2DAEeq8BovXV4ESzw" type="3010" element="_aXG7cWDAEeq8BovXV4ESzw">
1388 <styles xmi:type="notation:FontStyle" xmi:id="_acejpGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1389 <layoutConstraint xmi:type="notation:Location" xmi:id="_acejpWDAEeq8BovXV4ESzw"/>
1390 </children>
1391 <children xmi:type="notation:Node" xmi:id="_acejpmDAEeq8BovXV4ESzw" type="3010" element="_aXHigWDAEeq8BovXV4ESzw">
1392 <styles xmi:type="notation:FontStyle" xmi:id="_acejp2DAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1393 <layoutConstraint xmi:type="notation:Location" xmi:id="_acejqGDAEeq8BovXV4ESzw"/>
1394 </children>
1395 <styles xmi:type="notation:SortingStyle" xmi:id="_aa85oWDAEeq8BovXV4ESzw"/>
1396 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa85omDAEeq8BovXV4ESzw"/>
1397 </children>
1398 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa7rhWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1399 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa7rhmDAEeq8BovXV4ESzw" x="10980" y="156"/>
1400 </children>
1401 <children xmi:type="notation:Node" xmi:id="_aa85o2DAEeq8BovXV4ESzw" type="2003" element="_aKHBQWDAEeq8BovXV4ESzw">
1402 <children xmi:type="notation:Node" xmi:id="_aa9gsGDAEeq8BovXV4ESzw" type="5007"/>
1403 <children xmi:type="notation:Node" xmi:id="_aa9gsWDAEeq8BovXV4ESzw" type="7004">
1404 <children xmi:type="notation:Node" xmi:id="_acfKsGDAEeq8BovXV4ESzw" type="3010" element="_aX9QAWDAEeq8BovXV4ESzw">
1405 <styles xmi:type="notation:FontStyle" xmi:id="_acfKsWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1406 <layoutConstraint xmi:type="notation:Location" xmi:id="_acfKsmDAEeq8BovXV4ESzw"/>
1407 </children>
1408 <children xmi:type="notation:Node" xmi:id="_acfKs2DAEeq8BovXV4ESzw" type="3010" element="_aX93EGDAEeq8BovXV4ESzw">
1409 <styles xmi:type="notation:FontStyle" xmi:id="_acfKtGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1410 <layoutConstraint xmi:type="notation:Location" xmi:id="_acfKtWDAEeq8BovXV4ESzw"/>
1411 </children>
1412 <children xmi:type="notation:Node" xmi:id="_acfKtmDAEeq8BovXV4ESzw" type="3010" element="_aX93EmDAEeq8BovXV4ESzw">
1413 <styles xmi:type="notation:FontStyle" xmi:id="_acfKt2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1414 <layoutConstraint xmi:type="notation:Location" xmi:id="_acfKuGDAEeq8BovXV4ESzw"/>
1415 </children>
1416 <children xmi:type="notation:Node" xmi:id="_acfxwGDAEeq8BovXV4ESzw" type="3010" element="_aX-eIGDAEeq8BovXV4ESzw">
1417 <styles xmi:type="notation:FontStyle" xmi:id="_acfxwWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1418 <layoutConstraint xmi:type="notation:Location" xmi:id="_acfxwmDAEeq8BovXV4ESzw"/>
1419 </children>
1420 <children xmi:type="notation:Node" xmi:id="_acgY0GDAEeq8BovXV4ESzw" type="3010" element="_aX_FMGDAEeq8BovXV4ESzw">
1421 <styles xmi:type="notation:FontStyle" xmi:id="_acgY0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1422 <layoutConstraint xmi:type="notation:Location" xmi:id="_acgY0mDAEeq8BovXV4ESzw"/>
1423 </children>
1424 <styles xmi:type="notation:SortingStyle" xmi:id="_aa9gsmDAEeq8BovXV4ESzw"/>
1425 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa9gs2DAEeq8BovXV4ESzw"/>
1426 </children>
1427 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa85pGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1428 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa85pWDAEeq8BovXV4ESzw" x="3972"/>
1429 </children>
1430 <children xmi:type="notation:Node" xmi:id="_aa-HwGDAEeq8BovXV4ESzw" type="2003" element="_aKIPYGDAEeq8BovXV4ESzw">
1431 <children xmi:type="notation:Node" xmi:id="_aa-u0GDAEeq8BovXV4ESzw" type="5007"/>
1432 <children xmi:type="notation:Node" xmi:id="_aa-u0WDAEeq8BovXV4ESzw" type="7004">
1433 <styles xmi:type="notation:SortingStyle" xmi:id="_aa-u0mDAEeq8BovXV4ESzw"/>
1434 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa-u02DAEeq8BovXV4ESzw"/>
1435 </children>
1436 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa-HwWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1437 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa-HwmDAEeq8BovXV4ESzw" x="12744" y="156"/>
1438 </children>
1439 <children xmi:type="notation:Node" xmi:id="_aa-u1GDAEeq8BovXV4ESzw" type="2003" element="_aKJdgGDAEeq8BovXV4ESzw">
1440 <children xmi:type="notation:Node" xmi:id="_aa_V4GDAEeq8BovXV4ESzw" type="5007"/>
1441 <children xmi:type="notation:Node" xmi:id="_aa_V4WDAEeq8BovXV4ESzw" type="7004">
1442 <styles xmi:type="notation:SortingStyle" xmi:id="_aa_V4mDAEeq8BovXV4ESzw"/>
1443 <styles xmi:type="notation:FilteringStyle" xmi:id="_aa_V42DAEeq8BovXV4ESzw"/>
1444 </children>
1445 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa-u1WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1446 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa-u1mDAEeq8BovXV4ESzw" x="11640" y="156"/>
1447 </children>
1448 <children xmi:type="notation:Node" xmi:id="_aa_88GDAEeq8BovXV4ESzw" type="2003" element="_aKKroGDAEeq8BovXV4ESzw">
1449 <children xmi:type="notation:Node" xmi:id="_aa_882DAEeq8BovXV4ESzw" type="5007"/>
1450 <children xmi:type="notation:Node" xmi:id="_abAkAGDAEeq8BovXV4ESzw" type="7004">
1451 <children xmi:type="notation:Node" xmi:id="_acg_4GDAEeq8BovXV4ESzw" type="3010" element="_aXJXsGDAEeq8BovXV4ESzw">
1452 <styles xmi:type="notation:FontStyle" xmi:id="_acg_4WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1453 <layoutConstraint xmi:type="notation:Location" xmi:id="_acg_4mDAEeq8BovXV4ESzw"/>
1454 </children>
1455 <children xmi:type="notation:Node" xmi:id="_acg_42DAEeq8BovXV4ESzw" type="3010" element="_aXJ-wWDAEeq8BovXV4ESzw">
1456 <styles xmi:type="notation:FontStyle" xmi:id="_acg_5GDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1457 <layoutConstraint xmi:type="notation:Location" xmi:id="_acg_5WDAEeq8BovXV4ESzw"/>
1458 </children>
1459 <styles xmi:type="notation:SortingStyle" xmi:id="_abAkAWDAEeq8BovXV4ESzw"/>
1460 <styles xmi:type="notation:FilteringStyle" xmi:id="_abAkAmDAEeq8BovXV4ESzw"/>
1461 </children>
1462 <styles xmi:type="notation:ShapeStyle" xmi:id="_aa_88WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1463 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aa_88mDAEeq8BovXV4ESzw" x="5244" y="1392"/>
1464 </children>
1465 <children xmi:type="notation:Node" xmi:id="_abAkA2DAEeq8BovXV4ESzw" type="2003" element="_aKL5wGDAEeq8BovXV4ESzw">
1466 <children xmi:type="notation:Node" xmi:id="_abBLEGDAEeq8BovXV4ESzw" type="5007"/>
1467 <children xmi:type="notation:Node" xmi:id="_abByIGDAEeq8BovXV4ESzw" type="7004">
1468 <styles xmi:type="notation:SortingStyle" xmi:id="_abByIWDAEeq8BovXV4ESzw"/>
1469 <styles xmi:type="notation:FilteringStyle" xmi:id="_abByImDAEeq8BovXV4ESzw"/>
1470 </children>
1471 <styles xmi:type="notation:ShapeStyle" xmi:id="_abAkBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1472 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abAkBWDAEeq8BovXV4ESzw" x="5940" y="1212"/>
1473 </children>
1474 <children xmi:type="notation:Node" xmi:id="_abCZMGDAEeq8BovXV4ESzw" type="2003" element="_aKNH4GDAEeq8BovXV4ESzw">
1475 <children xmi:type="notation:Node" xmi:id="_abDAQGDAEeq8BovXV4ESzw" type="5007"/>
1476 <children xmi:type="notation:Node" xmi:id="_abDAQWDAEeq8BovXV4ESzw" type="7004">
1477 <styles xmi:type="notation:SortingStyle" xmi:id="_abDAQmDAEeq8BovXV4ESzw"/>
1478 <styles xmi:type="notation:FilteringStyle" xmi:id="_abDAQ2DAEeq8BovXV4ESzw"/>
1479 </children>
1480 <styles xmi:type="notation:ShapeStyle" xmi:id="_abCZMWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1481 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abCZMmDAEeq8BovXV4ESzw" x="6792" y="1392"/>
1482 </children>
1483 <children xmi:type="notation:Node" xmi:id="_abDARGDAEeq8BovXV4ESzw" type="2003" element="_aKOWAGDAEeq8BovXV4ESzw">
1484 <children xmi:type="notation:Node" xmi:id="_abDnUGDAEeq8BovXV4ESzw" type="5007"/>
1485 <children xmi:type="notation:Node" xmi:id="_abDnUWDAEeq8BovXV4ESzw" type="7004">
1486 <children xmi:type="notation:Node" xmi:id="_achm8GDAEeq8BovXV4ESzw" type="3010" element="_aXLz8GDAEeq8BovXV4ESzw">
1487 <styles xmi:type="notation:FontStyle" xmi:id="_achm8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1488 <layoutConstraint xmi:type="notation:Location" xmi:id="_achm8mDAEeq8BovXV4ESzw"/>
1489 </children>
1490 <children xmi:type="notation:Node" xmi:id="_aciOAGDAEeq8BovXV4ESzw" type="3010" element="_aXMbAGDAEeq8BovXV4ESzw">
1491 <styles xmi:type="notation:FontStyle" xmi:id="_aciOAWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1492 <layoutConstraint xmi:type="notation:Location" xmi:id="_aciOAmDAEeq8BovXV4ESzw"/>
1493 </children>
1494 <children xmi:type="notation:Node" xmi:id="_aciOA2DAEeq8BovXV4ESzw" type="3010" element="_aXNCEGDAEeq8BovXV4ESzw">
1495 <styles xmi:type="notation:FontStyle" xmi:id="_aciOBGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1496 <layoutConstraint xmi:type="notation:Location" xmi:id="_aciOBWDAEeq8BovXV4ESzw"/>
1497 </children>
1498 <styles xmi:type="notation:SortingStyle" xmi:id="_abDnUmDAEeq8BovXV4ESzw"/>
1499 <styles xmi:type="notation:FilteringStyle" xmi:id="_abDnU2DAEeq8BovXV4ESzw"/>
1500 </children>
1501 <styles xmi:type="notation:ShapeStyle" xmi:id="_abDARWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1502 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abDARmDAEeq8BovXV4ESzw" x="4428" y="1392"/>
1503 </children>
1504 <children xmi:type="notation:Node" xmi:id="_abEOYGDAEeq8BovXV4ESzw" type="2003" element="_aKPkIGDAEeq8BovXV4ESzw">
1505 <children xmi:type="notation:Node" xmi:id="_abE1cGDAEeq8BovXV4ESzw" type="5007"/>
1506 <children xmi:type="notation:Node" xmi:id="_abE1cWDAEeq8BovXV4ESzw" type="7004">
1507 <children xmi:type="notation:Node" xmi:id="_aciOBmDAEeq8BovXV4ESzw" type="3010" element="_aXNpIGDAEeq8BovXV4ESzw">
1508 <styles xmi:type="notation:FontStyle" xmi:id="_aciOB2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1509 <layoutConstraint xmi:type="notation:Location" xmi:id="_aciOCGDAEeq8BovXV4ESzw"/>
1510 </children>
1511 <children xmi:type="notation:Node" xmi:id="_aci1EGDAEeq8BovXV4ESzw" type="3010" element="_aXPeUGDAEeq8BovXV4ESzw">
1512 <styles xmi:type="notation:FontStyle" xmi:id="_aci1EWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1513 <layoutConstraint xmi:type="notation:Location" xmi:id="_aci1EmDAEeq8BovXV4ESzw"/>
1514 </children>
1515 <styles xmi:type="notation:SortingStyle" xmi:id="_abE1cmDAEeq8BovXV4ESzw"/>
1516 <styles xmi:type="notation:FilteringStyle" xmi:id="_abE1c2DAEeq8BovXV4ESzw"/>
1517 </children>
1518 <styles xmi:type="notation:ShapeStyle" xmi:id="_abEOYWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1519 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abEOYmDAEeq8BovXV4ESzw" x="5700" y="1392"/>
1520 </children>
1521 <children xmi:type="notation:Node" xmi:id="_abE1dGDAEeq8BovXV4ESzw" type="2003" element="_aKQyQGDAEeq8BovXV4ESzw">
1522 <children xmi:type="notation:Node" xmi:id="_abFcgGDAEeq8BovXV4ESzw" type="5007"/>
1523 <children xmi:type="notation:Node" xmi:id="_abGDkGDAEeq8BovXV4ESzw" type="7004">
1524 <children xmi:type="notation:Node" xmi:id="_aci1E2DAEeq8BovXV4ESzw" type="3010" element="_aXRTgGDAEeq8BovXV4ESzw">
1525 <styles xmi:type="notation:FontStyle" xmi:id="_aci1FGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1526 <layoutConstraint xmi:type="notation:Location" xmi:id="_aci1FWDAEeq8BovXV4ESzw"/>
1527 </children>
1528 <children xmi:type="notation:Node" xmi:id="_aci1FmDAEeq8BovXV4ESzw" type="3010" element="_aXR6kGDAEeq8BovXV4ESzw">
1529 <styles xmi:type="notation:FontStyle" xmi:id="_aci1F2DAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1530 <layoutConstraint xmi:type="notation:Location" xmi:id="_aci1GGDAEeq8BovXV4ESzw"/>
1531 </children>
1532 <children xmi:type="notation:Node" xmi:id="_acjcIGDAEeq8BovXV4ESzw" type="3010" element="_aXShoWDAEeq8BovXV4ESzw">
1533 <styles xmi:type="notation:FontStyle" xmi:id="_acjcIWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1534 <layoutConstraint xmi:type="notation:Location" xmi:id="_acjcImDAEeq8BovXV4ESzw"/>
1535 </children>
1536 <styles xmi:type="notation:SortingStyle" xmi:id="_abGDkWDAEeq8BovXV4ESzw"/>
1537 <styles xmi:type="notation:FilteringStyle" xmi:id="_abGDkmDAEeq8BovXV4ESzw"/>
1538 </children>
1539 <styles xmi:type="notation:ShapeStyle" xmi:id="_abE1dWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1540 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abE1dmDAEeq8BovXV4ESzw" x="4944" y="1392"/>
1541 </children>
1542 <children xmi:type="notation:Node" xmi:id="_abGDk2DAEeq8BovXV4ESzw" type="2003" element="_aKSAYWDAEeq8BovXV4ESzw">
1543 <children xmi:type="notation:Node" xmi:id="_abGqoGDAEeq8BovXV4ESzw" type="5007"/>
1544 <children xmi:type="notation:Node" xmi:id="_abGqoWDAEeq8BovXV4ESzw" type="7004">
1545 <children xmi:type="notation:Node" xmi:id="_acjcI2DAEeq8BovXV4ESzw" type="3010" element="_aXTvwGDAEeq8BovXV4ESzw">
1546 <styles xmi:type="notation:FontStyle" xmi:id="_acjcJGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1547 <layoutConstraint xmi:type="notation:Location" xmi:id="_acjcJWDAEeq8BovXV4ESzw"/>
1548 </children>
1549 <children xmi:type="notation:Node" xmi:id="_ackDMGDAEeq8BovXV4ESzw" type="3010" element="_aXU94GDAEeq8BovXV4ESzw">
1550 <styles xmi:type="notation:FontStyle" xmi:id="_ackDMWDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1551 <layoutConstraint xmi:type="notation:Location" xmi:id="_ackDMmDAEeq8BovXV4ESzw"/>
1552 </children>
1553 <children xmi:type="notation:Node" xmi:id="_ackDM2DAEeq8BovXV4ESzw" type="3010" element="_aXVk8GDAEeq8BovXV4ESzw">
1554 <styles xmi:type="notation:FontStyle" xmi:id="_ackDNGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1555 <layoutConstraint xmi:type="notation:Location" xmi:id="_ackDNWDAEeq8BovXV4ESzw"/>
1556 </children>
1557 <children xmi:type="notation:Node" xmi:id="_ackDNmDAEeq8BovXV4ESzw" type="3010" element="_aXWMAGDAEeq8BovXV4ESzw">
1558 <styles xmi:type="notation:FontStyle" xmi:id="_ackDN2DAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8" bold="true"/>
1559 <layoutConstraint xmi:type="notation:Location" xmi:id="_ackDOGDAEeq8BovXV4ESzw"/>
1560 </children>
1561 <styles xmi:type="notation:SortingStyle" xmi:id="_abGqomDAEeq8BovXV4ESzw"/>
1562 <styles xmi:type="notation:FilteringStyle" xmi:id="_abGqo2DAEeq8BovXV4ESzw"/>
1563 </children>
1564 <styles xmi:type="notation:ShapeStyle" xmi:id="_abGDlGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1565 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abGDlWDAEeq8BovXV4ESzw" x="6360" y="1392"/>
1566 </children>
1567 <children xmi:type="notation:Node" xmi:id="_abGqpGDAEeq8BovXV4ESzw" type="2003" element="_aKT1kGDAEeq8BovXV4ESzw">
1568 <children xmi:type="notation:Node" xmi:id="_abHRsGDAEeq8BovXV4ESzw" type="5007"/>
1569 <children xmi:type="notation:Node" xmi:id="_abHRsWDAEeq8BovXV4ESzw" type="7004">
1570 <styles xmi:type="notation:SortingStyle" xmi:id="_abHRsmDAEeq8BovXV4ESzw"/>
1571 <styles xmi:type="notation:FilteringStyle" xmi:id="_abHRs2DAEeq8BovXV4ESzw"/>
1572 </children>
1573 <styles xmi:type="notation:ShapeStyle" xmi:id="_abGqpWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1574 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abGqpmDAEeq8BovXV4ESzw" x="6432" y="1212"/>
1575 </children>
1576 <children xmi:type="notation:Node" xmi:id="_abHRtGDAEeq8BovXV4ESzw" type="2003" element="_aKUcoWDAEeq8BovXV4ESzw">
1577 <children xmi:type="notation:Node" xmi:id="_abH4wGDAEeq8BovXV4ESzw" type="5007"/>
1578 <children xmi:type="notation:Node" xmi:id="_abH4wWDAEeq8BovXV4ESzw" type="7004">
1579 <children xmi:type="notation:Node" xmi:id="_ackqQGDAEeq8BovXV4ESzw" type="3010" element="_aXWzEGDAEeq8BovXV4ESzw">
1580 <styles xmi:type="notation:FontStyle" xmi:id="_ackqQWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1581 <layoutConstraint xmi:type="notation:Location" xmi:id="_ackqQmDAEeq8BovXV4ESzw"/>
1582 </children>
1583 <children xmi:type="notation:Node" xmi:id="_ackqQ2DAEeq8BovXV4ESzw" type="3010" element="_aXYBMGDAEeq8BovXV4ESzw">
1584 <styles xmi:type="notation:FontStyle" xmi:id="_ackqRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
1585 <layoutConstraint xmi:type="notation:Location" xmi:id="_ackqRWDAEeq8BovXV4ESzw"/>
1586 </children>
1587 <styles xmi:type="notation:SortingStyle" xmi:id="_abH4wmDAEeq8BovXV4ESzw"/>
1588 <styles xmi:type="notation:FilteringStyle" xmi:id="_abH4w2DAEeq8BovXV4ESzw"/>
1589 </children>
1590 <styles xmi:type="notation:ShapeStyle" xmi:id="_abHRtWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1591 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abHRtmDAEeq8BovXV4ESzw" x="6624" y="1212"/>
1592 </children>
1593 <children xmi:type="notation:Node" xmi:id="_abIf0GDAEeq8BovXV4ESzw" type="2003" element="_aKVqwWDAEeq8BovXV4ESzw">
1594 <children xmi:type="notation:Node" xmi:id="_abIf02DAEeq8BovXV4ESzw" type="5007"/>
1595 <children xmi:type="notation:Node" xmi:id="_abIf1GDAEeq8BovXV4ESzw" type="7004">
1596 <styles xmi:type="notation:SortingStyle" xmi:id="_abIf1WDAEeq8BovXV4ESzw"/>
1597 <styles xmi:type="notation:FilteringStyle" xmi:id="_abIf1mDAEeq8BovXV4ESzw"/>
1598 </children>
1599 <styles xmi:type="notation:ShapeStyle" xmi:id="_abIf0WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1600 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abIf0mDAEeq8BovXV4ESzw" x="7188" y="1392"/>
1601 </children>
1602 <children xmi:type="notation:Node" xmi:id="_abIf12DAEeq8BovXV4ESzw" type="2003" element="_aKW44WDAEeq8BovXV4ESzw">
1603 <children xmi:type="notation:Node" xmi:id="_abJG4mDAEeq8BovXV4ESzw" type="5007"/>
1604 <children xmi:type="notation:Node" xmi:id="_abJG42DAEeq8BovXV4ESzw" type="7004">
1605 <styles xmi:type="notation:SortingStyle" xmi:id="_abJG5GDAEeq8BovXV4ESzw"/>
1606 <styles xmi:type="notation:FilteringStyle" xmi:id="_abJG5WDAEeq8BovXV4ESzw"/>
1607 </children>
1608 <styles xmi:type="notation:ShapeStyle" xmi:id="_abJG4GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1609 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abJG4WDAEeq8BovXV4ESzw" x="6984" y="1212"/>
1610 </children>
1611 <children xmi:type="notation:Node" xmi:id="_abJt8GDAEeq8BovXV4ESzw" type="2003" element="_aKYHAGDAEeq8BovXV4ESzw">
1612 <children xmi:type="notation:Node" xmi:id="_abKVAGDAEeq8BovXV4ESzw" type="5007"/>
1613 <children xmi:type="notation:Node" xmi:id="_abKVAWDAEeq8BovXV4ESzw" type="7004">
1614 <styles xmi:type="notation:SortingStyle" xmi:id="_abKVAmDAEeq8BovXV4ESzw"/>
1615 <styles xmi:type="notation:FilteringStyle" xmi:id="_abKVA2DAEeq8BovXV4ESzw"/>
1616 </children>
1617 <styles xmi:type="notation:ShapeStyle" xmi:id="_abJt8WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1618 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abJt8mDAEeq8BovXV4ESzw" x="6972" y="1392"/>
1619 </children>
1620 <children xmi:type="notation:Node" xmi:id="_abK8EGDAEeq8BovXV4ESzw" type="2003" element="_aKYuEWDAEeq8BovXV4ESzw">
1621 <children xmi:type="notation:Node" xmi:id="_abLjIGDAEeq8BovXV4ESzw" type="5007"/>
1622 <children xmi:type="notation:Node" xmi:id="_abLjIWDAEeq8BovXV4ESzw" type="7004">
1623 <children xmi:type="notation:Node" xmi:id="_aclRUGDAEeq8BovXV4ESzw" type="3010" element="_aX_FMmDAEeq8BovXV4ESzw">
1624 <styles xmi:type="notation:FontStyle" xmi:id="_aclRUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1625 <layoutConstraint xmi:type="notation:Location" xmi:id="_aclRUmDAEeq8BovXV4ESzw"/>
1626 </children>
1627 <children xmi:type="notation:Node" xmi:id="_aclRU2DAEeq8BovXV4ESzw" type="3010" element="_aX_sQGDAEeq8BovXV4ESzw">
1628 <styles xmi:type="notation:FontStyle" xmi:id="_aclRVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1629 <layoutConstraint xmi:type="notation:Location" xmi:id="_aclRVWDAEeq8BovXV4ESzw"/>
1630 </children>
1631 <children xmi:type="notation:Node" xmi:id="_aclRVmDAEeq8BovXV4ESzw" type="3010" element="_aX_sQmDAEeq8BovXV4ESzw">
1632 <styles xmi:type="notation:FontStyle" xmi:id="_aclRV2DAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1633 <layoutConstraint xmi:type="notation:Location" xmi:id="_aclRWGDAEeq8BovXV4ESzw"/>
1634 </children>
1635 <styles xmi:type="notation:SortingStyle" xmi:id="_abLjImDAEeq8BovXV4ESzw"/>
1636 <styles xmi:type="notation:FilteringStyle" xmi:id="_abLjI2DAEeq8BovXV4ESzw"/>
1637 </children>
1638 <styles xmi:type="notation:ShapeStyle" xmi:id="_abK8EWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1639 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_abK8EmDAEeq8BovXV4ESzw" x="4284"/>
1640 </children>
1641 <styles xmi:type="notation:DiagramStyle" xmi:id="_ZGeaAGDAEeq8BovXV4ESzw"/>
1642 <edges xmi:type="notation:Edge" xmi:id="_ac3lMGDAEeq8BovXV4ESzw" type="4001" element="_aYSAIGDAEeq8BovXV4ESzw" source="_aaN51GDAEeq8BovXV4ESzw" target="_aaOg5GDAEeq8BovXV4ESzw">
1643 <children xmi:type="notation:Node" xmi:id="_ac6ogGDAEeq8BovXV4ESzw" type="6001">
1644 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ac6ogWDAEeq8BovXV4ESzw" y="10"/>
1645 </children>
1646 <children xmi:type="notation:Node" xmi:id="_ac7PkGDAEeq8BovXV4ESzw" type="6002">
1647 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ac7PkWDAEeq8BovXV4ESzw" x="8" y="10"/>
1648 </children>
1649 <children xmi:type="notation:Node" xmi:id="_ac8dsGDAEeq8BovXV4ESzw" type="6003">
1650 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ac8dsWDAEeq8BovXV4ESzw" x="-8" y="10"/>
1651 </children>
1652 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ac3lMWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
1653 <styles xmi:type="notation:FontStyle" xmi:id="_ac3lMmDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1654 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ac3lM2DAEeq8BovXV4ESzw" points="[44, -49, -37, 119]$[44, -84, -37, 84]$[36, -84, -45, 84]$[36, -119, -45, 49]"/>
1655 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adOKgGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1656 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adOKgWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1657 </edges>
1658 <edges xmi:type="notation:Edge" xmi:id="_adOxkGDAEeq8BovXV4ESzw" type="4001" element="_aYdmUGDAEeq8BovXV4ESzw" source="_aaXq0GDAEeq8BovXV4ESzw" target="_aaQWEGDAEeq8BovXV4ESzw">
1659 <children xmi:type="notation:Node" xmi:id="_adPYoGDAEeq8BovXV4ESzw" type="6001">
1660 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adPYoWDAEeq8BovXV4ESzw" y="-10"/>
1661 </children>
1662 <children xmi:type="notation:Node" xmi:id="_adPYomDAEeq8BovXV4ESzw" type="6002">
1663 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adPYo2DAEeq8BovXV4ESzw" y="10"/>
1664 </children>
1665 <children xmi:type="notation:Node" xmi:id="_adP_sGDAEeq8BovXV4ESzw" type="6003">
1666 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adP_sWDAEeq8BovXV4ESzw" y="10"/>
1667 </children>
1668 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adOxkWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
1669 <styles xmi:type="notation:FontStyle" xmi:id="_adOxkmDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1670 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adOxk2DAEeq8BovXV4ESzw" points="[0, -55, 0, 164]$[0, -115, 0, 104]"/>
1671 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adQmwGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1672 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adQmwWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1673 </edges>
1674 <edges xmi:type="notation:Edge" xmi:id="_adQmwmDAEeq8BovXV4ESzw" type="4001" element="_aYeNZmDAEeq8BovXV4ESzw" source="_aaZgA2DAEeq8BovXV4ESzw" target="_aaQWEGDAEeq8BovXV4ESzw">
1675 <children xmi:type="notation:Node" xmi:id="_adRN0GDAEeq8BovXV4ESzw" type="6001">
1676 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adRN0WDAEeq8BovXV4ESzw" x="1" y="-10"/>
1677 </children>
1678 <children xmi:type="notation:Node" xmi:id="_adRN0mDAEeq8BovXV4ESzw" type="6002">
1679 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adRN02DAEeq8BovXV4ESzw" y="10"/>
1680 </children>
1681 <children xmi:type="notation:Node" xmi:id="_adRN1GDAEeq8BovXV4ESzw" type="6003">
1682 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adRN1WDAEeq8BovXV4ESzw" y="10"/>
1683 </children>
1684 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adQmw2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
1685 <styles xmi:type="notation:FontStyle" xmi:id="_adQmxGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1686 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adQmxWDAEeq8BovXV4ESzw" points="[135, -30, -803, 202]$[450, -30, -488, 202]$[450, -189, -488, 43]$[765, -189, -173, 43]"/>
1687 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adR04GDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1688 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adR04WDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1689 </edges>
1690 <edges xmi:type="notation:Edge" xmi:id="_adR04mDAEeq8BovXV4ESzw" type="4001" element="_aYe0eWDAEeq8BovXV4ESzw" source="_aaZgA2DAEeq8BovXV4ESzw" target="_aaQWEGDAEeq8BovXV4ESzw">
1691 <children xmi:type="notation:Node" xmi:id="_adSb8GDAEeq8BovXV4ESzw" type="6001">
1692 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adSb8WDAEeq8BovXV4ESzw" x="135" y="6"/>
1693 </children>
1694 <children xmi:type="notation:Node" xmi:id="_adSb8mDAEeq8BovXV4ESzw" type="6002">
1695 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adSb82DAEeq8BovXV4ESzw" x="8" y="252"/>
1696 </children>
1697 <children xmi:type="notation:Node" xmi:id="_adSb9GDAEeq8BovXV4ESzw" type="6003">
1698 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adSb9WDAEeq8BovXV4ESzw" x="20" y="10"/>
1699 </children>
1700 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adR042DAEeq8BovXV4ESzw" routing="Rectilinear"/>
1701 <styles xmi:type="notation:FontStyle" xmi:id="_adR05GDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1702 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adR05WDAEeq8BovXV4ESzw" points="[1, -54, -937, 178]$[1, -210, -937, 22]$[765, -210, -173, 22]"/>
1703 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adTDAGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1704 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adTDAWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
1705 </edges>
1706 <edges xmi:type="notation:Edge" xmi:id="_adTDAmDAEeq8BovXV4ESzw" type="4001" element="_aYgCkGDAEeq8BovXV4ESzw" source="_aag0w2DAEeq8BovXV4ESzw" target="_aaSyUGDAEeq8BovXV4ESzw">
1707 <children xmi:type="notation:Node" xmi:id="_adTqEGDAEeq8BovXV4ESzw" type="6001">
1708 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adTqEWDAEeq8BovXV4ESzw" x="-1" y="-10"/>
1709 </children>
1710 <children xmi:type="notation:Node" xmi:id="_adTqEmDAEeq8BovXV4ESzw" type="6002">
1711 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adTqE2DAEeq8BovXV4ESzw" x="-10"/>
1712 </children>
1713 <children xmi:type="notation:Node" xmi:id="_adURIGDAEeq8BovXV4ESzw" type="6003">
1714 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adURIWDAEeq8BovXV4ESzw" x="125" y="10"/>
1715 </children>
1716 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adTDA2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
1717 <styles xmi:type="notation:FontStyle" xmi:id="_adTDBGDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1718 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adTDBWDAEeq8BovXV4ESzw" points="[134, 108, 841, 1391]$[347, 108, 1054, 1391]$[347, -785, 1054, 498]$[-109, -785, 598, 498]$[-109, -1331, 598, -48]$[-634, -1331, 73, -48]"/>
1719 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adURImDAEeq8BovXV4ESzw" id="(0.5018450184501845,0.0)"/>
1720 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adURI2DAEeq8BovXV4ESzw" id="(0.5067567567567568,1.0)"/>
1721 </edges>
1722 <edges xmi:type="notation:Edge" xmi:id="_adU4MGDAEeq8BovXV4ESzw" type="4001" element="_aYgppmDAEeq8BovXV4ESzw" source="_aaip8GDAEeq8BovXV4ESzw" target="_aaOg5GDAEeq8BovXV4ESzw">
1723 <children xmi:type="notation:Node" xmi:id="_adU4NGDAEeq8BovXV4ESzw" type="6001">
1724 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adU4NWDAEeq8BovXV4ESzw" x="10"/>
1725 </children>
1726 <children xmi:type="notation:Node" xmi:id="_adU4NmDAEeq8BovXV4ESzw" type="6002">
1727 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adU4N2DAEeq8BovXV4ESzw" x="-5" y="10"/>
1728 </children>
1729 <children xmi:type="notation:Node" xmi:id="_adVfQGDAEeq8BovXV4ESzw" type="6003">
1730 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adVfQWDAEeq8BovXV4ESzw" y="-10"/>
1731 </children>
1732 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adU4MWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
1733 <styles xmi:type="notation:FontStyle" xmi:id="_adU4MmDAEeq8BovXV4ESzw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
1734 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adU4M2DAEeq8BovXV4ESzw" points="[0, 0, 162, 70]$[0, -122, 162, -52]$[-68, -122, 94, -52]"/>
1735 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adVfQmDAEeq8BovXV4ESzw" id="(0.5027932960893855,0.0)"/>
1736 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adVfQ2DAEeq8BovXV4ESzw" id="(0.5052631578947369,1.0)"/>
1737 </edges>
1738 <edges xmi:type="notation:Edge" xmi:id="_adVfRGDAEeq8BovXV4ESzw" type="4001" element="_aYnXUGDAEeq8BovXV4ESzw" source="_aaOg5GDAEeq8BovXV4ESzw" target="_aaQWEGDAEeq8BovXV4ESzw">
1739 <children xmi:type="notation:Node" xmi:id="_adWGU2DAEeq8BovXV4ESzw" type="6001">
1740 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adWGVGDAEeq8BovXV4ESzw" x="-190" y="-10"/>
1741 </children>
1742 <children xmi:type="notation:Node" xmi:id="_adWGVWDAEeq8BovXV4ESzw" type="6002">
1743 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adWGVmDAEeq8BovXV4ESzw" x="18" y="10"/>
1744 </children>
1745 <children xmi:type="notation:Node" xmi:id="_adWtYGDAEeq8BovXV4ESzw" type="6003">
1746 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adWtYWDAEeq8BovXV4ESzw" x="-162" y="-307"/>
1747 </children>
1748 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adWGUGDAEeq8BovXV4ESzw" routing="Tree"/>
1749 <styles xmi:type="notation:FontStyle" xmi:id="_adWGUWDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1750 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adWGUmDAEeq8BovXV4ESzw" points="[0, 0, 134, 703]$[0, -684, 134, 19]$[-260, -684, -126, 19]$[-260, -703, -126, 0]"/>
1751 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adXUcGDAEeq8BovXV4ESzw" id="(0.5052631578947369,0.0)"/>
1752 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adXUcWDAEeq8BovXV4ESzw" id="(0.5014409221902018,1.0)"/>
1753 </edges>
1754 <edges xmi:type="notation:Edge" xmi:id="_adXUcmDAEeq8BovXV4ESzw" type="4001" element="_aYsP02DAEeq8BovXV4ESzw" source="_aaOg5GDAEeq8BovXV4ESzw" target="_aadKY2DAEeq8BovXV4ESzw">
1755 <children xmi:type="notation:Node" xmi:id="_adXUdmDAEeq8BovXV4ESzw" type="6001">
1756 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adXUd2DAEeq8BovXV4ESzw" x="-227" y="36"/>
1757 </children>
1758 <children xmi:type="notation:Node" xmi:id="_adYikGDAEeq8BovXV4ESzw" type="6002">
1759 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adYikWDAEeq8BovXV4ESzw" y="10"/>
1760 </children>
1761 <children xmi:type="notation:Node" xmi:id="_adYikmDAEeq8BovXV4ESzw" type="6003">
1762 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adYik2DAEeq8BovXV4ESzw" x="-303" y="-7"/>
1763 </children>
1764 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adXUc2DAEeq8BovXV4ESzw" routing="Tree"/>
1765 <styles xmi:type="notation:FontStyle" xmi:id="_adXUdGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1766 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adXUdWDAEeq8BovXV4ESzw" points="[0, 0, -209, 670]$[0, -240, -209, 430]$[244, -240, 35, 430]$[244, -670, 35, 0]"/>
1767 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adYilGDAEeq8BovXV4ESzw" id="(0.5052631578947369,0.0)"/>
1768 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adYilWDAEeq8BovXV4ESzw" id="(0.5084745762711864,1.0)"/>
1769 </edges>
1770 <edges xmi:type="notation:Edge" xmi:id="_adYilmDAEeq8BovXV4ESzw" type="4001" element="_aYs25mDAEeq8BovXV4ESzw" source="_aaWcsGDAEeq8BovXV4ESzw" target="_aaQWEGDAEeq8BovXV4ESzw">
1771 <children xmi:type="notation:Node" xmi:id="_adZJoGDAEeq8BovXV4ESzw" type="6001">
1772 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adZJoWDAEeq8BovXV4ESzw" y="-10"/>
1773 </children>
1774 <children xmi:type="notation:Node" xmi:id="_adZJomDAEeq8BovXV4ESzw" type="6002">
1775 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adZJo2DAEeq8BovXV4ESzw" y="10"/>
1776 </children>
1777 <children xmi:type="notation:Node" xmi:id="_adZJpGDAEeq8BovXV4ESzw" type="6003">
1778 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adZJpWDAEeq8BovXV4ESzw" y="10"/>
1779 </children>
1780 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adYil2DAEeq8BovXV4ESzw" routing="Tree"/>
1781 <styles xmi:type="notation:FontStyle" xmi:id="_adYimGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1782 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adYimWDAEeq8BovXV4ESzw" points="[-1, 0, -39, 450]$[322, -61, 284, 389]$[322, -219, 284, 231]$[165, -390, 127, 60]$[37, -450, -1, 0]"/>
1783 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adZwsGDAEeq8BovXV4ESzw" id="(0.5019455252918288,0.0)"/>
1784 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adZwsWDAEeq8BovXV4ESzw" id="(0.5014409221902018,1.0)"/>
1785 </edges>
1786 <edges xmi:type="notation:Edge" xmi:id="_adZwsmDAEeq8BovXV4ESzw" type="4001" element="_aYuFBmDAEeq8BovXV4ESzw" source="_aaY48GDAEeq8BovXV4ESzw" target="_aadKY2DAEeq8BovXV4ESzw">
1787 <children xmi:type="notation:Node" xmi:id="_adZwtmDAEeq8BovXV4ESzw" type="6001">
1788 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adZwt2DAEeq8BovXV4ESzw" x="-117" y="26"/>
1789 </children>
1790 <children xmi:type="notation:Node" xmi:id="_adaXwGDAEeq8BovXV4ESzw" type="6002">
1791 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adaXwWDAEeq8BovXV4ESzw" x="-6" y="10"/>
1792 </children>
1793 <children xmi:type="notation:Node" xmi:id="_adaXwmDAEeq8BovXV4ESzw" type="6003">
1794 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adaXw2DAEeq8BovXV4ESzw" x="-76" y="-77"/>
1795 </children>
1796 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adZws2DAEeq8BovXV4ESzw" routing="Tree"/>
1797 <styles xmi:type="notation:FontStyle" xmi:id="_adZwtGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1798 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adZwtWDAEeq8BovXV4ESzw" points="[0, 0, -157, 238]$[0, -108, -157, 130]$[192, -108, 35, 130]$[192, -238, 35, 0]"/>
1799 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adaXxGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
1800 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adaXxWDAEeq8BovXV4ESzw" id="(0.5084745762711864,1.0)"/>
1801 </edges>
1802 <edges xmi:type="notation:Edge" xmi:id="_adaXxmDAEeq8BovXV4ESzw" type="4001" element="_aYusFmDAEeq8BovXV4ESzw" source="_aamUU2DAEeq8BovXV4ESzw" target="_aaSyUGDAEeq8BovXV4ESzw">
1803 <children xmi:type="notation:Node" xmi:id="_ada-0GDAEeq8BovXV4ESzw" type="6001">
1804 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ada-0WDAEeq8BovXV4ESzw" y="-10"/>
1805 </children>
1806 <children xmi:type="notation:Node" xmi:id="_ada-0mDAEeq8BovXV4ESzw" type="6002">
1807 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ada-02DAEeq8BovXV4ESzw" y="10"/>
1808 </children>
1809 <children xmi:type="notation:Node" xmi:id="_ada-1GDAEeq8BovXV4ESzw" type="6003">
1810 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ada-1WDAEeq8BovXV4ESzw" y="10"/>
1811 </children>
1812 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adaXx2DAEeq8BovXV4ESzw" routing="Tree"/>
1813 <styles xmi:type="notation:FontStyle" xmi:id="_adaXyGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1814 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adaXyWDAEeq8BovXV4ESzw" points="[-1, 0, -729, 60]$[727, -60, -1, 0]"/>
1815 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ada-1mDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
1816 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ada-12DAEeq8BovXV4ESzw" id="(0.5067567567567568,1.0)"/>
1817 </edges>
1818 <edges xmi:type="notation:Edge" xmi:id="_ada-2GDAEeq8BovXV4ESzw" type="4001" element="_aYvTJmDAEeq8BovXV4ESzw" source="_aanic2DAEeq8BovXV4ESzw" target="_aaSyUGDAEeq8BovXV4ESzw">
1819 <children xmi:type="notation:Node" xmi:id="_adbl4GDAEeq8BovXV4ESzw" type="6001">
1820 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adbl4WDAEeq8BovXV4ESzw" x="73" y="-10"/>
1821 </children>
1822 <children xmi:type="notation:Node" xmi:id="_adbl4mDAEeq8BovXV4ESzw" type="6002">
1823 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adbl42DAEeq8BovXV4ESzw" x="58" y="52"/>
1824 </children>
1825 <children xmi:type="notation:Node" xmi:id="_adbl5GDAEeq8BovXV4ESzw" type="6003">
1826 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adbl5WDAEeq8BovXV4ESzw" x="27" y="10"/>
1827 </children>
1828 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ada-2WDAEeq8BovXV4ESzw" routing="Tree"/>
1829 <styles xmi:type="notation:FontStyle" xmi:id="_ada-2mDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1830 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ada-22DAEeq8BovXV4ESzw" points="[0, 0, -555, 59]$[0, -180, -555, -121]$[555, -180, 0, -121]$[555, -168, 0, -109]"/>
1831 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adcM8GDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
1832 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adcM8WDAEeq8BovXV4ESzw" id="(0.5067567567567568,1.0)"/>
1833 </edges>
1834 <edges xmi:type="notation:Edge" xmi:id="_adcM8mDAEeq8BovXV4ESzw" type="4001" element="_aYv6NmDAEeq8BovXV4ESzw" source="_aaoJhGDAEeq8BovXV4ESzw" target="_aaZgA2DAEeq8BovXV4ESzw">
1835 <children xmi:type="notation:Node" xmi:id="_adcM9mDAEeq8BovXV4ESzw" type="6001">
1836 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adcM92DAEeq8BovXV4ESzw" y="-10"/>
1837 </children>
1838 <children xmi:type="notation:Node" xmi:id="_adcM-GDAEeq8BovXV4ESzw" type="6002">
1839 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adcM-WDAEeq8BovXV4ESzw" y="10"/>
1840 </children>
1841 <children xmi:type="notation:Node" xmi:id="_adc0AGDAEeq8BovXV4ESzw" type="6003">
1842 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adc0AWDAEeq8BovXV4ESzw" y="10"/>
1843 </children>
1844 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adcM82DAEeq8BovXV4ESzw" routing="Tree"/>
1845 <styles xmi:type="notation:FontStyle" xmi:id="_adcM9GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1846 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adcM9WDAEeq8BovXV4ESzw" points="[-1, 0, -108, 60]$[106, -60, -1, 0]"/>
1847 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adc0AmDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
1848 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adc0A2DAEeq8BovXV4ESzw" id="(0.5037037037037037,1.0)"/>
1849 </edges>
1850 <edges xmi:type="notation:Edge" xmi:id="_adc0BGDAEeq8BovXV4ESzw" type="4001" element="_aYwhRmDAEeq8BovXV4ESzw" source="_aaowlGDAEeq8BovXV4ESzw" target="_aaOg5GDAEeq8BovXV4ESzw">
1851 <children xmi:type="notation:Node" xmi:id="_addbEGDAEeq8BovXV4ESzw" type="6001">
1852 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_addbEWDAEeq8BovXV4ESzw" y="-10"/>
1853 </children>
1854 <children xmi:type="notation:Node" xmi:id="_addbEmDAEeq8BovXV4ESzw" type="6002">
1855 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_addbE2DAEeq8BovXV4ESzw" y="10"/>
1856 </children>
1857 <children xmi:type="notation:Node" xmi:id="_addbFGDAEeq8BovXV4ESzw" type="6003">
1858 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_addbFWDAEeq8BovXV4ESzw" y="10"/>
1859 </children>
1860 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adc0BWDAEeq8BovXV4ESzw" routing="Tree"/>
1861 <styles xmi:type="notation:FontStyle" xmi:id="_adc0BmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1862 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adc0B2DAEeq8BovXV4ESzw" points="[-1, 0, -420, 60]$[418, -60, -1, 0]"/>
1863 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adeCIGDAEeq8BovXV4ESzw" id="(0.5019305019305019,0.0)"/>
1864 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adeCIWDAEeq8BovXV4ESzw" id="(0.5052631578947369,1.0)"/>
1865 </edges>
1866 <edges xmi:type="notation:Edge" xmi:id="_adeCImDAEeq8BovXV4ESzw" type="4001" element="_aYxIU2DAEeq8BovXV4ESzw" source="_aap-sGDAEeq8BovXV4ESzw" target="_aaZgA2DAEeq8BovXV4ESzw">
1867 <children xmi:type="notation:Node" xmi:id="_adepMGDAEeq8BovXV4ESzw" type="6001">
1868 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adepMWDAEeq8BovXV4ESzw" y="-10"/>
1869 </children>
1870 <children xmi:type="notation:Node" xmi:id="_adepMmDAEeq8BovXV4ESzw" type="6002">
1871 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adepM2DAEeq8BovXV4ESzw" y="10"/>
1872 </children>
1873 <children xmi:type="notation:Node" xmi:id="_adepNGDAEeq8BovXV4ESzw" type="6003">
1874 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adepNWDAEeq8BovXV4ESzw" y="10"/>
1875 </children>
1876 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adeCI2DAEeq8BovXV4ESzw" routing="Tree"/>
1877 <styles xmi:type="notation:FontStyle" xmi:id="_adeCJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1878 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adeCJWDAEeq8BovXV4ESzw" points="[-1, 0, 68, 71]$[-1, -52, 68, 19]$[-69, -52, 0, 19]$[-69, -71, 0, 0]"/>
1879 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adepNmDAEeq8BovXV4ESzw" id="(0.5041322314049587,0.0)"/>
1880 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adepN2DAEeq8BovXV4ESzw" id="(0.5037037037037037,1.0)"/>
1881 </edges>
1882 <edges xmi:type="notation:Edge" xmi:id="_adf3UGDAEeq8BovXV4ESzw" type="4001" element="_aYxvYGDAEeq8BovXV4ESzw" source="_aaqlw2DAEeq8BovXV4ESzw" target="_aaOg5GDAEeq8BovXV4ESzw">
1883 <children xmi:type="notation:Node" xmi:id="_adgeYGDAEeq8BovXV4ESzw" type="6001">
1884 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adgeYWDAEeq8BovXV4ESzw" x="8" y="-10"/>
1885 </children>
1886 <children xmi:type="notation:Node" xmi:id="_adhFcGDAEeq8BovXV4ESzw" type="6002">
1887 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adhFcWDAEeq8BovXV4ESzw" x="8" y="10"/>
1888 </children>
1889 <children xmi:type="notation:Node" xmi:id="_adhsgGDAEeq8BovXV4ESzw" type="6003">
1890 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adhsgWDAEeq8BovXV4ESzw" x="8" y="10"/>
1891 </children>
1892 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adf3UWDAEeq8BovXV4ESzw" routing="Tree"/>
1893 <styles xmi:type="notation:FontStyle" xmi:id="_adf3UmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1894 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adf3U2DAEeq8BovXV4ESzw" points="[-1, 0, -622, 70]$[-1, -60, -622, 10]$[621, -60, 0, 10]$[621, -70, 0, 0]"/>
1895 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adiTkGDAEeq8BovXV4ESzw" id="(0.5033557046979866,0.0)"/>
1896 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adiTkWDAEeq8BovXV4ESzw" id="(0.5052631578947369,1.0)"/>
1897 </edges>
1898 <edges xmi:type="notation:Edge" xmi:id="_adiTkmDAEeq8BovXV4ESzw" type="4001" element="_aYyWc2DAEeq8BovXV4ESzw" source="_aarM1GDAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
1899 <children xmi:type="notation:Node" xmi:id="_adi6oGDAEeq8BovXV4ESzw" type="6001">
1900 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adi6oWDAEeq8BovXV4ESzw" y="-10"/>
1901 </children>
1902 <children xmi:type="notation:Node" xmi:id="_adjhsGDAEeq8BovXV4ESzw" type="6002">
1903 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adjhsWDAEeq8BovXV4ESzw" y="10"/>
1904 </children>
1905 <children xmi:type="notation:Node" xmi:id="_adjhsmDAEeq8BovXV4ESzw" type="6003">
1906 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adjhs2DAEeq8BovXV4ESzw" y="10"/>
1907 </children>
1908 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adiTk2DAEeq8BovXV4ESzw" routing="Tree"/>
1909 <styles xmi:type="notation:FontStyle" xmi:id="_adiTlGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1910 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adiTlWDAEeq8BovXV4ESzw" points="[-1, 0, 238, 60]$[-240, -60, -1, 0]"/>
1911 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adkIwGDAEeq8BovXV4ESzw" id="(0.503030303030303,0.0)"/>
1912 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adkIwWDAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
1913 </edges>
1914 <edges xmi:type="notation:Edge" xmi:id="_adkIwmDAEeq8BovXV4ESzw" type="4001" element="_aYy9g2DAEeq8BovXV4ESzw" source="_aarz5GDAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
1915 <children xmi:type="notation:Node" xmi:id="_adkv0GDAEeq8BovXV4ESzw" type="6001">
1916 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adkv0WDAEeq8BovXV4ESzw" y="-10"/>
1917 </children>
1918 <children xmi:type="notation:Node" xmi:id="_adlW4GDAEeq8BovXV4ESzw" type="6002">
1919 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adlW4WDAEeq8BovXV4ESzw" y="10"/>
1920 </children>
1921 <children xmi:type="notation:Node" xmi:id="_adlW4mDAEeq8BovXV4ESzw" type="6003">
1922 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adlW42DAEeq8BovXV4ESzw" y="10"/>
1923 </children>
1924 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adkIw2DAEeq8BovXV4ESzw" routing="Tree"/>
1925 <styles xmi:type="notation:FontStyle" xmi:id="_adkIxGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1926 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adkIxWDAEeq8BovXV4ESzw" points="[-1, 0, 666, 60]$[-668, -60, -1, 0]"/>
1927 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adlW5GDAEeq8BovXV4ESzw" id="(0.5026178010471204,0.0)"/>
1928 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adlW5WDAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
1929 </edges>
1930 <edges xmi:type="notation:Edge" xmi:id="_adlW5mDAEeq8BovXV4ESzw" type="4001" element="_aY0LoGDAEeq8BovXV4ESzw" source="_aasa9GDAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
1931 <children xmi:type="notation:Node" xmi:id="_adl982DAEeq8BovXV4ESzw" type="6001">
1932 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adl99GDAEeq8BovXV4ESzw" y="-10"/>
1933 </children>
1934 <children xmi:type="notation:Node" xmi:id="_adl99WDAEeq8BovXV4ESzw" type="6002">
1935 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adl99mDAEeq8BovXV4ESzw" y="10"/>
1936 </children>
1937 <children xmi:type="notation:Node" xmi:id="_adl992DAEeq8BovXV4ESzw" type="6003">
1938 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adl9-GDAEeq8BovXV4ESzw" y="10"/>
1939 </children>
1940 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adl98GDAEeq8BovXV4ESzw" routing="Tree"/>
1941 <styles xmi:type="notation:FontStyle" xmi:id="_adl98WDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1942 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adl98mDAEeq8BovXV4ESzw" points="[-1, 0, -275, 60]$[273, -60, -1, 0]"/>
1943 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_admlAGDAEeq8BovXV4ESzw" id="(0.5021459227467812,0.0)"/>
1944 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_admlAWDAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
1945 </edges>
1946 <edges xmi:type="notation:Edge" xmi:id="_admlAmDAEeq8BovXV4ESzw" type="4001" element="_aY0ysGDAEeq8BovXV4ESzw" source="_aatpEGDAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
1947 <children xmi:type="notation:Node" xmi:id="_adnMEGDAEeq8BovXV4ESzw" type="6001">
1948 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adnMEWDAEeq8BovXV4ESzw" y="-10"/>
1949 </children>
1950 <children xmi:type="notation:Node" xmi:id="_adnMEmDAEeq8BovXV4ESzw" type="6002">
1951 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adnME2DAEeq8BovXV4ESzw" y="10"/>
1952 </children>
1953 <children xmi:type="notation:Node" xmi:id="_adnMFGDAEeq8BovXV4ESzw" type="6003">
1954 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adnMFWDAEeq8BovXV4ESzw" y="10"/>
1955 </children>
1956 <styles xmi:type="notation:ConnectorStyle" xmi:id="_admlA2DAEeq8BovXV4ESzw" routing="Tree"/>
1957 <styles xmi:type="notation:FontStyle" xmi:id="_admlBGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1958 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_admlBWDAEeq8BovXV4ESzw" points="[-1, 0, -1, 60]$[-1, -60, -1, 0]"/>
1959 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adnMFmDAEeq8BovXV4ESzw" id="(0.5052631578947369,0.0)"/>
1960 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adnMF2DAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
1961 </edges>
1962 <edges xmi:type="notation:Edge" xmi:id="_adnzIGDAEeq8BovXV4ESzw" type="4001" element="_aY1ZwmDAEeq8BovXV4ESzw" source="_aau3MGDAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
1963 <children xmi:type="notation:Node" xmi:id="_adnzJGDAEeq8BovXV4ESzw" type="6001">
1964 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adnzJWDAEeq8BovXV4ESzw" y="-10"/>
1965 </children>
1966 <children xmi:type="notation:Node" xmi:id="_adnzJmDAEeq8BovXV4ESzw" type="6002">
1967 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adnzJ2DAEeq8BovXV4ESzw" y="10"/>
1968 </children>
1969 <children xmi:type="notation:Node" xmi:id="_adoaMGDAEeq8BovXV4ESzw" type="6003">
1970 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adoaMWDAEeq8BovXV4ESzw" y="10"/>
1971 </children>
1972 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adnzIWDAEeq8BovXV4ESzw" routing="Tree"/>
1973 <styles xmi:type="notation:FontStyle" xmi:id="_adnzImDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1974 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adnzI2DAEeq8BovXV4ESzw" points="[-1, 0, 446, 60]$[-448, -60, -1, 0]"/>
1975 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adoaMmDAEeq8BovXV4ESzw" id="(0.5079365079365079,0.0)"/>
1976 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adoaM2DAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
1977 </edges>
1978 <edges xmi:type="notation:Edge" xmi:id="_adoaNGDAEeq8BovXV4ESzw" type="4001" element="_aY2A1mDAEeq8BovXV4ESzw" source="_aaveQ2DAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
1979 <children xmi:type="notation:Node" xmi:id="_adpBQGDAEeq8BovXV4ESzw" type="6001">
1980 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adpBQWDAEeq8BovXV4ESzw" y="-10"/>
1981 </children>
1982 <children xmi:type="notation:Node" xmi:id="_adpBQmDAEeq8BovXV4ESzw" type="6002">
1983 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adpBQ2DAEeq8BovXV4ESzw" y="10"/>
1984 </children>
1985 <children xmi:type="notation:Node" xmi:id="_adpBRGDAEeq8BovXV4ESzw" type="6003">
1986 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adpBRWDAEeq8BovXV4ESzw" y="10"/>
1987 </children>
1988 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adoaNWDAEeq8BovXV4ESzw" routing="Tree"/>
1989 <styles xmi:type="notation:FontStyle" xmi:id="_adoaNmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
1990 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adoaN2DAEeq8BovXV4ESzw" points="[-1, 0, -542, 60]$[540, -60, -1, 0]"/>
1991 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adpoUGDAEeq8BovXV4ESzw" id="(0.5028248587570622,0.0)"/>
1992 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adpoUWDAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
1993 </edges>
1994 <edges xmi:type="notation:Edge" xmi:id="_adpoUmDAEeq8BovXV4ESzw" type="4001" element="_aY32AGDAEeq8BovXV4ESzw" source="_aawFVGDAEeq8BovXV4ESzw" target="_aae_lGDAEeq8BovXV4ESzw">
1995 <children xmi:type="notation:Node" xmi:id="_adpoVmDAEeq8BovXV4ESzw" type="6001">
1996 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adpoV2DAEeq8BovXV4ESzw" y="-10"/>
1997 </children>
1998 <children xmi:type="notation:Node" xmi:id="_adpoWGDAEeq8BovXV4ESzw" type="6002">
1999 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adpoWWDAEeq8BovXV4ESzw" y="10"/>
2000 </children>
2001 <children xmi:type="notation:Node" xmi:id="_adqPYGDAEeq8BovXV4ESzw" type="6003">
2002 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adqPYWDAEeq8BovXV4ESzw" y="10"/>
2003 </children>
2004 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adpoU2DAEeq8BovXV4ESzw" routing="Tree"/>
2005 <styles xmi:type="notation:FontStyle" xmi:id="_adpoVGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2006 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adpoVWDAEeq8BovXV4ESzw" points="[-1, 0, 360, 60]$[-362, -60, -1, 0]"/>
2007 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adq2cGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2008 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adq2cWDAEeq8BovXV4ESzw" id="(0.5043103448275862,1.0)"/>
2009 </edges>
2010 <edges xmi:type="notation:Edge" xmi:id="_adq2cmDAEeq8BovXV4ESzw" type="4001" element="_aY4dE2DAEeq8BovXV4ESzw" source="_aawsZGDAEeq8BovXV4ESzw" target="_aae_lGDAEeq8BovXV4ESzw">
2011 <children xmi:type="notation:Node" xmi:id="_adq2dmDAEeq8BovXV4ESzw" type="6001">
2012 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adq2d2DAEeq8BovXV4ESzw" x="-48" y="-10"/>
2013 </children>
2014 <children xmi:type="notation:Node" xmi:id="_adrdgGDAEeq8BovXV4ESzw" type="6002">
2015 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adrdgWDAEeq8BovXV4ESzw" x="-27" y="-10"/>
2016 </children>
2017 <children xmi:type="notation:Node" xmi:id="_adrdgmDAEeq8BovXV4ESzw" type="6003">
2018 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adrdg2DAEeq8BovXV4ESzw" x="-16" y="22"/>
2019 </children>
2020 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adq2c2DAEeq8BovXV4ESzw" routing="Tree"/>
2021 <styles xmi:type="notation:FontStyle" xmi:id="_adq2dGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2022 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adq2dWDAEeq8BovXV4ESzw" points="[0, 0, 183, 91]$[0, -24, 183, 67]$[-183, -24, 0, 67]$[-183, -91, 0, 0]"/>
2023 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adsEkGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2024 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adsEkWDAEeq8BovXV4ESzw" id="(0.5043103448275862,1.0)"/>
2025 </edges>
2026 <edges xmi:type="notation:Edge" xmi:id="_adsEkmDAEeq8BovXV4ESzw" type="4001" element="_aY5rM2DAEeq8BovXV4ESzw" source="_aaxTdGDAEeq8BovXV4ESzw" target="_aaip8GDAEeq8BovXV4ESzw">
2027 <children xmi:type="notation:Node" xmi:id="_adsElmDAEeq8BovXV4ESzw" type="6001">
2028 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adsEl2DAEeq8BovXV4ESzw" y="-10"/>
2029 </children>
2030 <children xmi:type="notation:Node" xmi:id="_adsroGDAEeq8BovXV4ESzw" type="6002">
2031 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adsroWDAEeq8BovXV4ESzw" y="10"/>
2032 </children>
2033 <children xmi:type="notation:Node" xmi:id="_adsromDAEeq8BovXV4ESzw" type="6003">
2034 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adsro2DAEeq8BovXV4ESzw" y="10"/>
2035 </children>
2036 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adsEk2DAEeq8BovXV4ESzw" routing="Tree"/>
2037 <styles xmi:type="notation:FontStyle" xmi:id="_adsElGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2038 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adsElWDAEeq8BovXV4ESzw" points="[-1, 0, -33, 60]$[31, -60, -1, 0]"/>
2039 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adsrpGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2040 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adsrpWDAEeq8BovXV4ESzw" id="(0.5027932960893855,1.0)"/>
2041 </edges>
2042 <edges xmi:type="notation:Edge" xmi:id="_adsrpmDAEeq8BovXV4ESzw" type="4001" element="_aY65UGDAEeq8BovXV4ESzw" source="_aax6hGDAEeq8BovXV4ESzw" target="_aaip8GDAEeq8BovXV4ESzw">
2043 <children xmi:type="notation:Node" xmi:id="_adtSsGDAEeq8BovXV4ESzw" type="6001">
2044 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adtSsWDAEeq8BovXV4ESzw" x="-105" y="-10"/>
2045 </children>
2046 <children xmi:type="notation:Node" xmi:id="_adtSsmDAEeq8BovXV4ESzw" type="6002">
2047 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adtSs2DAEeq8BovXV4ESzw" x="-18" y="8"/>
2048 </children>
2049 <children xmi:type="notation:Node" xmi:id="_adt5wGDAEeq8BovXV4ESzw" type="6003">
2050 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adt5wWDAEeq8BovXV4ESzw" x="-13" y="-47"/>
2051 </children>
2052 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adsrp2DAEeq8BovXV4ESzw" routing="Tree"/>
2053 <styles xmi:type="notation:FontStyle" xmi:id="_adsrqGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2054 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adsrqWDAEeq8BovXV4ESzw" points="[0, 0, -210, 55]$[0, -12, -210, 43]$[211, -12, 1, 43]$[211, -55, 1, 0]"/>
2055 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adt5wmDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2056 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adt5w2DAEeq8BovXV4ESzw" id="(0.5027932960893855,1.0)"/>
2057 </edges>
2058 <edges xmi:type="notation:Edge" xmi:id="_adt5xGDAEeq8BovXV4ESzw" type="4001" element="_aY7gYGDAEeq8BovXV4ESzw" source="_aayhlGDAEeq8BovXV4ESzw" target="_aaip8GDAEeq8BovXV4ESzw">
2059 <children xmi:type="notation:Node" xmi:id="_adug0GDAEeq8BovXV4ESzw" type="6001">
2060 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adug0WDAEeq8BovXV4ESzw" y="-10"/>
2061 </children>
2062 <children xmi:type="notation:Node" xmi:id="_adug0mDAEeq8BovXV4ESzw" type="6002">
2063 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adug02DAEeq8BovXV4ESzw" y="10"/>
2064 </children>
2065 <children xmi:type="notation:Node" xmi:id="_adug1GDAEeq8BovXV4ESzw" type="6003">
2066 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adug1WDAEeq8BovXV4ESzw" y="10"/>
2067 </children>
2068 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adt5xWDAEeq8BovXV4ESzw" routing="Tree"/>
2069 <styles xmi:type="notation:FontStyle" xmi:id="_adt5xmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2070 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adt5x2DAEeq8BovXV4ESzw" points="[-1, 0, 147, 60]$[-149, -60, -1, 0]"/>
2071 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_advH4GDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2072 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_advH4WDAEeq8BovXV4ESzw" id="(0.5027932960893855,1.0)"/>
2073 </edges>
2074 <edges xmi:type="notation:Edge" xmi:id="_advH4mDAEeq8BovXV4ESzw" type="4001" element="_aY8HcGDAEeq8BovXV4ESzw" source="_aazIpGDAEeq8BovXV4ESzw" target="_aa0Ww2DAEeq8BovXV4ESzw">
2075 <children xmi:type="notation:Node" xmi:id="_advH5mDAEeq8BovXV4ESzw" type="6001">
2076 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_advH52DAEeq8BovXV4ESzw" y="-10"/>
2077 </children>
2078 <children xmi:type="notation:Node" xmi:id="_advu8GDAEeq8BovXV4ESzw" type="6002">
2079 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_advu8WDAEeq8BovXV4ESzw" y="10"/>
2080 </children>
2081 <children xmi:type="notation:Node" xmi:id="_advu8mDAEeq8BovXV4ESzw" type="6003">
2082 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_advu82DAEeq8BovXV4ESzw" y="10"/>
2083 </children>
2084 <styles xmi:type="notation:ConnectorStyle" xmi:id="_advH42DAEeq8BovXV4ESzw" routing="Tree"/>
2085 <styles xmi:type="notation:FontStyle" xmi:id="_advH5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2086 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_advH5WDAEeq8BovXV4ESzw" points="[-1, 0, 162, 60]$[-164, -60, -1, 0]"/>
2087 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_advu9GDAEeq8BovXV4ESzw" id="(0.5038167938931297,0.0)"/>
2088 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_advu9WDAEeq8BovXV4ESzw" id="(0.5025641025641026,1.0)"/>
2089 </edges>
2090 <edges xmi:type="notation:Edge" xmi:id="_advu9mDAEeq8BovXV4ESzw" type="4001" element="_aY8ugGDAEeq8BovXV4ESzw" source="_aa1k42DAEeq8BovXV4ESzw" target="_aa0Ww2DAEeq8BovXV4ESzw">
2091 <children xmi:type="notation:Node" xmi:id="_adwWAWDAEeq8BovXV4ESzw" type="6001">
2092 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adwWAmDAEeq8BovXV4ESzw" y="-10"/>
2093 </children>
2094 <children xmi:type="notation:Node" xmi:id="_adwWA2DAEeq8BovXV4ESzw" type="6002">
2095 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adwWBGDAEeq8BovXV4ESzw" y="10"/>
2096 </children>
2097 <children xmi:type="notation:Node" xmi:id="_adwWBWDAEeq8BovXV4ESzw" type="6003">
2098 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adwWBmDAEeq8BovXV4ESzw" y="10"/>
2099 </children>
2100 <styles xmi:type="notation:ConnectorStyle" xmi:id="_advu92DAEeq8BovXV4ESzw" routing="Tree"/>
2101 <styles xmi:type="notation:FontStyle" xmi:id="_advu-GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2102 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adwWAGDAEeq8BovXV4ESzw" points="[-1, 0, -163, 60]$[161, -60, -1, 0]"/>
2103 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adw9EGDAEeq8BovXV4ESzw" id="(0.5019011406844106,0.0)"/>
2104 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adw9EWDAEeq8BovXV4ESzw" id="(0.5025641025641026,1.0)"/>
2105 </edges>
2106 <edges xmi:type="notation:Edge" xmi:id="_adw9EmDAEeq8BovXV4ESzw" type="4001" element="_aY8uh2DAEeq8BovXV4ESzw" source="_aa2zA2DAEeq8BovXV4ESzw" target="_aa3aE2DAEeq8BovXV4ESzw">
2107 <children xmi:type="notation:Node" xmi:id="_adw9FmDAEeq8BovXV4ESzw" type="6001">
2108 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adw9F2DAEeq8BovXV4ESzw" y="-10"/>
2109 </children>
2110 <children xmi:type="notation:Node" xmi:id="_adxkIGDAEeq8BovXV4ESzw" type="6002">
2111 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adxkIWDAEeq8BovXV4ESzw" y="10"/>
2112 </children>
2113 <children xmi:type="notation:Node" xmi:id="_adxkImDAEeq8BovXV4ESzw" type="6003">
2114 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adxkI2DAEeq8BovXV4ESzw" y="10"/>
2115 </children>
2116 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adw9E2DAEeq8BovXV4ESzw" routing="Tree"/>
2117 <styles xmi:type="notation:FontStyle" xmi:id="_adw9FGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2118 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adw9FWDAEeq8BovXV4ESzw" points="[-1, 0, 914, 60]$[-916, -60, -1, 0]"/>
2119 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adxkJGDAEeq8BovXV4ESzw" id="(0.50199203187251,0.0)"/>
2120 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adxkJWDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2121 </edges>
2122 <edges xmi:type="notation:Edge" xmi:id="_adxkJmDAEeq8BovXV4ESzw" type="4001" element="_aY-jsGDAEeq8BovXV4ESzw" source="_aa5PQ2DAEeq8BovXV4ESzw" target="_aa3aE2DAEeq8BovXV4ESzw">
2123 <children xmi:type="notation:Node" xmi:id="_adyLMGDAEeq8BovXV4ESzw" type="6001">
2124 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adyLMWDAEeq8BovXV4ESzw" y="-10"/>
2125 </children>
2126 <children xmi:type="notation:Node" xmi:id="_adyLMmDAEeq8BovXV4ESzw" type="6002">
2127 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adyLM2DAEeq8BovXV4ESzw" y="10"/>
2128 </children>
2129 <children xmi:type="notation:Node" xmi:id="_adyLNGDAEeq8BovXV4ESzw" type="6003">
2130 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adyLNWDAEeq8BovXV4ESzw" y="10"/>
2131 </children>
2132 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adxkJ2DAEeq8BovXV4ESzw" routing="Tree"/>
2133 <styles xmi:type="notation:FontStyle" xmi:id="_adxkKGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2134 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adxkKWDAEeq8BovXV4ESzw" points="[-1, 0, 312, 60]$[-314, -60, -1, 0]"/>
2135 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adyyQGDAEeq8BovXV4ESzw" id="(0.5068493150684932,0.0)"/>
2136 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adyyQWDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2137 </edges>
2138 <edges xmi:type="notation:Edge" xmi:id="_adyyQmDAEeq8BovXV4ESzw" type="4001" element="_aY_KxmDAEeq8BovXV4ESzw" source="_aa6dYGDAEeq8BovXV4ESzw" target="_aa3aE2DAEeq8BovXV4ESzw">
2139 <children xmi:type="notation:Node" xmi:id="_adyyRmDAEeq8BovXV4ESzw" type="6001">
2140 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adyyR2DAEeq8BovXV4ESzw" y="-10"/>
2141 </children>
2142 <children xmi:type="notation:Node" xmi:id="_adyySGDAEeq8BovXV4ESzw" type="6002">
2143 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adyySWDAEeq8BovXV4ESzw" y="10"/>
2144 </children>
2145 <children xmi:type="notation:Node" xmi:id="_adzZUGDAEeq8BovXV4ESzw" type="6003">
2146 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_adzZUWDAEeq8BovXV4ESzw" y="10"/>
2147 </children>
2148 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adyyQ2DAEeq8BovXV4ESzw" routing="Tree"/>
2149 <styles xmi:type="notation:FontStyle" xmi:id="_adyyRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2150 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adyyRWDAEeq8BovXV4ESzw" points="[-1, 0, -150, 60]$[148, -60, -1, 0]"/>
2151 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adzZUmDAEeq8BovXV4ESzw" id="(0.5015290519877675,0.0)"/>
2152 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_adzZU2DAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2153 </edges>
2154 <edges xmi:type="notation:Edge" xmi:id="_adzZVGDAEeq8BovXV4ESzw" type="4001" element="_aZAY42DAEeq8BovXV4ESzw" source="_aa7rhGDAEeq8BovXV4ESzw" target="_aa3aE2DAEeq8BovXV4ESzw">
2155 <children xmi:type="notation:Node" xmi:id="_ad0AYGDAEeq8BovXV4ESzw" type="6001">
2156 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad0AYWDAEeq8BovXV4ESzw" y="-10"/>
2157 </children>
2158 <children xmi:type="notation:Node" xmi:id="_ad0AYmDAEeq8BovXV4ESzw" type="6002">
2159 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad0AY2DAEeq8BovXV4ESzw" y="10"/>
2160 </children>
2161 <children xmi:type="notation:Node" xmi:id="_ad0AZGDAEeq8BovXV4ESzw" type="6003">
2162 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad0AZWDAEeq8BovXV4ESzw" y="10"/>
2163 </children>
2164 <styles xmi:type="notation:ConnectorStyle" xmi:id="_adzZVWDAEeq8BovXV4ESzw" routing="Tree"/>
2165 <styles xmi:type="notation:FontStyle" xmi:id="_adzZVmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2166 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adzZV2DAEeq8BovXV4ESzw" points="[-1, 0, -1003, 60]$[1001, -60, -1, 0]"/>
2167 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad0AZmDAEeq8BovXV4ESzw" id="(0.5017605633802817,0.0)"/>
2168 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad0AZ2DAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2169 </edges>
2170 <edges xmi:type="notation:Edge" xmi:id="_ad0AaGDAEeq8BovXV4ESzw" type="4001" element="_aZBnAGDAEeq8BovXV4ESzw" source="_aa-HwGDAEeq8BovXV4ESzw" target="_aa3aE2DAEeq8BovXV4ESzw">
2171 <children xmi:type="notation:Node" xmi:id="_ad0ncGDAEeq8BovXV4ESzw" type="6001">
2172 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad0ncWDAEeq8BovXV4ESzw" y="-10"/>
2173 </children>
2174 <children xmi:type="notation:Node" xmi:id="_ad0ncmDAEeq8BovXV4ESzw" type="6002">
2175 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad0nc2DAEeq8BovXV4ESzw" y="10"/>
2176 </children>
2177 <children xmi:type="notation:Node" xmi:id="_ad0ndGDAEeq8BovXV4ESzw" type="6003">
2178 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad0ndWDAEeq8BovXV4ESzw" y="10"/>
2179 </children>
2180 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad0AaWDAEeq8BovXV4ESzw" routing="Tree"/>
2181 <styles xmi:type="notation:FontStyle" xmi:id="_ad0AamDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2182 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad0Aa2DAEeq8BovXV4ESzw" points="[-1, 0, 524, 60]$[-526, -60, -1, 0]"/>
2183 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad1OgGDAEeq8BovXV4ESzw" id="(0.5064935064935064,0.0)"/>
2184 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad1OgWDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2185 </edges>
2186 <edges xmi:type="notation:Edge" xmi:id="_ad1OgmDAEeq8BovXV4ESzw" type="4001" element="_aZCOE2DAEeq8BovXV4ESzw" source="_aa-u1GDAEeq8BovXV4ESzw" target="_aa3aE2DAEeq8BovXV4ESzw">
2187 <children xmi:type="notation:Node" xmi:id="_ad1OhmDAEeq8BovXV4ESzw" type="6001">
2188 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad1Oh2DAEeq8BovXV4ESzw" y="-10"/>
2189 </children>
2190 <children xmi:type="notation:Node" xmi:id="_ad11kGDAEeq8BovXV4ESzw" type="6002">
2191 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad11kWDAEeq8BovXV4ESzw" y="10"/>
2192 </children>
2193 <children xmi:type="notation:Node" xmi:id="_ad11kmDAEeq8BovXV4ESzw" type="6003">
2194 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad11k2DAEeq8BovXV4ESzw" y="10"/>
2195 </children>
2196 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad1Og2DAEeq8BovXV4ESzw" routing="Tree"/>
2197 <styles xmi:type="notation:FontStyle" xmi:id="_ad1OhGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2198 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad1OhWDAEeq8BovXV4ESzw" points="[-1, 0, -598, 60]$[596, -60, -1, 0]"/>
2199 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad11lGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2200 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad11lWDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2201 </edges>
2202 <edges xmi:type="notation:Edge" xmi:id="_ad11lmDAEeq8BovXV4ESzw" type="4001" element="_aZDcM2DAEeq8BovXV4ESzw" source="_aa_88GDAEeq8BovXV4ESzw" target="_abAkA2DAEeq8BovXV4ESzw">
2203 <children xmi:type="notation:Node" xmi:id="_ad2coGDAEeq8BovXV4ESzw" type="6001">
2204 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad2coWDAEeq8BovXV4ESzw" y="-10"/>
2205 </children>
2206 <children xmi:type="notation:Node" xmi:id="_ad2comDAEeq8BovXV4ESzw" type="6002">
2207 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad2co2DAEeq8BovXV4ESzw" y="10"/>
2208 </children>
2209 <children xmi:type="notation:Node" xmi:id="_ad3DsGDAEeq8BovXV4ESzw" type="6003">
2210 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad3DsWDAEeq8BovXV4ESzw" y="10"/>
2211 </children>
2212 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad11l2DAEeq8BovXV4ESzw" routing="Tree"/>
2213 <styles xmi:type="notation:FontStyle" xmi:id="_ad11mGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2214 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad11mWDAEeq8BovXV4ESzw" points="[-1, 0, -558, 60]$[556, -60, -1, 0]"/>
2215 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad3DsmDAEeq8BovXV4ESzw" id="(0.5025510204081632,0.0)"/>
2216 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad3Ds2DAEeq8BovXV4ESzw" id="(0.5040650406504065,1.0)"/>
2217 </edges>
2218 <edges xmi:type="notation:Edge" xmi:id="_ad3DtGDAEeq8BovXV4ESzw" type="4001" element="_aZEqUGDAEeq8BovXV4ESzw" source="_abAkA2DAEeq8BovXV4ESzw" target="_aaUAc2DAEeq8BovXV4ESzw">
2219 <children xmi:type="notation:Node" xmi:id="_ad3qwGDAEeq8BovXV4ESzw" type="6001">
2220 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad3qwWDAEeq8BovXV4ESzw" y="-10"/>
2221 </children>
2222 <children xmi:type="notation:Node" xmi:id="_ad3qwmDAEeq8BovXV4ESzw" type="6002">
2223 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad3qw2DAEeq8BovXV4ESzw" y="10"/>
2224 </children>
2225 <children xmi:type="notation:Node" xmi:id="_ad3qxGDAEeq8BovXV4ESzw" type="6003">
2226 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad3qxWDAEeq8BovXV4ESzw" y="10"/>
2227 </children>
2228 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad3DtWDAEeq8BovXV4ESzw" routing="Tree"/>
2229 <styles xmi:type="notation:FontStyle" xmi:id="_ad3DtmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2230 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad3Dt2DAEeq8BovXV4ESzw" points="[-1, 0, -1050, 60]$[1048, -60, -1, 0]"/>
2231 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad4R0GDAEeq8BovXV4ESzw" id="(0.5040650406504065,0.0)"/>
2232 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad4R0WDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2233 </edges>
2234 <edges xmi:type="notation:Edge" xmi:id="_ad4R0mDAEeq8BovXV4ESzw" type="4001" element="_aZFRY2DAEeq8BovXV4ESzw" source="_abCZMGDAEeq8BovXV4ESzw" target="_abAkA2DAEeq8BovXV4ESzw">
2235 <children xmi:type="notation:Node" xmi:id="_ad444GDAEeq8BovXV4ESzw" type="6001">
2236 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad444WDAEeq8BovXV4ESzw" y="-10"/>
2237 </children>
2238 <children xmi:type="notation:Node" xmi:id="_ad444mDAEeq8BovXV4ESzw" type="6002">
2239 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad4442DAEeq8BovXV4ESzw" y="10"/>
2240 </children>
2241 <children xmi:type="notation:Node" xmi:id="_ad445GDAEeq8BovXV4ESzw" type="6003">
2242 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad445WDAEeq8BovXV4ESzw" y="10"/>
2243 </children>
2244 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad4R02DAEeq8BovXV4ESzw" routing="Tree"/>
2245 <styles xmi:type="notation:FontStyle" xmi:id="_ad4R1GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2246 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad4R1WDAEeq8BovXV4ESzw" points="[-1, 0, 847, 60]$[-849, -60, -1, 0]"/>
2247 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad5f8GDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2248 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad5f8WDAEeq8BovXV4ESzw" id="(0.5040650406504065,1.0)"/>
2249 </edges>
2250 <edges xmi:type="notation:Edge" xmi:id="_ad5f8mDAEeq8BovXV4ESzw" type="4001" element="_aZF4dmDAEeq8BovXV4ESzw" source="_abDARGDAEeq8BovXV4ESzw" target="_abAkA2DAEeq8BovXV4ESzw">
2251 <children xmi:type="notation:Node" xmi:id="_ad5f9mDAEeq8BovXV4ESzw" type="6001">
2252 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad5f92DAEeq8BovXV4ESzw" y="-10"/>
2253 </children>
2254 <children xmi:type="notation:Node" xmi:id="_ad5f-GDAEeq8BovXV4ESzw" type="6002">
2255 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad5f-WDAEeq8BovXV4ESzw" y="10"/>
2256 </children>
2257 <children xmi:type="notation:Node" xmi:id="_ad6HAGDAEeq8BovXV4ESzw" type="6003">
2258 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad6HAWDAEeq8BovXV4ESzw" y="10"/>
2259 </children>
2260 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad5f82DAEeq8BovXV4ESzw" routing="Tree"/>
2261 <styles xmi:type="notation:FontStyle" xmi:id="_ad5f9GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2262 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad5f9WDAEeq8BovXV4ESzw" points="[-1, 0, -1331, 60]$[1329, -60, -1, 0]"/>
2263 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad6HAmDAEeq8BovXV4ESzw" id="(0.5011933174224343,0.0)"/>
2264 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad6HA2DAEeq8BovXV4ESzw" id="(0.5040650406504065,1.0)"/>
2265 </edges>
2266 <edges xmi:type="notation:Edge" xmi:id="_ad6HBGDAEeq8BovXV4ESzw" type="4001" element="_aZGfhmDAEeq8BovXV4ESzw" source="_abEOYGDAEeq8BovXV4ESzw" target="_abAkA2DAEeq8BovXV4ESzw">
2267 <children xmi:type="notation:Node" xmi:id="_ad6uEGDAEeq8BovXV4ESzw" type="6001">
2268 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad6uEWDAEeq8BovXV4ESzw" y="-10"/>
2269 </children>
2270 <children xmi:type="notation:Node" xmi:id="_ad6uEmDAEeq8BovXV4ESzw" type="6002">
2271 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad6uE2DAEeq8BovXV4ESzw" y="10"/>
2272 </children>
2273 <children xmi:type="notation:Node" xmi:id="_ad6uFGDAEeq8BovXV4ESzw" type="6003">
2274 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad6uFWDAEeq8BovXV4ESzw" y="10"/>
2275 </children>
2276 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad6HBWDAEeq8BovXV4ESzw" routing="Tree"/>
2277 <styles xmi:type="notation:FontStyle" xmi:id="_ad6HBmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2278 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad6HB2DAEeq8BovXV4ESzw" points="[-1, 0, -1, 60]$[-1, -60, -1, 0]"/>
2279 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad7VIGDAEeq8BovXV4ESzw" id="(0.5008347245409015,0.0)"/>
2280 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad7VIWDAEeq8BovXV4ESzw" id="(0.5040650406504065,1.0)"/>
2281 </edges>
2282 <edges xmi:type="notation:Edge" xmi:id="_ad7VImDAEeq8BovXV4ESzw" type="4001" element="_aZHGlmDAEeq8BovXV4ESzw" source="_abE1dGDAEeq8BovXV4ESzw" target="_abAkA2DAEeq8BovXV4ESzw">
2283 <children xmi:type="notation:Node" xmi:id="_ad78MGDAEeq8BovXV4ESzw" type="6001">
2284 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad78MWDAEeq8BovXV4ESzw" y="-10"/>
2285 </children>
2286 <children xmi:type="notation:Node" xmi:id="_ad78MmDAEeq8BovXV4ESzw" type="6002">
2287 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad78M2DAEeq8BovXV4ESzw" y="10"/>
2288 </children>
2289 <children xmi:type="notation:Node" xmi:id="_ad78NGDAEeq8BovXV4ESzw" type="6003">
2290 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad78NWDAEeq8BovXV4ESzw" y="10"/>
2291 </children>
2292 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad7VI2DAEeq8BovXV4ESzw" routing="Tree"/>
2293 <styles xmi:type="notation:FontStyle" xmi:id="_ad7VJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2294 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad7VJWDAEeq8BovXV4ESzw" points="[-1, 0, -938, 60]$[936, -60, -1, 0]"/>
2295 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad8jQGDAEeq8BovXV4ESzw" id="(0.5020576131687243,0.0)"/>
2296 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad8jQWDAEeq8BovXV4ESzw" id="(0.5040650406504065,1.0)"/>
2297 </edges>
2298 <edges xmi:type="notation:Edge" xmi:id="_ad8jQmDAEeq8BovXV4ESzw" type="4001" element="_aZHtpmDAEeq8BovXV4ESzw" source="_abGDk2DAEeq8BovXV4ESzw" target="_abAkA2DAEeq8BovXV4ESzw">
2299 <children xmi:type="notation:Node" xmi:id="_ad9KUGDAEeq8BovXV4ESzw" type="6001">
2300 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad9KUWDAEeq8BovXV4ESzw" y="-10"/>
2301 </children>
2302 <children xmi:type="notation:Node" xmi:id="_ad9KUmDAEeq8BovXV4ESzw" type="6002">
2303 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad9KU2DAEeq8BovXV4ESzw" y="10"/>
2304 </children>
2305 <children xmi:type="notation:Node" xmi:id="_ad9KVGDAEeq8BovXV4ESzw" type="6003">
2306 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad9KVWDAEeq8BovXV4ESzw" y="10"/>
2307 </children>
2308 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad8jQ2DAEeq8BovXV4ESzw" routing="Tree"/>
2309 <styles xmi:type="notation:FontStyle" xmi:id="_ad8jRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2310 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad8jRWDAEeq8BovXV4ESzw" points="[-1, 0, 543, 60]$[-545, -60, -1, 0]"/>
2311 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad9xYGDAEeq8BovXV4ESzw" id="(0.5013698630136987,0.0)"/>
2312 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad9xYWDAEeq8BovXV4ESzw" id="(0.5040650406504065,1.0)"/>
2313 </edges>
2314 <edges xmi:type="notation:Edge" xmi:id="_ad9xYmDAEeq8BovXV4ESzw" type="4001" element="_aZIUs2DAEeq8BovXV4ESzw" source="_abGqpGDAEeq8BovXV4ESzw" target="_aaUAc2DAEeq8BovXV4ESzw">
2315 <children xmi:type="notation:Node" xmi:id="_ad9xZmDAEeq8BovXV4ESzw" type="6001">
2316 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad9xZ2DAEeq8BovXV4ESzw" y="-10"/>
2317 </children>
2318 <children xmi:type="notation:Node" xmi:id="_ad-YcGDAEeq8BovXV4ESzw" type="6002">
2319 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad-YcWDAEeq8BovXV4ESzw" y="10"/>
2320 </children>
2321 <children xmi:type="notation:Node" xmi:id="_ad-YcmDAEeq8BovXV4ESzw" type="6003">
2322 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad-Yc2DAEeq8BovXV4ESzw" y="10"/>
2323 </children>
2324 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad9xY2DAEeq8BovXV4ESzw" routing="Tree"/>
2325 <styles xmi:type="notation:FontStyle" xmi:id="_ad9xZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2326 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad9xZWDAEeq8BovXV4ESzw" points="[-1, 0, -549, 60]$[547, -60, -1, 0]"/>
2327 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad-YdGDAEeq8BovXV4ESzw" id="(0.5078125,0.0)"/>
2328 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad-YdWDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2329 </edges>
2330 <edges xmi:type="notation:Edge" xmi:id="_ad-_gGDAEeq8BovXV4ESzw" type="4001" element="_aZI7xmDAEeq8BovXV4ESzw" source="_abHRtGDAEeq8BovXV4ESzw" target="_aaUAc2DAEeq8BovXV4ESzw">
2331 <children xmi:type="notation:Node" xmi:id="_ad-_hGDAEeq8BovXV4ESzw" type="6001">
2332 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad-_hWDAEeq8BovXV4ESzw" y="-10"/>
2333 </children>
2334 <children xmi:type="notation:Node" xmi:id="_ad-_hmDAEeq8BovXV4ESzw" type="6002">
2335 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad-_h2DAEeq8BovXV4ESzw" y="10"/>
2336 </children>
2337 <children xmi:type="notation:Node" xmi:id="_ad_mkGDAEeq8BovXV4ESzw" type="6003">
2338 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ad_mkWDAEeq8BovXV4ESzw" y="10"/>
2339 </children>
2340 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad-_gWDAEeq8BovXV4ESzw" routing="Tree"/>
2341 <styles xmi:type="notation:FontStyle" xmi:id="_ad-_gmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2342 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad-_g2DAEeq8BovXV4ESzw" points="[-1, 0, -276, 60]$[274, -60, -1, 0]"/>
2343 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad_mkmDAEeq8BovXV4ESzw" id="(0.5016949152542373,0.0)"/>
2344 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ad_mk2DAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2345 </edges>
2346 <edges xmi:type="notation:Edge" xmi:id="_ad_mlGDAEeq8BovXV4ESzw" type="4001" element="_aZJi02DAEeq8BovXV4ESzw" source="_abIf0GDAEeq8BovXV4ESzw" target="_abIf12DAEeq8BovXV4ESzw">
2347 <children xmi:type="notation:Node" xmi:id="_aeANoGDAEeq8BovXV4ESzw" type="6001">
2348 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeANoWDAEeq8BovXV4ESzw" y="-10"/>
2349 </children>
2350 <children xmi:type="notation:Node" xmi:id="_aeANomDAEeq8BovXV4ESzw" type="6002">
2351 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeANo2DAEeq8BovXV4ESzw" y="10"/>
2352 </children>
2353 <children xmi:type="notation:Node" xmi:id="_aeANpGDAEeq8BovXV4ESzw" type="6003">
2354 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeANpWDAEeq8BovXV4ESzw" y="10"/>
2355 </children>
2356 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ad_mlWDAEeq8BovXV4ESzw" routing="Tree"/>
2357 <styles xmi:type="notation:FontStyle" xmi:id="_ad_mlmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2358 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ad_ml2DAEeq8BovXV4ESzw" points="[-1, 0, 201, 60]$[-203, -60, -1, 0]"/>
2359 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeA0sGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2360 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeA0sWDAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
2361 </edges>
2362 <edges xmi:type="notation:Edge" xmi:id="_aeA0smDAEeq8BovXV4ESzw" type="4001" element="_aZKJ4GDAEeq8BovXV4ESzw" source="_abIf12DAEeq8BovXV4ESzw" target="_aaUAc2DAEeq8BovXV4ESzw">
2363 <children xmi:type="notation:Node" xmi:id="_aeBbwGDAEeq8BovXV4ESzw" type="6001">
2364 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeBbwWDAEeq8BovXV4ESzw" y="-10"/>
2365 </children>
2366 <children xmi:type="notation:Node" xmi:id="_aeBbwmDAEeq8BovXV4ESzw" type="6002">
2367 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeBbw2DAEeq8BovXV4ESzw" y="10"/>
2368 </children>
2369 <children xmi:type="notation:Node" xmi:id="_aeBbxGDAEeq8BovXV4ESzw" type="6003">
2370 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeBbxWDAEeq8BovXV4ESzw" y="10"/>
2371 </children>
2372 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeA0s2DAEeq8BovXV4ESzw" routing="Tree"/>
2373 <styles xmi:type="notation:FontStyle" xmi:id="_aeA0tGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2374 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeA0tWDAEeq8BovXV4ESzw" points="[-1, 0, -1, 60]$[-1, -60, -1, 0]"/>
2375 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeCC0GDAEeq8BovXV4ESzw" id="(0.5038167938931297,0.0)"/>
2376 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeCC0WDAEeq8BovXV4ESzw" id="(0.5018587360594795,1.0)"/>
2377 </edges>
2378 <edges xmi:type="notation:Edge" xmi:id="_aeCC0mDAEeq8BovXV4ESzw" type="4001" element="_aZKJ52DAEeq8BovXV4ESzw" source="_abJt8GDAEeq8BovXV4ESzw" target="_abIf12DAEeq8BovXV4ESzw">
2379 <children xmi:type="notation:Node" xmi:id="_aeCC1mDAEeq8BovXV4ESzw" type="6001">
2380 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeCC12DAEeq8BovXV4ESzw" y="-10"/>
2381 </children>
2382 <children xmi:type="notation:Node" xmi:id="_aeCC2GDAEeq8BovXV4ESzw" type="6002">
2383 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeCC2WDAEeq8BovXV4ESzw" y="10"/>
2384 </children>
2385 <children xmi:type="notation:Node" xmi:id="_aeCp4GDAEeq8BovXV4ESzw" type="6003">
2386 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeCp4WDAEeq8BovXV4ESzw" y="10"/>
2387 </children>
2388 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeCC02DAEeq8BovXV4ESzw" routing="Tree"/>
2389 <styles xmi:type="notation:FontStyle" xmi:id="_aeCC1GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2390 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeCC1WDAEeq8BovXV4ESzw" points="[-1, 0, -1, 60]$[-1, -60, -1, 0]"/>
2391 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeCp4mDAEeq8BovXV4ESzw" id="(0.5031055900621118,0.0)"/>
2392 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeCp42DAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
2393 </edges>
2394 <edges xmi:type="notation:Edge" xmi:id="_aeCp5GDAEeq8BovXV4ESzw" type="4001" element="_aZLYAGDAEeq8BovXV4ESzw" source="_aaQWEGDAEeq8BovXV4ESzw" target="_aaSyUGDAEeq8BovXV4ESzw">
2395 <children xmi:type="notation:Node" xmi:id="_aeDQ8GDAEeq8BovXV4ESzw" type="6001">
2396 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeDQ8WDAEeq8BovXV4ESzw" y="-10"/>
2397 </children>
2398 <children xmi:type="notation:Node" xmi:id="_aeDQ8mDAEeq8BovXV4ESzw" type="6002">
2399 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeDQ82DAEeq8BovXV4ESzw" y="10"/>
2400 </children>
2401 <children xmi:type="notation:Node" xmi:id="_aeDQ9GDAEeq8BovXV4ESzw" type="6003">
2402 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeDQ9WDAEeq8BovXV4ESzw" x="-10"/>
2403 </children>
2404 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeCp5WDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2405 <styles xmi:type="notation:FontStyle" xmi:id="_aeCp5mDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2406 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeCp52DAEeq8BovXV4ESzw" points="[43, -86, 34, 114]$[43, -145, 34, 55]"/>
2407 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeD4AGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2408 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeD4AWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2409 </edges>
2410 <edges xmi:type="notation:Edge" xmi:id="_aeD4AmDAEeq8BovXV4ESzw" type="4001" element="_aZNNMGDAEeq8BovXV4ESzw" source="_aag0w2DAEeq8BovXV4ESzw" target="_aag0w2DAEeq8BovXV4ESzw">
2411 <children xmi:type="notation:Node" xmi:id="_aeD4BmDAEeq8BovXV4ESzw" type="6001">
2412 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeD4B2DAEeq8BovXV4ESzw" y="-10"/>
2413 </children>
2414 <children xmi:type="notation:Node" xmi:id="_aeEfEGDAEeq8BovXV4ESzw" type="6002">
2415 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeEfEWDAEeq8BovXV4ESzw" y="10"/>
2416 </children>
2417 <children xmi:type="notation:Node" xmi:id="_aeEfEmDAEeq8BovXV4ESzw" type="6003">
2418 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeEfE2DAEeq8BovXV4ESzw" y="10"/>
2419 </children>
2420 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeD4A2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2421 <styles xmi:type="notation:FontStyle" xmi:id="_aeD4BGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2422 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeD4BWDAEeq8BovXV4ESzw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
2423 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeFGIGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2424 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeFGIWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2425 </edges>
2426 <edges xmi:type="notation:Edge" xmi:id="_aeFGImDAEeq8BovXV4ESzw" type="4001" element="_aZN0QGDAEeq8BovXV4ESzw" source="_aaUAc2DAEeq8BovXV4ESzw" target="_aaWcsGDAEeq8BovXV4ESzw">
2427 <children xmi:type="notation:Node" xmi:id="_aeFGJmDAEeq8BovXV4ESzw" type="6001">
2428 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeFGJ2DAEeq8BovXV4ESzw" y="-10"/>
2429 </children>
2430 <children xmi:type="notation:Node" xmi:id="_aeFtMGDAEeq8BovXV4ESzw" type="6002">
2431 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeFtMWDAEeq8BovXV4ESzw" y="10"/>
2432 </children>
2433 <children xmi:type="notation:Node" xmi:id="_aeFtMmDAEeq8BovXV4ESzw" type="6003">
2434 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeFtM2DAEeq8BovXV4ESzw" y="10"/>
2435 </children>
2436 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeFGI2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2437 <styles xmi:type="notation:FontStyle" xmi:id="_aeFGJGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2438 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeFGJWDAEeq8BovXV4ESzw" points="[0, -50, -637, 140]$[637, -110, 0, 80]"/>
2439 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeFtNGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2440 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeFtNWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2441 </edges>
2442 <edges xmi:type="notation:Edge" xmi:id="_aeFtNmDAEeq8BovXV4ESzw" type="4001" element="_aZObUGDAEeq8BovXV4ESzw" source="_aaWcsGDAEeq8BovXV4ESzw" target="_aaeYg2DAEeq8BovXV4ESzw">
2443 <children xmi:type="notation:Node" xmi:id="_aeGUQGDAEeq8BovXV4ESzw" type="6001">
2444 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeGUQWDAEeq8BovXV4ESzw" x="-29" y="-10"/>
2445 </children>
2446 <children xmi:type="notation:Node" xmi:id="_aeGUQmDAEeq8BovXV4ESzw" type="6002">
2447 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeGUQ2DAEeq8BovXV4ESzw" x="8" y="10"/>
2448 </children>
2449 <children xmi:type="notation:Node" xmi:id="_aeGURGDAEeq8BovXV4ESzw" type="6003">
2450 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeGURWDAEeq8BovXV4ESzw" x="-8" y="10"/>
2451 </children>
2452 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeFtN2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2453 <styles xmi:type="notation:FontStyle" xmi:id="_aeFtOGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2454 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeFtOWDAEeq8BovXV4ESzw" points="[-128, -49, 184, 167]$[-128, -108, 184, 108]$[-241, -108, 71, 108]$[-241, -167, 71, 49]"/>
2455 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeG7UGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2456 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeG7UWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2457 </edges>
2458 <edges xmi:type="notation:Edge" xmi:id="_aeG7UmDAEeq8BovXV4ESzw" type="4001" element="_aZObV2DAEeq8BovXV4ESzw" source="_aag0w2DAEeq8BovXV4ESzw" target="_aaip8GDAEeq8BovXV4ESzw">
2459 <children xmi:type="notation:Node" xmi:id="_aeG7VmDAEeq8BovXV4ESzw" type="6001">
2460 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeG7V2DAEeq8BovXV4ESzw" x="55" y="-10"/>
2461 </children>
2462 <children xmi:type="notation:Node" xmi:id="_aeG7WGDAEeq8BovXV4ESzw" type="6002">
2463 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeG7WWDAEeq8BovXV4ESzw"/>
2464 </children>
2465 <children xmi:type="notation:Node" xmi:id="_aeHiYGDAEeq8BovXV4ESzw" type="6003">
2466 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeHiYWDAEeq8BovXV4ESzw" x="-9" y="-10"/>
2467 </children>
2468 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeG7U2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2469 <styles xmi:type="notation:FontStyle" xmi:id="_aeG7VGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2470 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeG7VWDAEeq8BovXV4ESzw" points="[-62, 0, 342, 55]$[-62, -84, 342, -29]$[-315, -84, 89, -29]"/>
2471 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeHiYmDAEeq8BovXV4ESzw" id="(0.5018450184501845,0.0)"/>
2472 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeHiY2DAEeq8BovXV4ESzw" id="(0.5027932960893855,1.0)"/>
2473 </edges>
2474 <edges xmi:type="notation:Edge" xmi:id="_aeHiZGDAEeq8BovXV4ESzw" type="4001" element="_aZPCZmDAEeq8BovXV4ESzw" source="_aaOg5GDAEeq8BovXV4ESzw" target="_aaWcsGDAEeq8BovXV4ESzw">
2475 <children xmi:type="notation:Node" xmi:id="_aeIJcGDAEeq8BovXV4ESzw" type="6001">
2476 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeIJcWDAEeq8BovXV4ESzw" y="-10"/>
2477 </children>
2478 <children xmi:type="notation:Node" xmi:id="_aeIJcmDAEeq8BovXV4ESzw" type="6002">
2479 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeIJc2DAEeq8BovXV4ESzw" x="11" y="10"/>
2480 </children>
2481 <children xmi:type="notation:Node" xmi:id="_aeIJdGDAEeq8BovXV4ESzw" type="6003">
2482 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeIJdWDAEeq8BovXV4ESzw" x="-11" y="10"/>
2483 </children>
2484 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeHiZWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2485 <styles xmi:type="notation:FontStyle" xmi:id="_aeHiZmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2486 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeHiZ2DAEeq8BovXV4ESzw" points="[-58, -49, 125, 167]$[-58, -108, 125, 108]$[-125, -108, 58, 108]$[-125, -167, 58, 49]"/>
2487 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeIJdmDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2488 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeIJd2DAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2489 </edges>
2490 <edges xmi:type="notation:Edge" xmi:id="_aeIwgGDAEeq8BovXV4ESzw" type="4001" element="_aZQQgGDAEeq8BovXV4ESzw" source="_aaUAc2DAEeq8BovXV4ESzw" target="_aaeYg2DAEeq8BovXV4ESzw">
2491 <children xmi:type="notation:Node" xmi:id="_aeIwhGDAEeq8BovXV4ESzw" type="6001">
2492 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeIwhWDAEeq8BovXV4ESzw" y="-10"/>
2493 </children>
2494 <children xmi:type="notation:Node" xmi:id="_aeIwhmDAEeq8BovXV4ESzw" type="6002">
2495 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeIwh2DAEeq8BovXV4ESzw" y="10"/>
2496 </children>
2497 <children xmi:type="notation:Node" xmi:id="_aeIwiGDAEeq8BovXV4ESzw" type="6003">
2498 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeIwiWDAEeq8BovXV4ESzw" y="10"/>
2499 </children>
2500 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeIwgWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2501 <styles xmi:type="notation:FontStyle" xmi:id="_aeIwgmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2502 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeIwg2DAEeq8BovXV4ESzw" points="[0, -50, -329, 359]$[163, -111, -166, 298]$[207, -269, -122, 140]$[329, -329, 0, 80]"/>
2503 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeJXkGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2504 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeJXkWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2505 </edges>
2506 <edges xmi:type="notation:Edge" xmi:id="_aeJXkmDAEeq8BovXV4ESzw" type="4001" element="_aZQQh2DAEeq8BovXV4ESzw" source="_aae_lGDAEeq8BovXV4ESzw" target="_aag0w2DAEeq8BovXV4ESzw">
2507 <children xmi:type="notation:Node" xmi:id="_aeJXlmDAEeq8BovXV4ESzw" type="6001">
2508 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeJXl2DAEeq8BovXV4ESzw" x="47" y="-10"/>
2509 </children>
2510 <children xmi:type="notation:Node" xmi:id="_aeJXmGDAEeq8BovXV4ESzw" type="6002">
2511 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeJXmWDAEeq8BovXV4ESzw" x="6" y="10"/>
2512 </children>
2513 <children xmi:type="notation:Node" xmi:id="_aeJ-oGDAEeq8BovXV4ESzw" type="6003">
2514 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeJ-oWDAEeq8BovXV4ESzw" x="-7" y="10"/>
2515 </children>
2516 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeJXk2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2517 <styles xmi:type="notation:FontStyle" xmi:id="_aeJXlGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2518 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeJXlWDAEeq8BovXV4ESzw" points="[51, 0, -146, -439]$[51, 247, -146, -192]$[197, 247, 0, -192]$[197, 439, 0, 0]"/>
2519 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeJ-omDAEeq8BovXV4ESzw" id="(0.5043103448275862,1.0)"/>
2520 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeJ-o2DAEeq8BovXV4ESzw" id="(0.5018450184501845,0.0)"/>
2521 </edges>
2522 <edges xmi:type="notation:Edge" xmi:id="_aeJ-pGDAEeq8BovXV4ESzw" type="4001" element="_aZReoGDAEeq8BovXV4ESzw" source="_aae_lGDAEeq8BovXV4ESzw" target="_aaj4E2DAEeq8BovXV4ESzw">
2523 <children xmi:type="notation:Node" xmi:id="_aeKlsGDAEeq8BovXV4ESzw" type="6001">
2524 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeKlsWDAEeq8BovXV4ESzw" y="-10"/>
2525 </children>
2526 <children xmi:type="notation:Node" xmi:id="_aeKlsmDAEeq8BovXV4ESzw" type="6002">
2527 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeKls2DAEeq8BovXV4ESzw" y="10"/>
2528 </children>
2529 <children xmi:type="notation:Node" xmi:id="_aeKltGDAEeq8BovXV4ESzw" type="6003">
2530 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeKltWDAEeq8BovXV4ESzw" y="10"/>
2531 </children>
2532 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeJ-pWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2533 <styles xmi:type="notation:FontStyle" xmi:id="_aeJ-pmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2534 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeJ-p2DAEeq8BovXV4ESzw" points="[0, -79, 0, 140]$[0, -139, 0, 80]"/>
2535 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeKltmDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2536 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeKlt2DAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2537 </edges>
2538 <edges xmi:type="notation:Edge" xmi:id="_aeKluGDAEeq8BovXV4ESzw" type="4001" element="_aZSFs2DAEeq8BovXV4ESzw" source="_aaWcsGDAEeq8BovXV4ESzw" target="_aaXq0GDAEeq8BovXV4ESzw">
2539 <children xmi:type="notation:Node" xmi:id="_aeLMwGDAEeq8BovXV4ESzw" type="6001">
2540 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeLMwWDAEeq8BovXV4ESzw" y="-10"/>
2541 </children>
2542 <children xmi:type="notation:Node" xmi:id="_aeLMwmDAEeq8BovXV4ESzw" type="6002">
2543 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeLMw2DAEeq8BovXV4ESzw" y="10"/>
2544 </children>
2545 <children xmi:type="notation:Node" xmi:id="_aeLMxGDAEeq8BovXV4ESzw" type="6003">
2546 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeLMxWDAEeq8BovXV4ESzw" y="10"/>
2547 </children>
2548 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeKluWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2549 <styles xmi:type="notation:FontStyle" xmi:id="_aeKlumDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2550 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeKlu2DAEeq8BovXV4ESzw" points="[-21, 0, -58, 287]$[-21, -287, -58, 0]"/>
2551 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeLMxmDAEeq8BovXV4ESzw" id="(0.5019455252918288,0.0)"/>
2552 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aeLMx2DAEeq8BovXV4ESzw" id="(0.503030303030303,1.0)"/>
2553 </edges>
2554 <edges xmi:type="notation:Edge" xmi:id="_aeLz0GDAEeq8BovXV4ESzw" type="4001" element="_aZT64GDAEeq8BovXV4ESzw" source="_aaWcsGDAEeq8BovXV4ESzw" target="_aaY48GDAEeq8BovXV4ESzw">
2555 <children xmi:type="notation:Node" xmi:id="_aeLz1GDAEeq8BovXV4ESzw" type="6001">
2556 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeLz1WDAEeq8BovXV4ESzw" x="-30" y="-10"/>
2557 </children>
2558 <children xmi:type="notation:Node" xmi:id="_aeLz1mDAEeq8BovXV4ESzw" type="6002">
2559 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeLz12DAEeq8BovXV4ESzw" x="-9" y="10"/>
2560 </children>
2561 <children xmi:type="notation:Node" xmi:id="_ae1UEGDAEeq8BovXV4ESzw" type="6003">
2562 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae1UEWDAEeq8BovXV4ESzw" x="9" y="10"/>
2563 </children>
2564 <styles xmi:type="notation:ConnectorStyle" xmi:id="_aeLz0WDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2565 <styles xmi:type="notation:FontStyle" xmi:id="_aeLz0mDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2566 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aeLz02DAEeq8BovXV4ESzw" points="[50, -49, -169, 167]$[50, -109, -169, 107]$[232, -109, 13, 107]$[232, -167, 13, 49]"/>
2567 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae17IGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2568 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae17IWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2569 </edges>
2570 <edges xmi:type="notation:Edge" xmi:id="_ae17ImDAEeq8BovXV4ESzw" type="4001" element="_aZVJAGDAEeq8BovXV4ESzw" source="_aaOg5GDAEeq8BovXV4ESzw" target="_aaeYg2DAEeq8BovXV4ESzw">
2571 <children xmi:type="notation:Node" xmi:id="_ae2iMGDAEeq8BovXV4ESzw" type="6001">
2572 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae2iMWDAEeq8BovXV4ESzw" x="-21" y="25"/>
2573 </children>
2574 <children xmi:type="notation:Node" xmi:id="_ae2iMmDAEeq8BovXV4ESzw" type="6002">
2575 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae2iM2DAEeq8BovXV4ESzw" x="-61" y="10"/>
2576 </children>
2577 <children xmi:type="notation:Node" xmi:id="_ae2iNGDAEeq8BovXV4ESzw" type="6003">
2578 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae2iNWDAEeq8BovXV4ESzw" x="-12" y="10"/>
2579 </children>
2580 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae17I2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2581 <styles xmi:type="notation:FontStyle" xmi:id="_ae17JGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2582 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae17JWDAEeq8BovXV4ESzw" points="[-95, -24, 400, 408]$[-432, -24, 63, 408]$[-432, -383, 63, 49]"/>
2583 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae3JQGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2584 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae3JQWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2585 </edges>
2586 <edges xmi:type="notation:Edge" xmi:id="_ae3JQmDAEeq8BovXV4ESzw" type="4001" element="_aZVwFGDAEeq8BovXV4ESzw" source="_aaQWEGDAEeq8BovXV4ESzw" target="_aaUAc2DAEeq8BovXV4ESzw">
2587 <children xmi:type="notation:Node" xmi:id="_ae3JRmDAEeq8BovXV4ESzw" type="6001">
2588 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae3JR2DAEeq8BovXV4ESzw" x="-74" y="-10"/>
2589 </children>
2590 <children xmi:type="notation:Node" xmi:id="_ae3JSGDAEeq8BovXV4ESzw" type="6002">
2591 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae3JSWDAEeq8BovXV4ESzw" x="10"/>
2592 </children>
2593 <children xmi:type="notation:Node" xmi:id="_ae3JSmDAEeq8BovXV4ESzw" type="6003">
2594 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae3JS2DAEeq8BovXV4ESzw" x="-23" y="10"/>
2595 </children>
2596 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae3JQ2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2597 <styles xmi:type="notation:FontStyle" xmi:id="_ae3JRGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8"/>
2598 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae3JRWDAEeq8BovXV4ESzw" points="[-174, -29, 501, -732]$[-204, -29, 471, -732]$[-204, 248, 471, -455]$[-691, 248, -16, -455]$[-691, 703, -16, 0]"/>
2599 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae3JTGDAEeq8BovXV4ESzw" id="(0.5014409221902018,1.0)"/>
2600 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae3JTWDAEeq8BovXV4ESzw" id="(0.5018587360594795,0.0)"/>
2601 </edges>
2602 <edges xmi:type="notation:Edge" xmi:id="_ae3JTmDAEeq8BovXV4ESzw" type="4001" element="_aZW-MGDAEeq8BovXV4ESzw" source="_aaOg5GDAEeq8BovXV4ESzw" target="_aae_lGDAEeq8BovXV4ESzw">
2603 <children xmi:type="notation:Node" xmi:id="_ae3wUGDAEeq8BovXV4ESzw" type="6001">
2604 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae3wUWDAEeq8BovXV4ESzw" x="-21" y="-10"/>
2605 </children>
2606 <children xmi:type="notation:Node" xmi:id="_ae3wUmDAEeq8BovXV4ESzw" type="6002">
2607 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae3wU2DAEeq8BovXV4ESzw" x="-44" y="10"/>
2608 </children>
2609 <children xmi:type="notation:Node" xmi:id="_ae3wVGDAEeq8BovXV4ESzw" type="6003">
2610 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae3wVWDAEeq8BovXV4ESzw" x="-23"/>
2611 </children>
2612 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae3JT2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2613 <styles xmi:type="notation:FontStyle" xmi:id="_ae3JUGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2614 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae3JUWDAEeq8BovXV4ESzw" points="[79, 12, -306, 103]$[304, 12, -81, 103]$[304, -91, -81, 0]"/>
2615 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae4XYGDAEeq8BovXV4ESzw" id="(0.5052631578947369,0.0)"/>
2616 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae4XYWDAEeq8BovXV4ESzw" id="(0.5043103448275862,1.0)"/>
2617 </edges>
2618 <edges xmi:type="notation:Edge" xmi:id="_ae4XYmDAEeq8BovXV4ESzw" type="4001" element="_aZXlQ2DAEeq8BovXV4ESzw" source="_aaY48GDAEeq8BovXV4ESzw" target="_aaZgA2DAEeq8BovXV4ESzw">
2619 <children xmi:type="notation:Node" xmi:id="_ae4-cGDAEeq8BovXV4ESzw" type="6001">
2620 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae4-cWDAEeq8BovXV4ESzw" x="40" y="-10"/>
2621 </children>
2622 <children xmi:type="notation:Node" xmi:id="_ae4-cmDAEeq8BovXV4ESzw" type="6002">
2623 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae4-c2DAEeq8BovXV4ESzw" x="12" y="10"/>
2624 </children>
2625 <children xmi:type="notation:Node" xmi:id="_ae4-dGDAEeq8BovXV4ESzw" type="6003">
2626 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae4-dWDAEeq8BovXV4ESzw" x="-74" y="10"/>
2627 </children>
2628 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae4XY2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2629 <styles xmi:type="notation:FontStyle" xmi:id="_ae4XZGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2630 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae4XZWDAEeq8BovXV4ESzw" points="[0, 0, 1124, 71]$[0, -36, 1124, 35]$[-960, -36, 164, 35]$[-960, -125, 164, -54]$[-990, -125, 134, -54]"/>
2631 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae5lgGDAEeq8BovXV4ESzw" id="(0.5084745762711864,0.0)"/>
2632 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae5lgWDAEeq8BovXV4ESzw" id="(0.5037037037037037,1.0)"/>
2633 </edges>
2634 <edges xmi:type="notation:Edge" xmi:id="_ae5lgmDAEeq8BovXV4ESzw" type="4001" element="_aZYzYGDAEeq8BovXV4ESzw" source="_aaZgA2DAEeq8BovXV4ESzw" target="_aab8QGDAEeq8BovXV4ESzw">
2635 <children xmi:type="notation:Node" xmi:id="_ae6MkGDAEeq8BovXV4ESzw" type="6001">
2636 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae6MkWDAEeq8BovXV4ESzw" x="26" y="-10"/>
2637 </children>
2638 <children xmi:type="notation:Node" xmi:id="_ae6zoGDAEeq8BovXV4ESzw" type="6002">
2639 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae6zoWDAEeq8BovXV4ESzw" x="-37" y="10"/>
2640 </children>
2641 <children xmi:type="notation:Node" xmi:id="_ae7asGDAEeq8BovXV4ESzw" type="6003">
2642 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae7asWDAEeq8BovXV4ESzw" x="-62" y="10"/>
2643 </children>
2644 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae5lg2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2645 <styles xmi:type="notation:FontStyle" xmi:id="_ae5lhGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2646 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae5lhWDAEeq8BovXV4ESzw" points="[83, -54, -492, 215]$[83, -354, -492, -85]$[576, -354, 1, -85]$[576, -318, 1, -49]"/>
2647 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae8BwGDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2648 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae8BwWDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2649 </edges>
2650 <edges xmi:type="notation:Edge" xmi:id="_ae8BwmDAEeq8BovXV4ESzw" type="4001" element="_aZZacGDAEeq8BovXV4ESzw" source="_aaOg5GDAEeq8BovXV4ESzw" target="_aalGM2DAEeq8BovXV4ESzw">
2651 <children xmi:type="notation:Node" xmi:id="_ae8o0GDAEeq8BovXV4ESzw" type="6001">
2652 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae8o0WDAEeq8BovXV4ESzw" y="-10"/>
2653 </children>
2654 <children xmi:type="notation:Node" xmi:id="_ae8o0mDAEeq8BovXV4ESzw" type="6002">
2655 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae8o02DAEeq8BovXV4ESzw" y="10"/>
2656 </children>
2657 <children xmi:type="notation:Node" xmi:id="_ae8o1GDAEeq8BovXV4ESzw" type="6003">
2658 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae8o1WDAEeq8BovXV4ESzw" y="10"/>
2659 </children>
2660 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae8Bw2DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2661 <styles xmi:type="notation:FontStyle" xmi:id="_ae8BxGDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2662 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae8BxWDAEeq8BovXV4ESzw" points="[-12, -49, -72, 167]$[-12, -167, -72, 49]"/>
2663 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae9P4GDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2664 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae9P4WDAEeq8BovXV4ESzw" id="(0.5,0.5)"/>
2665 </edges>
2666 <edges xmi:type="notation:Edge" xmi:id="_ae9P4mDAEeq8BovXV4ESzw" type="4001" element="_aZaBhmDAEeq8BovXV4ESzw" source="_aaUAc2DAEeq8BovXV4ESzw" target="_aae_lGDAEeq8BovXV4ESzw">
2667 <children xmi:type="notation:Node" xmi:id="_ae928GDAEeq8BovXV4ESzw" type="6001">
2668 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae928WDAEeq8BovXV4ESzw" x="-126" y="-10"/>
2669 </children>
2670 <children xmi:type="notation:Node" xmi:id="_ae928mDAEeq8BovXV4ESzw" type="6002">
2671 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae9282DAEeq8BovXV4ESzw" x="-164" y="10"/>
2672 </children>
2673 <children xmi:type="notation:Node" xmi:id="_ae929GDAEeq8BovXV4ESzw" type="6003">
2674 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae929WDAEeq8BovXV4ESzw" x="-89" y="10"/>
2675 </children>
2676 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae9P42DAEeq8BovXV4ESzw" routing="Rectilinear"/>
2677 <styles xmi:type="notation:FontStyle" xmi:id="_ae9P5GDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2678 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae9P5WDAEeq8BovXV4ESzw" points="[134, 72, -1060, 163]$[1149, 72, -45, 163]$[1149, -91, -45, 0]"/>
2679 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae929mDAEeq8BovXV4ESzw" id="(0.5018587360594795,0.0)"/>
2680 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae9292DAEeq8BovXV4ESzw" id="(0.5043103448275862,1.0)"/>
2681 </edges>
2682 <edges xmi:type="notation:Edge" xmi:id="_ae-eAGDAEeq8BovXV4ESzw" type="4001" element="_aZbPo2DAEeq8BovXV4ESzw" source="_aae_lGDAEeq8BovXV4ESzw" target="_aagNsGDAEeq8BovXV4ESzw">
2683 <children xmi:type="notation:Node" xmi:id="_ae-eBGDAEeq8BovXV4ESzw" type="6001">
2684 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae-eBWDAEeq8BovXV4ESzw" x="-146" y="-10"/>
2685 </children>
2686 <children xmi:type="notation:Node" xmi:id="_ae-eBmDAEeq8BovXV4ESzw" type="6002">
2687 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae-eB2DAEeq8BovXV4ESzw" x="-165" y="10"/>
2688 </children>
2689 <children xmi:type="notation:Node" xmi:id="_ae-eCGDAEeq8BovXV4ESzw" type="6003">
2690 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ae-eCWDAEeq8BovXV4ESzw" x="-128" y="10"/>
2691 </children>
2692 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ae-eAWDAEeq8BovXV4ESzw" routing="Rectilinear"/>
2693 <styles xmi:type="notation:FontStyle" xmi:id="_ae-eAmDAEeq8BovXV4ESzw" fontName="Segoe UI" fontHeight="8" bold="true"/>
2694 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ae-eA2DAEeq8BovXV4ESzw" points="[115, 60, -1184, 178]$[1299, 60, 0, 178]$[1299, -118, 0, 0]"/>
2695 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae_sIGDAEeq8BovXV4ESzw" id="(0.5043103448275862,0.0)"/>
2696 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ae_sIWDAEeq8BovXV4ESzw" id="(0.5038167938931297,1.0)"/>
2697 </edges>
2698 </data>
2699 </ownedAnnotationEntries>
2700 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAS98GDAEeq8BovXV4ESzw" name="Grantor" tooltipText="" width="12" height="10">
2701 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Grantor"/>
2702 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Grantor"/>
2703 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAWBQGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
2704 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
2705 </ownedStyle>
2706 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
2707 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXfV8mDAEeq8BovXV4ESzw" name="WWW" tooltipText="">
2708 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/WWW"/>
2709 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/WWW"/>
2710 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXf9AGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2711 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2712 </ownedStyle>
2713 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2714 </ownedElements>
2715 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXf9AWDAEeq8BovXV4ESzw" name="Employer" tooltipText="">
2716 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/Employer"/>
2717 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/Employer"/>
2718 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXf9AmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2719 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2720 </ownedStyle>
2721 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2722 </ownedElements>
2723 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXf9A2DAEeq8BovXV4ESzw" name="MMM" tooltipText="">
2724 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/MMM"/>
2725 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/MMM"/>
2726 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXgkEGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2727 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2728 </ownedStyle>
2729 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2730 </ownedElements>
2731 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXgkEWDAEeq8BovXV4ESzw" name="UUU" tooltipText="">
2732 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/UUU"/>
2733 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/UUU"/>
2734 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXgkEmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2735 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2736 </ownedStyle>
2737 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2738 </ownedElements>
2739 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXgkE2DAEeq8BovXV4ESzw" name="YYY" tooltipText="">
2740 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/YYY"/>
2741 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/YYY"/>
2742 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXhLIGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2743 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2744 </ownedStyle>
2745 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2746 </ownedElements>
2747 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXhLIWDAEeq8BovXV4ESzw" name="OOO" tooltipText="">
2748 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/OOO"/>
2749 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Grantor/OOO"/>
2750 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXhLImDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2751 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2752 </ownedStyle>
2753 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2754 </ownedElements>
2755 </ownedDiagramElements>
2756 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAYdgGDAEeq8BovXV4ESzw" name="Constants" tooltipText="" width="12" height="10">
2757 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Constants"/>
2758 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Constants"/>
2759 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAa5wGDAEeq8BovXV4ESzw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
2760 <labelFormat>italic</labelFormat>
2761 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
2762 </ownedStyle>
2763 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
2764 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLfhUGDAEeq8BovXV4ESzw" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD : EDouble = 3480.0" tooltipText="">
2765 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"/>
2766 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"/>
2767 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLlA4GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2768 <labelFormat>bold</labelFormat>
2769 </ownedStyle>
2770 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2771 </ownedElements>
2772 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLln8GDAEeq8BovXV4ESzw" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE : EDouble = 3600.0" tooltipText="">
2773 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"/>
2774 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"/>
2775 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLmPAGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2776 <labelFormat>bold</labelFormat>
2777 </ownedStyle>
2778 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2779 </ownedElements>
2780 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLm2EGDAEeq8BovXV4ESzw" name="MINIMUM_SALARY : EDouble = 1500.0" tooltipText="">
2781 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MINIMUM_SALARY"/>
2782 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MINIMUM_SALARY"/>
2783 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLndIGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2784 <labelFormat>bold</labelFormat>
2785 </ownedStyle>
2786 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2787 </ownedElements>
2788 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLndIWDAEeq8BovXV4ESzw" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION : EDouble = 4500.0" tooltipText="">
2789 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"/>
2790 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"/>
2791 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLoEMGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2792 <labelFormat>bold</labelFormat>
2793 </ownedStyle>
2794 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2795 </ownedElements>
2796 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLoEMWDAEeq8BovXV4ESzw" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS : EDouble = 20.0" tooltipText="">
2797 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"/>
2798 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"/>
2799 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLpSUGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2800 <labelFormat>bold</labelFormat>
2801 </ownedStyle>
2802 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2803 </ownedElements>
2804 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLpSUWDAEeq8BovXV4ESzw" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS : EDouble = 120.0" tooltipText="">
2805 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"/>
2806 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"/>
2807 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLp5YGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2808 <labelFormat>bold</labelFormat>
2809 </ownedStyle>
2810 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2811 </ownedElements>
2812 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLp5YWDAEeq8BovXV4ESzw" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC : EDouble = 0.0" tooltipText="">
2813 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"/>
2814 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"/>
2815 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLqgcGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2816 <labelFormat>bold</labelFormat>
2817 </ownedStyle>
2818 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2819 </ownedElements>
2820 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLqgcWDAEeq8BovXV4ESzw" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE : EDouble = 24000.0" tooltipText="">
2821 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"/>
2822 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"/>
2823 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLrHgGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2824 <labelFormat>bold</labelFormat>
2825 </ownedStyle>
2826 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2827 </ownedElements>
2828 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLrHgWDAEeq8BovXV4ESzw" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION : EDouble = 99.0" tooltipText="">
2829 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
2830 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
2831 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLrukGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2832 <labelFormat>bold</labelFormat>
2833 </ownedStyle>
2834 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2835 </ownedElements>
2836 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLrukWDAEeq8BovXV4ESzw" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION : EDouble = 30.0" tooltipText="">
2837 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
2838 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
2839 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLsVoGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2840 <labelFormat>bold</labelFormat>
2841 </ownedStyle>
2842 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2843 </ownedElements>
2844 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLsVoWDAEeq8BovXV4ESzw" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION : EDouble = 4.0" tooltipText="">
2845 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
2846 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
2847 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLs8sGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2848 <labelFormat>bold</labelFormat>
2849 </ownedStyle>
2850 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2851 </ownedElements>
2852 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLs8sWDAEeq8BovXV4ESzw" name="FLAT_RATE_CIM_DAILY : EDouble = 2.0" tooltipText="">
2853 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIM_DAILY"/>
2854 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIM_DAILY"/>
2855 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLuK0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2856 <labelFormat>bold</labelFormat>
2857 </ownedStyle>
2858 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2859 </ownedElements>
2860 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLuK0WDAEeq8BovXV4ESzw" name="FLAT_RATE_CIM_MONTHLY : EDouble = 62.0" tooltipText="">
2861 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIM_MONTHLY"/>
2862 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIM_MONTHLY"/>
2863 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLuK0mDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2864 <labelFormat>bold</labelFormat>
2865 </ownedStyle>
2866 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2867 </ownedElements>
2868 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLux4GDAEeq8BovXV4ESzw" name="FLAT_RATE_CIM_YEARLY : EDouble = 750.0" tooltipText="">
2869 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIM_YEARLY"/>
2870 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIM_YEARLY"/>
2871 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLux4WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2872 <labelFormat>bold</labelFormat>
2873 </ownedStyle>
2874 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2875 </ownedElements>
2876 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLvY8GDAEeq8BovXV4ESzw" name="FLAT_RATE_CIP_DAILY : EDouble = 1.0" tooltipText="">
2877 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIP_DAILY"/>
2878 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIP_DAILY"/>
2879 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLvY8WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2880 <labelFormat>bold</labelFormat>
2881 </ownedStyle>
2882 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2883 </ownedElements>
2884 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLwAAGDAEeq8BovXV4ESzw" name="FLAT_RATE_CIP_MONTHLY : EDouble = 25.0" tooltipText="">
2885 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIP_MONTHLY"/>
2886 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIP_MONTHLY"/>
2887 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLxOIGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2888 <labelFormat>bold</labelFormat>
2889 </ownedStyle>
2890 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2891 </ownedElements>
2892 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLx1MGDAEeq8BovXV4ESzw" name="FLAT_RATE_CIP_YEARLY : EDouble = 30.0" tooltipText="">
2893 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIP_YEARLY"/>
2894 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIP_YEARLY"/>
2895 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLx1MWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2896 <labelFormat>bold</labelFormat>
2897 </ownedStyle>
2898 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2899 </ownedElements>
2900 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLycQGDAEeq8BovXV4ESzw" name="FLAT_RATE_CIS_DAILY : EDouble = 1.0" tooltipText="">
2901 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIS_DAILY"/>
2902 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIS_DAILY"/>
2903 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLycQWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2904 <labelFormat>bold</labelFormat>
2905 </ownedStyle>
2906 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2907 </ownedElements>
2908 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLzDUGDAEeq8BovXV4ESzw" name="FLAT_RATE_CIS_MONTHLY : EDouble = 25.0" tooltipText="">
2909 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIS_MONTHLY"/>
2910 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIS_MONTHLY"/>
2911 <ownedStyle xmi:type="diagram:BundledImage" uid="_aLzqYGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2912 <labelFormat>bold</labelFormat>
2913 </ownedStyle>
2914 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2915 </ownedElements>
2916 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aLzqYWDAEeq8BovXV4ESzw" name="FLAT_RATE_CIS_YEARLY : EDouble = 300.0" tooltipText="">
2917 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIS_YEARLY"/>
2918 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_CIS_YEARLY"/>
2919 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL0RcGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2920 <labelFormat>bold</labelFormat>
2921 </ownedStyle>
2922 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2923 </ownedElements>
2924 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL0RcWDAEeq8BovXV4ESzw" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT : EDouble = 99.0" tooltipText="">
2925 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"/>
2926 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"/>
2927 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL04gGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2928 <labelFormat>bold</labelFormat>
2929 </ownedStyle>
2930 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2931 </ownedElements>
2932 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL1fkGDAEeq8BovXV4ESzw" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS : EDouble = 0.0" tooltipText="">
2933 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"/>
2934 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"/>
2935 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL2GoGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2936 <labelFormat>bold</labelFormat>
2937 </ownedStyle>
2938 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2939 </ownedElements>
2940 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL2GoWDAEeq8BovXV4ESzw" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE : EDouble = 0.0" tooltipText="">
2941 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"/>
2942 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"/>
2943 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL2tsGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2944 <labelFormat>bold</labelFormat>
2945 </ownedStyle>
2946 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2947 </ownedElements>
2948 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL2tsWDAEeq8BovXV4ESzw" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE : EDouble = 0.0" tooltipText="">
2949 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"/>
2950 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"/>
2951 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL3UwGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2952 <labelFormat>bold</labelFormat>
2953 </ownedStyle>
2954 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2955 </ownedElements>
2956 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL3UwWDAEeq8BovXV4ESzw" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE : EDouble = 0.0" tooltipText="">
2957 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"/>
2958 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"/>
2959 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL370GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
2960 <labelFormat>bold</labelFormat>
2961 </ownedStyle>
2962 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
2963 </ownedElements>
2964 </ownedDiagramElements>
2965 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAdWAGDAEeq8BovXV4ESzw" name="Disability_Types" tooltipText="" width="12" height="10">
2966 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Disability_Types"/>
2967 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Disability_Types"/>
2968 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAdWAWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
2969 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
2970 </ownedStyle>
2971 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
2972 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXhyMGDAEeq8BovXV4ESzw" name="beug" tooltipText="">
2973 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/beug"/>
2974 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/beug"/>
2975 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXhyMWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2976 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2977 </ownedStyle>
2978 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2979 </ownedElements>
2980 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXhyMmDAEeq8BovXV4ESzw" name="NONE" tooltipText="">
2981 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/NONE"/>
2982 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/NONE"/>
2983 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXhyM2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
2984 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2985 </ownedStyle>
2986 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2987 </ownedElements>
2988 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXhyNGDAEeq8BovXV4ESzw" name="A" tooltipText="">
2989 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/A"/>
2990 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/A"/>
2991 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXiZQGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
2992 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
2993 </ownedStyle>
2994 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
2995 </ownedElements>
2996 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXiZQWDAEeq8BovXV4ESzw" name="B" tooltipText="">
2997 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/B"/>
2998 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/B"/>
2999 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXiZQmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3000 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3001 </ownedStyle>
3002 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3003 </ownedElements>
3004 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXiZQ2DAEeq8BovXV4ESzw" name="C" tooltipText="">
3005 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/C"/>
3006 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/C"/>
3007 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXjAUGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3008 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3009 </ownedStyle>
3010 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3011 </ownedElements>
3012 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXjAUWDAEeq8BovXV4ESzw" name="D" tooltipText="">
3013 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/D"/>
3014 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/D"/>
3015 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXkOcGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3016 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3017 </ownedStyle>
3018 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3019 </ownedElements>
3020 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXkOcWDAEeq8BovXV4ESzw" name="E" tooltipText="">
3021 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/E"/>
3022 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/E"/>
3023 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXk1gGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3024 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3025 </ownedStyle>
3026 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3027 </ownedElements>
3028 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXk1gWDAEeq8BovXV4ESzw" name="OTHER" tooltipText="">
3029 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/OTHER"/>
3030 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Disability_Types/OTHER"/>
3031 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXlckGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3032 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3033 </ownedStyle>
3034 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3035 </ownedElements>
3036 </ownedDiagramElements>
3037 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAekIGDAEeq8BovXV4ESzw" name="Country" tooltipText="" width="12" height="10">
3038 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Country"/>
3039 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Country"/>
3040 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAekIWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3041 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3042 </ownedStyle>
3043 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3044 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXmDoGDAEeq8BovXV4ESzw" name="ZZ" tooltipText="">
3045 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/ZZ"/>
3046 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/ZZ"/>
3047 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXmqsGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3048 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3049 </ownedStyle>
3050 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3051 </ownedElements>
3052 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXmqsWDAEeq8BovXV4ESzw" name="FF" tooltipText="">
3053 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/FF"/>
3054 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/FF"/>
3055 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXmqsmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3056 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3057 </ownedStyle>
3058 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3059 </ownedElements>
3060 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXnRwGDAEeq8BovXV4ESzw" name="BB" tooltipText="">
3061 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/BB"/>
3062 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/BB"/>
3063 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXnRwWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3064 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3065 </ownedStyle>
3066 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3067 </ownedElements>
3068 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXnRwmDAEeq8BovXV4ESzw" name="DD" tooltipText="">
3069 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/DD"/>
3070 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/DD"/>
3071 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXn40GDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3072 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3073 </ownedStyle>
3074 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3075 </ownedElements>
3076 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXn40WDAEeq8BovXV4ESzw" name="NN" tooltipText="">
3077 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/NN"/>
3078 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/NN"/>
3079 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXn40mDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3080 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3081 </ownedStyle>
3082 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3083 </ownedElements>
3084 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXof4GDAEeq8BovXV4ESzw" name="OTHER" tooltipText="">
3085 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/OTHER"/>
3086 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Country/OTHER"/>
3087 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXof4WDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3088 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3089 </ownedStyle>
3090 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3091 </ownedElements>
3092 </ownedDiagramElements>
3093 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAfLMWDAEeq8BovXV4ESzw" name="Tax_Card_Type" tooltipText="" width="12" height="10">
3094 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Tax_Card_Type"/>
3095 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Tax_Card_Type"/>
3096 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAfyQGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3097 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3098 </ownedStyle>
3099 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3100 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXof4mDAEeq8BovXV4ESzw" name="Principal" tooltipText="">
3101 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Card_Type/Principal"/>
3102 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Card_Type/Principal"/>
3103 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXpG8GDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3104 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3105 </ownedStyle>
3106 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3107 </ownedElements>
3108 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXpG8WDAEeq8BovXV4ESzw" name="Additional" tooltipText="">
3109 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Card_Type/Additional"/>
3110 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Card_Type/Additional"/>
3111 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXpG8mDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3112 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3113 </ownedStyle>
3114 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3115 </ownedElements>
3116 </ownedDiagramElements>
3117 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAhAYGDAEeq8BovXV4ESzw" name="Tax_Office" tooltipText="" width="12" height="10">
3118 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Tax_Office"/>
3119 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Tax_Office"/>
3120 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAhAYWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3121 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3122 </ownedStyle>
3123 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3124 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXpuAGDAEeq8BovXV4ESzw" name="RTS_2" tooltipText="">
3125 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_2"/>
3126 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_2"/>
3127 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXpuAWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3128 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3129 </ownedStyle>
3130 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3131 </ownedElements>
3132 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXqVEGDAEeq8BovXV4ESzw" name="RTS_3" tooltipText="">
3133 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_3"/>
3134 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_3"/>
3135 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXqVEWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3136 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3137 </ownedStyle>
3138 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3139 </ownedElements>
3140 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXqVEmDAEeq8BovXV4ESzw" name="RTS_4" tooltipText="">
3141 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_4"/>
3142 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_4"/>
3143 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXqVE2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
3144 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3145 </ownedStyle>
3146 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3147 </ownedElements>
3148 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXq8IGDAEeq8BovXV4ESzw" name="RTS_5" tooltipText="">
3149 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_5"/>
3150 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Office/RTS_5"/>
3151 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXq8IWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3152 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3153 </ownedStyle>
3154 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3155 </ownedElements>
3156 </ownedDiagramElements>
3157 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAhncWDAEeq8BovXV4ESzw" name="Tax_Class_Category" tooltipText="" width="12" height="10">
3158 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Tax_Class_Category"/>
3159 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Tax_Class_Category"/>
3160 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAiOgGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3161 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3162 </ownedStyle>
3163 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3164 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXrjMGDAEeq8BovXV4ESzw" name="One" tooltipText="">
3165 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Class_Category/One"/>
3166 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Class_Category/One"/>
3167 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXrjMWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3168 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3169 </ownedStyle>
3170 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3171 </ownedElements>
3172 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXrjMmDAEeq8BovXV4ESzw" name="One_A" tooltipText="">
3173 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Class_Category/One_A"/>
3174 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Class_Category/One_A"/>
3175 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXrjM2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
3176 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3177 </ownedStyle>
3178 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3179 </ownedElements>
3180 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXsKQGDAEeq8BovXV4ESzw" name="Two" tooltipText="">
3181 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Class_Category/Two"/>
3182 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Tax_Class_Category/Two"/>
3183 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXsKQWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3184 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3185 </ownedStyle>
3186 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3187 </ownedElements>
3188 </ownedDiagramElements>
3189 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAi1kGDAEeq8BovXV4ESzw" name="Job_Activity" tooltipText="" width="12" height="10">
3190 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Job_Activity"/>
3191 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Job_Activity"/>
3192 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAi1kWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3193 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3194 </ownedStyle>
3195 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3196 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXsxUGDAEeq8BovXV4ESzw" name="Salary" tooltipText="">
3197 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Job_Activity/Salary"/>
3198 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Job_Activity/Salary"/>
3199 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXsxUWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3200 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3201 </ownedStyle>
3202 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3203 </ownedElements>
3204 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXsxUmDAEeq8BovXV4ESzw" name="Pension" tooltipText="">
3205 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Job_Activity/Pension"/>
3206 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Job_Activity/Pension"/>
3207 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXtYYGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3208 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3209 </ownedStyle>
3210 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3211 </ownedElements>
3212 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXumgGDAEeq8BovXV4ESzw" name="Annuity" tooltipText="">
3213 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Job_Activity/Annuity"/>
3214 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Job_Activity/Annuity"/>
3215 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXumgWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3216 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3217 </ownedStyle>
3218 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3219 </ownedElements>
3220 </ownedDiagramElements>
3221 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAjcoWDAEeq8BovXV4ESzw" name="Town" tooltipText="" width="12" height="10">
3222 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Town"/>
3223 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Town"/>
3224 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAjcomDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3225 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3226 </ownedStyle>
3227 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3228 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXv0oGDAEeq8BovXV4ESzw" name="LL" tooltipText="">
3229 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/LL"/>
3230 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/LL"/>
3231 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXv0oWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3232 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3233 </ownedStyle>
3234 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3235 </ownedElements>
3236 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXwbsGDAEeq8BovXV4ESzw" name="BB" tooltipText="">
3237 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/BB"/>
3238 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/BB"/>
3239 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXwbsWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3240 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3241 </ownedStyle>
3242 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3243 </ownedElements>
3244 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXwbsmDAEeq8BovXV4ESzw" name="SS" tooltipText="">
3245 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/SS"/>
3246 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/SS"/>
3247 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXxCwGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3248 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3249 </ownedStyle>
3250 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3251 </ownedElements>
3252 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXxCwWDAEeq8BovXV4ESzw" name="TT" tooltipText="">
3253 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/TT"/>
3254 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/TT"/>
3255 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXxCwmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3256 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3257 </ownedStyle>
3258 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3259 </ownedElements>
3260 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXxp0GDAEeq8BovXV4ESzw" name="Other" tooltipText="">
3261 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/Other"/>
3262 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Town/Other"/>
3263 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXxp0WDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3264 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3265 </ownedStyle>
3266 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3267 </ownedElements>
3268 </ownedDiagramElements>
3269 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAkDsWDAEeq8BovXV4ESzw" name="Type_of_Rate" tooltipText="" width="12" height="10">
3270 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Type_of_Rate"/>
3271 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Type_of_Rate"/>
3272 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAkqwGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3273 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3274 </ownedStyle>
3275 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3276 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXxp0mDAEeq8BovXV4ESzw" name="REGULAR" tooltipText="">
3277 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Type_of_Rate/REGULAR"/>
3278 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Type_of_Rate/REGULAR"/>
3279 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXyQ4GDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3280 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3281 </ownedStyle>
3282 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3283 </ownedElements>
3284 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXyQ4WDAEeq8BovXV4ESzw" name="REAL_COST" tooltipText="">
3285 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Type_of_Rate/REAL_COST"/>
3286 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Type_of_Rate/REAL_COST"/>
3287 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXyQ4mDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3288 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3289 </ownedStyle>
3290 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3291 </ownedElements>
3292 </ownedDiagramElements>
3293 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAlR0GDAEeq8BovXV4ESzw" name="CE_Type" tooltipText="" width="12" height="10">
3294 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//CE_Type"/>
3295 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//CE_Type"/>
3296 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAlR0WDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3297 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3298 </ownedStyle>
3299 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3300 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXyQ42DAEeq8BovXV4ESzw" name="INALIDITY_AND_INFIRMITY" tooltipText="">
3301 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//CE_Type/INALIDITY_AND_INFIRMITY"/>
3302 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//CE_Type/INALIDITY_AND_INFIRMITY"/>
3303 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXy38GDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3304 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3305 </ownedStyle>
3306 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3307 </ownedElements>
3308 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXy38WDAEeq8BovXV4ESzw" name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD" tooltipText="">
3309 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//CE_Type/DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
3310 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//CE_Type/DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
3311 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXy38mDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3312 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3313 </ownedStyle>
3314 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3315 </ownedElements>
3316 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXy382DAEeq8BovXV4ESzw" name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" tooltipText="">
3317 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//CE_Type/CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
3318 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//CE_Type/CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
3319 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXzfAGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3320 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3321 </ownedStyle>
3322 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3323 </ownedElements>
3324 </ownedDiagramElements>
3325 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAl44GDAEeq8BovXV4ESzw" name="Expense_Purpose" tooltipText="" width="12" height="10">
3326 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Expense_Purpose"/>
3327 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Expense_Purpose"/>
3328 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAl44WDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3329 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3330 </ownedStyle>
3331 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3332 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXzfAWDAEeq8BovXV4ESzw" name="HOUSE_CARE" tooltipText="">
3333 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/HOUSE_CARE"/>
3334 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/HOUSE_CARE"/>
3335 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXzfAmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3336 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3337 </ownedStyle>
3338 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3339 </ownedElements>
3340 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX0GEGDAEeq8BovXV4ESzw" name="CHILD_CARE" tooltipText="">
3341 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/CHILD_CARE"/>
3342 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/CHILD_CARE"/>
3343 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX0GEWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3344 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3345 </ownedStyle>
3346 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3347 </ownedElements>
3348 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX0GEmDAEeq8BovXV4ESzw" name="DEPENDENCE_CARE" tooltipText="">
3349 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/DEPENDENCE_CARE"/>
3350 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/DEPENDENCE_CARE"/>
3351 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX0GE2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
3352 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3353 </ownedStyle>
3354 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3355 </ownedElements>
3356 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX0tIGDAEeq8BovXV4ESzw" name="OTHER" tooltipText="">
3357 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/OTHER"/>
3358 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/OTHER"/>
3359 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX0tIWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3360 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3361 </ownedStyle>
3362 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3363 </ownedElements>
3364 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX0tImDAEeq8BovXV4ESzw" name="ALIMONY" tooltipText="">
3365 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/ALIMONY"/>
3366 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/ALIMONY"/>
3367 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX0tI2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
3368 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3369 </ownedStyle>
3370 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3371 </ownedElements>
3372 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX1UMGDAEeq8BovXV4ESzw" name="RECURRENT_DEPT" tooltipText="">
3373 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/RECURRENT_DEPT"/>
3374 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Expense_Purpose/RECURRENT_DEPT"/>
3375 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX1UMWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3376 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3377 </ownedStyle>
3378 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3379 </ownedElements>
3380 </ownedDiagramElements>
3381 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAnHAGDAEeq8BovXV4ESzw" name="Dependent_Type" tooltipText="" width="12" height="10">
3382 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Dependent_Type"/>
3383 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Dependent_Type"/>
3384 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAnuEGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3385 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3386 </ownedStyle>
3387 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3388 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX1UMmDAEeq8BovXV4ESzw" name="CHILD" tooltipText="">
3389 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/CHILD"/>
3390 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/CHILD"/>
3391 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX17QGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3392 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3393 </ownedStyle>
3394 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3395 </ownedElements>
3396 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX17QWDAEeq8BovXV4ESzw" name="SPOUSE" tooltipText="">
3397 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/SPOUSE"/>
3398 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/SPOUSE"/>
3399 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX17QmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3400 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3401 </ownedStyle>
3402 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3403 </ownedElements>
3404 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX17Q2DAEeq8BovXV4ESzw" name="RELATIVE" tooltipText="">
3405 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/RELATIVE"/>
3406 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/RELATIVE"/>
3407 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX2iUGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3408 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3409 </ownedStyle>
3410 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3411 </ownedElements>
3412 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX2iUWDAEeq8BovXV4ESzw" name="OTHER_FAMILY_MEMBER" tooltipText="">
3413 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/OTHER_FAMILY_MEMBER"/>
3414 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/OTHER_FAMILY_MEMBER"/>
3415 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX2iUmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3416 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3417 </ownedStyle>
3418 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3419 </ownedElements>
3420 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX3JYGDAEeq8BovXV4ESzw" name="NOT_OWN_CHILD" tooltipText="">
3421 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/NOT_OWN_CHILD"/>
3422 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Dependent_Type/NOT_OWN_CHILD"/>
3423 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX3JYWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3424 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3425 </ownedStyle>
3426 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3427 </ownedElements>
3428 </ownedDiagramElements>
3429 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAoVIGDAEeq8BovXV4ESzw" name="Income_Tax" tooltipText="" outgoingEdges="_aYSAIGDAEeq8BovXV4ESzw" width="12" height="10">
3430 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Tax"/>
3431 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Tax"/>
3432 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAoVIWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3433 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3434 </ownedStyle>
3435 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3436 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL4i4GDAEeq8BovXV4ESzw" name="tax_amount : EDouble = 0.0" tooltipText="">
3437 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax/tax_amount"/>
3438 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax/tax_amount"/>
3439 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL4i4WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3440 <labelFormat>bold</labelFormat>
3441 </ownedStyle>
3442 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3443 </ownedElements>
3444 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL5J8GDAEeq8BovXV4ESzw" name="tax_year : EInt" tooltipText="">
3445 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax/tax_year"/>
3446 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax/tax_year"/>
3447 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL5J8WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3448 <labelFormat>bold</labelFormat>
3449 </ownedStyle>
3450 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3451 </ownedElements>
3452 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL5J8mDAEeq8BovXV4ESzw" name="id6 : EString" tooltipText="">
3453 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax/id6"/>
3454 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax/id6"/>
3455 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL5xAGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3456 <labelFormat>bold</labelFormat>
3457 </ownedStyle>
3458 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3459 </ownedElements>
3460 </ownedDiagramElements>
3461 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aApjQGDAEeq8BovXV4ESzw" name="Tax_Payer" tooltipText="" outgoingEdges="_aYnXUGDAEeq8BovXV4ESzw _aYsP02DAEeq8BovXV4ESzw _aZPCZmDAEeq8BovXV4ESzw _aZVJAGDAEeq8BovXV4ESzw _aZW-MGDAEeq8BovXV4ESzw _aZZacGDAEeq8BovXV4ESzw" incomingEdges="_aYSAIGDAEeq8BovXV4ESzw _aYgppmDAEeq8BovXV4ESzw _aYwhRmDAEeq8BovXV4ESzw _aYxvYGDAEeq8BovXV4ESzw" width="12" height="10">
3462 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Payer"/>
3463 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Payer"/>
3464 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
3465 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
3466 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
3467 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAqKUGDAEeq8BovXV4ESzw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
3468 <labelFormat>italic</labelFormat>
3469 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
3470 </ownedStyle>
3471 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3472 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL6_IGDAEeq8BovXV4ESzw" name="taxesDue : EDouble = 0.0" tooltipText="">
3473 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Payer/taxesDue"/>
3474 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Payer/taxesDue"/>
3475 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL7mMGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3476 <labelFormat>bold</labelFormat>
3477 </ownedStyle>
3478 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3479 </ownedElements>
3480 </ownedDiagramElements>
3481 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aArYcGDAEeq8BovXV4ESzw" name="Physical_Person" tooltipText="" outgoingEdges="_aZLYAGDAEeq8BovXV4ESzw _aZVwFGDAEeq8BovXV4ESzw" incomingEdges="_aYdmUGDAEeq8BovXV4ESzw _aYeNZmDAEeq8BovXV4ESzw _aYe0eWDAEeq8BovXV4ESzw _aYnXUGDAEeq8BovXV4ESzw _aYs25mDAEeq8BovXV4ESzw" width="12" height="10">
3482 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Physical_Person"/>
3483 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Physical_Person"/>
3484 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAsmkGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3485 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3486 </ownedStyle>
3487 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3488 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL80UGDAEeq8BovXV4ESzw" name="/is_assisting_spouse : EBoolean = false" tooltipText="">
3489 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/is_assisting_spouse"/>
3490 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/is_assisting_spouse"/>
3491 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL-CcGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
3492 <labelFormat>bold</labelFormat>
3493 </ownedStyle>
3494 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3495 </ownedElements>
3496 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL-CcWDAEeq8BovXV4ESzw" name="SSNo : EString" tooltipText="">
3497 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/SSNo"/>
3498 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/SSNo"/>
3499 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL-pgGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3500 <labelFormat>bold</labelFormat>
3501 </ownedStyle>
3502 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3503 </ownedElements>
3504 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL_QkGDAEeq8BovXV4ESzw" name="birth_year : EInt" tooltipText="">
3505 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/birth_year"/>
3506 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/birth_year"/>
3507 <ownedStyle xmi:type="diagram:BundledImage" uid="_aL_QkWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3508 <labelFormat>bold</labelFormat>
3509 </ownedStyle>
3510 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3511 </ownedElements>
3512 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aL_3oGDAEeq8BovXV4ESzw" name="disability_percentage : EDouble = 0.0" tooltipText="">
3513 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/disability_percentage"/>
3514 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/disability_percentage"/>
3515 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMAesGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3516 <labelFormat>bold</labelFormat>
3517 </ownedStyle>
3518 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3519 </ownedElements>
3520 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMAesWDAEeq8BovXV4ESzw" name="disability_type : Disability_Types = beug" tooltipText="">
3521 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/disability_type"/>
3522 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/disability_type"/>
3523 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMBFwGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3524 <labelFormat>bold</labelFormat>
3525 </ownedStyle>
3526 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3527 </ownedElements>
3528 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMBs0GDAEeq8BovXV4ESzw" name="/is_affiliated_personnaly_to_social_security : EBoolean = false" tooltipText="">
3529 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/is_affiliated_personnaly_to_social_security"/>
3530 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/is_affiliated_personnaly_to_social_security"/>
3531 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMCT4GDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
3532 <labelFormat>bold</labelFormat>
3533 </ownedStyle>
3534 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3535 </ownedElements>
3536 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMCT4WDAEeq8BovXV4ESzw" name="birth_month : EInt" tooltipText="">
3537 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/birth_month"/>
3538 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/birth_month"/>
3539 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMC68GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3540 <labelFormat>bold</labelFormat>
3541 </ownedStyle>
3542 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3543 </ownedElements>
3544 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMC68WDAEeq8BovXV4ESzw" name="birth_day : EInt" tooltipText="">
3545 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/birth_day"/>
3546 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/birth_day"/>
3547 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMDiAGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3548 <labelFormat>bold</labelFormat>
3549 </ownedStyle>
3550 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3551 </ownedElements>
3552 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMDiAWDAEeq8BovXV4ESzw" name="is_widower : EBoolean = false" tooltipText="">
3553 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/is_widower"/>
3554 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Physical_Person/is_widower"/>
3555 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMEJEGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3556 <labelFormat>bold</labelFormat>
3557 </ownedStyle>
3558 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3559 </ownedElements>
3560 </ownedDiagramElements>
3561 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAubwGDAEeq8BovXV4ESzw" name="Address" tooltipText="" incomingEdges="_aYgCkGDAEeq8BovXV4ESzw _aYusFmDAEeq8BovXV4ESzw _aYvTJmDAEeq8BovXV4ESzw _aZLYAGDAEeq8BovXV4ESzw" width="12" height="10">
3562 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Address"/>
3563 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Address"/>
3564 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAvC0GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3565 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3566 </ownedStyle>
3567 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3568 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMFXMGDAEeq8BovXV4ESzw" name="country : Country = ZZ" tooltipText="">
3569 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/country"/>
3570 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/country"/>
3571 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMGlUGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3572 <labelFormat>bold</labelFormat>
3573 </ownedStyle>
3574 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3575 </ownedElements>
3576 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMGlUWDAEeq8BovXV4ESzw" name="street : EString" tooltipText="">
3577 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/street"/>
3578 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/street"/>
3579 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMHMYGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3580 <labelFormat>bold</labelFormat>
3581 </ownedStyle>
3582 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3583 </ownedElements>
3584 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMHMYWDAEeq8BovXV4ESzw" name="zipCode : EString" tooltipText="">
3585 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/zipCode"/>
3586 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/zipCode"/>
3587 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMHzcGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3588 <labelFormat>bold</labelFormat>
3589 </ownedStyle>
3590 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3591 </ownedElements>
3592 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMHzcWDAEeq8BovXV4ESzw" name="city : EString" tooltipText="">
3593 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/city"/>
3594 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/city"/>
3595 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMIagGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3596 <labelFormat>bold</labelFormat>
3597 </ownedStyle>
3598 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3599 </ownedElements>
3600 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMIagWDAEeq8BovXV4ESzw" name="id2 : EString" tooltipText="">
3601 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/id2"/>
3602 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Address/id2"/>
3603 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMJBkGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3604 <labelFormat>bold</labelFormat>
3605 </ownedStyle>
3606 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3607 </ownedElements>
3608 </ownedDiagramElements>
3609 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAvp4GDAEeq8BovXV4ESzw" name="Expense" tooltipText="" outgoingEdges="_aZN0QGDAEeq8BovXV4ESzw _aZQQgGDAEeq8BovXV4ESzw _aZaBhmDAEeq8BovXV4ESzw" incomingEdges="_aZEqUGDAEeq8BovXV4ESzw _aZIUs2DAEeq8BovXV4ESzw _aZI7xmDAEeq8BovXV4ESzw _aZKJ4GDAEeq8BovXV4ESzw _aZVwFGDAEeq8BovXV4ESzw" width="12" height="10">
3610 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Expense"/>
3611 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Expense"/>
3612 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAwQ8GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3613 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3614 </ownedStyle>
3615 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3616 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMJooGDAEeq8BovXV4ESzw" name="declared_amount : EDouble = 0.0" tooltipText="">
3617 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Expense/declared_amount"/>
3618 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Expense/declared_amount"/>
3619 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMJooWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3620 <labelFormat>bold</labelFormat>
3621 </ownedStyle>
3622 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3623 </ownedElements>
3624 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMKPsGDAEeq8BovXV4ESzw" name="expense_purpose : Expense_Purpose = OTHER" tooltipText="">
3625 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Expense/expense_purpose"/>
3626 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Expense/expense_purpose"/>
3627 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMKPsWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3628 <labelFormat>bold</labelFormat>
3629 </ownedStyle>
3630 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3631 </ownedElements>
3632 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMK2wmDAEeq8BovXV4ESzw" name="id4 : EString" tooltipText="">
3633 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Expense/id4"/>
3634 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Expense/id4"/>
3635 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMLd0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3636 <labelFormat>bold</labelFormat>
3637 </ownedStyle>
3638 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3639 </ownedElements>
3640 </ownedDiagramElements>
3641 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAw4AGDAEeq8BovXV4ESzw" name="Dependent" tooltipText="" outgoingEdges="_aYs25mDAEeq8BovXV4ESzw _aZObUGDAEeq8BovXV4ESzw _aZSFs2DAEeq8BovXV4ESzw _aZT64GDAEeq8BovXV4ESzw" incomingEdges="_aZN0QGDAEeq8BovXV4ESzw _aZPCZmDAEeq8BovXV4ESzw" width="12" height="10">
3642 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Dependent"/>
3643 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Dependent"/>
3644 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAxfEGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3645 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3646 </ownedStyle>
3647 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3648 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMME4GDAEeq8BovXV4ESzw" name="dependent_type : Dependent_Type = CHILD" tooltipText="">
3649 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Dependent/dependent_type"/>
3650 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Dependent/dependent_type"/>
3651 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMME4WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3652 <labelFormat>bold</labelFormat>
3653 </ownedStyle>
3654 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3655 </ownedElements>
3656 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMMr8GDAEeq8BovXV4ESzw" name="continued_studies : EBoolean = false" tooltipText="">
3657 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Dependent/continued_studies"/>
3658 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Dependent/continued_studies"/>
3659 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMMr8WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3660 <labelFormat>bold</labelFormat>
3661 </ownedStyle>
3662 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3663 </ownedElements>
3664 </ownedDiagramElements>
3665 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAyGIGDAEeq8BovXV4ESzw" name="External_Allowance" tooltipText="" outgoingEdges="_aYdmUGDAEeq8BovXV4ESzw" incomingEdges="_aZSFs2DAEeq8BovXV4ESzw" width="12" height="10">
3666 <target xmi:type="ecore:EClass" href="Taxation.ecore#//External_Allowance"/>
3667 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//External_Allowance"/>
3668 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAytMGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3669 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3670 </ownedStyle>
3671 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3672 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMNTAGDAEeq8BovXV4ESzw" name="amount : EDouble = 0.0" tooltipText="">
3673 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/amount"/>
3674 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/amount"/>
3675 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMN6EGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3676 <labelFormat>bold</labelFormat>
3677 </ownedStyle>
3678 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3679 </ownedElements>
3680 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMOhIGDAEeq8BovXV4ESzw" name="grantor : Grantor = WWW" tooltipText="">
3681 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/grantor"/>
3682 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/grantor"/>
3683 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMOhIWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3684 <labelFormat>bold</labelFormat>
3685 </ownedStyle>
3686 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3687 </ownedElements>
3688 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMPIMGDAEeq8BovXV4ESzw" name="starting_year : EInt" tooltipText="">
3689 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/starting_year"/>
3690 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/starting_year"/>
3691 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMPIMWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3692 <labelFormat>bold</labelFormat>
3693 </ownedStyle>
3694 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3695 </ownedElements>
3696 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMPvQGDAEeq8BovXV4ESzw" name="ending_year : EInt" tooltipText="">
3697 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/ending_year"/>
3698 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/ending_year"/>
3699 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMPvQWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3700 <labelFormat>bold</labelFormat>
3701 </ownedStyle>
3702 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3703 </ownedElements>
3704 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMQWUGDAEeq8BovXV4ESzw" name="id5 : EString" tooltipText="">
3705 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/id5"/>
3706 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//External_Allowance/id5"/>
3707 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMQWUWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3708 <labelFormat>bold</labelFormat>
3709 </ownedStyle>
3710 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3711 </ownedElements>
3712 </ownedDiagramElements>
3713 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aAzUQGDAEeq8BovXV4ESzw" name="Household" tooltipText="" outgoingEdges="_aYuFBmDAEeq8BovXV4ESzw _aZXlQ2DAEeq8BovXV4ESzw" incomingEdges="_aZT64GDAEeq8BovXV4ESzw" width="12" height="10">
3714 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Household"/>
3715 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Household"/>
3716 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aAz7UGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3717 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3718 </ownedStyle>
3719 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3720 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMQ9YGDAEeq8BovXV4ESzw" name="id1 : EString" tooltipText="">
3721 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Household/id1"/>
3722 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Household/id1"/>
3723 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMRkcGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3724 <labelFormat>bold</labelFormat>
3725 </ownedStyle>
3726 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3727 </ownedElements>
3728 </ownedDiagramElements>
3729 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aA1JcGDAEeq8BovXV4ESzw" name="Legal_Union_Record" tooltipText="" outgoingEdges="_aYeNZmDAEeq8BovXV4ESzw _aYe0eWDAEeq8BovXV4ESzw _aZYzYGDAEeq8BovXV4ESzw" incomingEdges="_aYv6NmDAEeq8BovXV4ESzw _aYxIU2DAEeq8BovXV4ESzw _aZXlQ2DAEeq8BovXV4ESzw" width="12" height="10">
3730 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Legal_Union_Record"/>
3731 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Legal_Union_Record"/>
3732 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aA1wgGDAEeq8BovXV4ESzw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
3733 <labelFormat>italic</labelFormat>
3734 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
3735 </ownedStyle>
3736 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3737 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMSLgGDAEeq8BovXV4ESzw" name="start_year : EInt" tooltipText="">
3738 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/start_year"/>
3739 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/start_year"/>
3740 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMSykGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3741 <labelFormat>bold</labelFormat>
3742 </ownedStyle>
3743 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3744 </ownedElements>
3745 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMSykWDAEeq8BovXV4ESzw" name="end_year : EInt" tooltipText="">
3746 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/end_year"/>
3747 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/end_year"/>
3748 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMTZoGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3749 <labelFormat>bold</labelFormat>
3750 </ownedStyle>
3751 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3752 </ownedElements>
3753 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMTZoWDAEeq8BovXV4ESzw" name="separation_cause : Separation_Causes = NONE" tooltipText="">
3754 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/separation_cause"/>
3755 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/separation_cause"/>
3756 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMTZomDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3757 <labelFormat>bold</labelFormat>
3758 </ownedStyle>
3759 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3760 </ownedElements>
3761 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMUAsGDAEeq8BovXV4ESzw" name="mutual_agreement : EBoolean = false" tooltipText="">
3762 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/mutual_agreement"/>
3763 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/mutual_agreement"/>
3764 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMUnwGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3765 <labelFormat>bold</labelFormat>
3766 </ownedStyle>
3767 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3768 </ownedElements>
3769 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMUnwWDAEeq8BovXV4ESzw" name="id9 : EString" tooltipText="">
3770 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/id9"/>
3771 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Legal_Union_Record/id9"/>
3772 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMVO0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3773 <labelFormat>bold</labelFormat>
3774 </ownedStyle>
3775 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3776 </ownedElements>
3777 </ownedDiagramElements>
3778 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aA2XkWDAEeq8BovXV4ESzw" name="Separation_Causes" tooltipText="" width="12" height="10">
3779 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Separation_Causes"/>
3780 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Separation_Causes"/>
3781 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aA2-oGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3782 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
3783 </ownedStyle>
3784 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
3785 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX3wcGDAEeq8BovXV4ESzw" name="NONE" tooltipText="">
3786 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/NONE"/>
3787 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/NONE"/>
3788 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX4XgGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3789 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3790 </ownedStyle>
3791 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3792 </ownedElements>
3793 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX4-kGDAEeq8BovXV4ESzw" name="DIVORCE" tooltipText="">
3794 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/DIVORCE"/>
3795 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/DIVORCE"/>
3796 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX5loGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3797 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3798 </ownedStyle>
3799 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3800 </ownedElements>
3801 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX5loWDAEeq8BovXV4ESzw" name="SEPARATION_DE_FAIT" tooltipText="">
3802 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/SEPARATION_DE_FAIT"/>
3803 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/SEPARATION_DE_FAIT"/>
3804 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX5lomDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3805 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3806 </ownedStyle>
3807 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3808 </ownedElements>
3809 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX6MsGDAEeq8BovXV4ESzw" name="SEPARATION_BY_COURT" tooltipText="">
3810 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/SEPARATION_BY_COURT"/>
3811 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Separation_Causes/SEPARATION_BY_COURT"/>
3812 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX6MsWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3813 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3814 </ownedStyle>
3815 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3816 </ownedElements>
3817 </ownedDiagramElements>
3818 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aA4MwGDAEeq8BovXV4ESzw" name="Tax_Property" tooltipText="" incomingEdges="_aZYzYGDAEeq8BovXV4ESzw" width="12" height="10">
3819 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Property"/>
3820 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Property"/>
3821 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aA4MwWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3822 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3823 </ownedStyle>
3824 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3825 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMV14GDAEeq8BovXV4ESzw" name="starting_year : EInt" tooltipText="">
3826 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Property/starting_year"/>
3827 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Property/starting_year"/>
3828 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMWc8GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3829 <labelFormat>bold</labelFormat>
3830 </ownedStyle>
3831 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3832 </ownedElements>
3833 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMXEAWDAEeq8BovXV4ESzw" name="id10 : EString" tooltipText="">
3834 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Property/id10"/>
3835 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Property/id10"/>
3836 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMXrEGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3837 <labelFormat>bold</labelFormat>
3838 </ownedStyle>
3839 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3840 </ownedElements>
3841 </ownedDiagramElements>
3842 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aA5a4GDAEeq8BovXV4ESzw" name="Tax_Case" tooltipText="" incomingEdges="_aYsP02DAEeq8BovXV4ESzw _aYuFBmDAEeq8BovXV4ESzw" width="12" height="10">
3843 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Case"/>
3844 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Case"/>
3845 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
3846 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
3847 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
3848 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aA5a4WDAEeq8BovXV4ESzw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_interface.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
3849 <labelFormat>italic</labelFormat>
3850 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.0/@style"/>
3851 </ownedStyle>
3852 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3853 </ownedDiagramElements>
3854 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aA6pAGDAEeq8BovXV4ESzw" name="FromAgent" tooltipText="" incomingEdges="_aZObUGDAEeq8BovXV4ESzw _aZQQgGDAEeq8BovXV4ESzw _aZVJAGDAEeq8BovXV4ESzw" width="12" height="10">
3855 <target xmi:type="ecore:EClass" href="Taxation.ecore#//FromAgent"/>
3856 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//FromAgent"/>
3857 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aA7QEGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3858 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3859 </ownedStyle>
3860 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3861 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMY5MWDAEeq8BovXV4ESzw" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care : EBoolean = false" tooltipText="">
3862 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//FromAgent/is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"/>
3863 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//FromAgent/is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"/>
3864 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMbVcGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3865 <labelFormat>bold</labelFormat>
3866 </ownedStyle>
3867 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3868 </ownedElements>
3869 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMb8gGDAEeq8BovXV4ESzw" name="is_eligible_debt : EBoolean = false" tooltipText="">
3870 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//FromAgent/is_eligible_debt"/>
3871 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//FromAgent/is_eligible_debt"/>
3872 <ownedStyle xmi:type="diagram:BundledImage" uid="_aMcjkGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3873 <labelFormat>bold</labelFormat>
3874 </ownedStyle>
3875 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3876 </ownedElements>
3877 </ownedDiagramElements>
3878 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aA73IWDAEeq8BovXV4ESzw" name="Income" tooltipText="" outgoingEdges="_aZQQh2DAEeq8BovXV4ESzw _aZReoGDAEeq8BovXV4ESzw _aZbPo2DAEeq8BovXV4ESzw" incomingEdges="_aY32AGDAEeq8BovXV4ESzw _aY4dE2DAEeq8BovXV4ESzw _aZW-MGDAEeq8BovXV4ESzw _aZaBhmDAEeq8BovXV4ESzw" width="12" height="10">
3879 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Income"/>
3880 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Income"/>
3881 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aDElIGDAEeq8BovXV4ESzw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
3882 <labelFormat>italic</labelFormat>
3883 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
3884 </ownedStyle>
3885 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3886 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aMdKoGDAEeq8BovXV4ESzw" name="income_amount : EDouble = 0.0" tooltipText="">
3887 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/income_amount"/>
3888 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/income_amount"/>
3889 <ownedStyle xmi:type="diagram:BundledImage" uid="_aPURYGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3890 <labelFormat>bold</labelFormat>
3891 </ownedStyle>
3892 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3893 </ownedElements>
3894 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aPURYWDAEeq8BovXV4ESzw" name="start_date_within_taxation_year : EDate" tooltipText="">
3895 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/start_date_within_taxation_year"/>
3896 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/start_date_within_taxation_year"/>
3897 <ownedStyle xmi:type="diagram:BundledImage" uid="_aPU4cGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3898 <labelFormat>bold</labelFormat>
3899 </ownedStyle>
3900 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3901 </ownedElements>
3902 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aPVfgGDAEeq8BovXV4ESzw" name="start_date_of_contract : EDate" tooltipText="">
3903 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/start_date_of_contract"/>
3904 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/start_date_of_contract"/>
3905 <ownedStyle xmi:type="diagram:BundledImage" uid="_aPVfgWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3906 <labelFormat>bold</labelFormat>
3907 </ownedStyle>
3908 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3909 </ownedElements>
3910 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aPVfgmDAEeq8BovXV4ESzw" name="end_date_within_taxation_year : EDate" tooltipText="">
3911 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/end_date_within_taxation_year"/>
3912 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/end_date_within_taxation_year"/>
3913 <ownedStyle xmi:type="diagram:BundledImage" uid="_aPWGkGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3914 <labelFormat>bold</labelFormat>
3915 </ownedStyle>
3916 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3917 </ownedElements>
3918 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aPWGkWDAEeq8BovXV4ESzw" name="tax_liability : EDouble = 0.0" tooltipText="">
3919 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/tax_liability"/>
3920 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/tax_liability"/>
3921 <ownedStyle xmi:type="diagram:BundledImage" uid="_aPWtoGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3922 <labelFormat>bold</labelFormat>
3923 </ownedStyle>
3924 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3925 </ownedElements>
3926 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aPXUsWDAEeq8BovXV4ESzw" name="num : EInt" tooltipText="">
3927 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/num"/>
3928 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income/num"/>
3929 <ownedStyle xmi:type="diagram:BundledImage" uid="_aPX7wGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3930 <labelFormat>bold</labelFormat>
3931 </ownedStyle>
3932 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3933 </ownedElements>
3934 </ownedDiagramElements>
3935 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aDFzQGDAEeq8BovXV4ESzw" name="Income_Type" tooltipText="" incomingEdges="_aYyWc2DAEeq8BovXV4ESzw _aYy9g2DAEeq8BovXV4ESzw _aY0LoGDAEeq8BovXV4ESzw _aY0ysGDAEeq8BovXV4ESzw _aY1ZwmDAEeq8BovXV4ESzw _aY2A1mDAEeq8BovXV4ESzw _aZbPo2DAEeq8BovXV4ESzw" width="12" height="10">
3936 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Type"/>
3937 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Type"/>
3938 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aFZgYGDAEeq8BovXV4ESzw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
3939 <labelFormat>italic</labelFormat>
3940 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
3941 </ownedStyle>
3942 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3943 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aPZJ4GDAEeq8BovXV4ESzw" name="/subjectToWithholdingTax : EBoolean = false" tooltipText="">
3944 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Type/subjectToWithholdingTax"/>
3945 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Type/subjectToWithholdingTax"/>
3946 <ownedStyle xmi:type="diagram:BundledImage" uid="_aRMgsGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
3947 <labelFormat>bold</labelFormat>
3948 </ownedStyle>
3949 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3950 </ownedElements>
3951 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aRNHwGDAEeq8BovXV4ESzw" name="id8 : EString" tooltipText="">
3952 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Type/id8"/>
3953 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Type/id8"/>
3954 <ownedStyle xmi:type="diagram:BundledImage" uid="_aRNu0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3955 <labelFormat>bold</labelFormat>
3956 </ownedStyle>
3957 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3958 </ownedElements>
3959 </ownedDiagramElements>
3960 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aFaugGDAEeq8BovXV4ESzw" name="Tax_Card" tooltipText="" outgoingEdges="_aYgCkGDAEeq8BovXV4ESzw _aZNNMGDAEeq8BovXV4ESzw _aZObV2DAEeq8BovXV4ESzw" incomingEdges="_aZNNMGDAEeq8BovXV4ESzw _aZQQh2DAEeq8BovXV4ESzw" width="12" height="10">
3961 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Card"/>
3962 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Card"/>
3963 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHnG4GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
3964 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
3965 </ownedStyle>
3966 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
3967 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aROV4GDAEeq8BovXV4ESzw" name="card_identifier : EString" tooltipText="">
3968 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/card_identifier"/>
3969 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/card_identifier"/>
3970 <ownedStyle xmi:type="diagram:BundledImage" uid="_aROV4WDAEeq8BovXV4ESzw" labelAlignment="LEFT">
3971 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
3972 </ownedStyle>
3973 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3974 </ownedElements>
3975 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aRO88GDAEeq8BovXV4ESzw" name="/tax_card_type : Tax_Card_Type = Principal" tooltipText="">
3976 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_card_type"/>
3977 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_card_type"/>
3978 <ownedStyle xmi:type="diagram:BundledImage" uid="_aT_WAGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
3979 <labelFormat>bold</labelFormat>
3980 </ownedStyle>
3981 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3982 </ownedElements>
3983 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aT_WAWDAEeq8BovXV4ESzw" name="tax_office : Tax_Office = RTS_2" tooltipText="">
3984 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_office"/>
3985 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_office"/>
3986 <ownedStyle xmi:type="diagram:BundledImage" uid="_aT_9EGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3987 <labelFormat>bold</labelFormat>
3988 </ownedStyle>
3989 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3990 </ownedElements>
3991 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUAkIGDAEeq8BovXV4ESzw" name="valid_from_date : EDate" tooltipText="">
3992 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/valid_from_date"/>
3993 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/valid_from_date"/>
3994 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUAkIWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
3995 <labelFormat>bold</labelFormat>
3996 </ownedStyle>
3997 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
3998 </ownedElements>
3999 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUBLMGDAEeq8BovXV4ESzw" name="valid_until_date : EDate" tooltipText="">
4000 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/valid_until_date"/>
4001 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/valid_until_date"/>
4002 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUBLMWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4003 <labelFormat>bold</labelFormat>
4004 </ownedStyle>
4005 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4006 </ownedElements>
4007 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUByQGDAEeq8BovXV4ESzw" name="percentage_of_witholding : EDouble = 0.0" tooltipText="">
4008 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/percentage_of_witholding"/>
4009 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/percentage_of_witholding"/>
4010 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUByQWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4011 <labelFormat>bold</labelFormat>
4012 </ownedStyle>
4013 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4014 </ownedElements>
4015 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUCZUGDAEeq8BovXV4ESzw" name="tax_payers_name_surname : EString" tooltipText="">
4016 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_payers_name_surname"/>
4017 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_payers_name_surname"/>
4018 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUCZUWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4019 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4020 </ownedStyle>
4021 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4022 </ownedElements>
4023 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUCZUmDAEeq8BovXV4ESzw" name="tax_payers_partner_name_surname : EString" tooltipText="">
4024 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_payers_partner_name_surname"/>
4025 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/tax_payers_partner_name_surname"/>
4026 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUDAYGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4027 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4028 </ownedStyle>
4029 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4030 </ownedElements>
4031 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUEOgGDAEeq8BovXV4ESzw" name="jobs_Employer_SSNo : EString" tooltipText="">
4032 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_Employer_SSNo"/>
4033 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_Employer_SSNo"/>
4034 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUE1kGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4035 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4036 </ownedStyle>
4037 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4038 </ownedElements>
4039 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUFcoGDAEeq8BovXV4ESzw" name="jobs_employers_name : EString" tooltipText="">
4040 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_employers_name"/>
4041 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_employers_name"/>
4042 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUFcoWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4043 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4044 </ownedStyle>
4045 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4046 </ownedElements>
4047 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUGDsGDAEeq8BovXV4ESzw" name="jobs_activity_type : Job_Activity = Salary" tooltipText="">
4048 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_activity_type"/>
4049 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_activity_type"/>
4050 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUGDsWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4051 <labelFormat>bold</labelFormat>
4052 </ownedStyle>
4053 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4054 </ownedElements>
4055 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUGqwGDAEeq8BovXV4ESzw" name="jobs_place_of_work : Town = LL" tooltipText="">
4056 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_place_of_work"/>
4057 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/jobs_place_of_work"/>
4058 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUHR0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4059 <labelFormat>bold</labelFormat>
4060 </ownedStyle>
4061 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4062 </ownedElements>
4063 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUH44GDAEeq8BovXV4ESzw" name="deduction_FD_daily : EDouble = 0.0" tooltipText="">
4064 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FD_daily"/>
4065 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FD_daily"/>
4066 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUH44WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4067 <labelFormat>bold</labelFormat>
4068 </ownedStyle>
4069 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4070 </ownedElements>
4071 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUIf8GDAEeq8BovXV4ESzw" name="deduction_FD_monthly : EDouble = 0.0" tooltipText="">
4072 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FD_monthly"/>
4073 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FD_monthly"/>
4074 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUIf8WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4075 <labelFormat>bold</labelFormat>
4076 </ownedStyle>
4077 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4078 </ownedElements>
4079 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUJuEGDAEeq8BovXV4ESzw" name="deduction_AC_daily : EDouble = 0.0" tooltipText="">
4080 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_AC_daily"/>
4081 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_AC_daily"/>
4082 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUJuEWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4083 <labelFormat>bold</labelFormat>
4084 </ownedStyle>
4085 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4086 </ownedElements>
4087 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUKVIGDAEeq8BovXV4ESzw" name="deduction_AC_monthly : EDouble = 0.0" tooltipText="">
4088 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_AC_monthly"/>
4089 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_AC_monthly"/>
4090 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUKVIWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4091 <labelFormat>bold</labelFormat>
4092 </ownedStyle>
4093 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4094 </ownedElements>
4095 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUKVImDAEeq8BovXV4ESzw" name="deduction_AC_yearly : EDouble = 0.0" tooltipText="">
4096 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_AC_yearly"/>
4097 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_AC_yearly"/>
4098 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUK8MGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4099 <labelFormat>bold</labelFormat>
4100 </ownedStyle>
4101 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4102 </ownedElements>
4103 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUK8MWDAEeq8BovXV4ESzw" name="deduction_CE_daily : EDouble = 0.0" tooltipText="">
4104 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_CE_daily"/>
4105 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_CE_daily"/>
4106 <ownedStyle xmi:type="diagram:BundledImage" uid="_aULjQGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4107 <labelFormat>bold</labelFormat>
4108 </ownedStyle>
4109 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4110 </ownedElements>
4111 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aULjQWDAEeq8BovXV4ESzw" name="deduction_CE_monthly : EDouble = 0.0" tooltipText="">
4112 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_CE_monthly"/>
4113 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_CE_monthly"/>
4114 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUMKUGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4115 <labelFormat>bold</labelFormat>
4116 </ownedStyle>
4117 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4118 </ownedElements>
4119 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUMKUWDAEeq8BovXV4ESzw" name="deduction_CE_yearly : EDouble = 0.0" tooltipText="">
4120 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_CE_yearly"/>
4121 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_CE_yearly"/>
4122 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUMKUmDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4123 <labelFormat>bold</labelFormat>
4124 </ownedStyle>
4125 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4126 </ownedElements>
4127 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUMxYmDAEeq8BovXV4ESzw" name="deduction_DS_daily : EDouble = 0.0" tooltipText="">
4128 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_daily"/>
4129 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_daily"/>
4130 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUMxY2DAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4131 <labelFormat>bold</labelFormat>
4132 </ownedStyle>
4133 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4134 </ownedElements>
4135 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUNYcGDAEeq8BovXV4ESzw" name="deduction_DS_monthly : EDouble = 0.0" tooltipText="">
4136 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_monthly"/>
4137 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_monthly"/>
4138 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUPNoGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4139 <labelFormat>bold</labelFormat>
4140 </ownedStyle>
4141 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4142 </ownedElements>
4143 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUP0sWDAEeq8BovXV4ESzw" name="deduction_FO_daily : EDouble = 0.0" tooltipText="">
4144 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FO_daily"/>
4145 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FO_daily"/>
4146 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUQbwGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4147 <labelFormat>bold</labelFormat>
4148 </ownedStyle>
4149 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4150 </ownedElements>
4151 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aURC0GDAEeq8BovXV4ESzw" name="deduction_FO_monthly : EDouble = 0.0" tooltipText="">
4152 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FO_monthly"/>
4153 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FO_monthly"/>
4154 <ownedStyle xmi:type="diagram:BundledImage" uid="_aURC0WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4155 <labelFormat>bold</labelFormat>
4156 </ownedStyle>
4157 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4158 </ownedElements>
4159 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aURp4GDAEeq8BovXV4ESzw" name="deduction_FO_yearly : EDouble = 0.0" tooltipText="">
4160 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FO_yearly"/>
4161 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_FO_yearly"/>
4162 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUSQ8GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4163 <labelFormat>bold</labelFormat>
4164 </ownedStyle>
4165 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4166 </ownedElements>
4167 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUSQ8WDAEeq8BovXV4ESzw" name="credit_CIS_daily : EDouble = 0.0" tooltipText="">
4168 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIS_daily"/>
4169 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIS_daily"/>
4170 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUSQ8mDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4171 <labelFormat>bold</labelFormat>
4172 </ownedStyle>
4173 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4174 </ownedElements>
4175 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUS4AGDAEeq8BovXV4ESzw" name="credit_CIS_monthly : EDouble = 0.0" tooltipText="">
4176 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIS_monthly"/>
4177 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIS_monthly"/>
4178 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUS4AWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4179 <labelFormat>bold</labelFormat>
4180 </ownedStyle>
4181 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4182 </ownedElements>
4183 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUUtMGDAEeq8BovXV4ESzw" name="credit_CIM_daily : EDouble = 0.0" tooltipText="">
4184 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIM_daily"/>
4185 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIM_daily"/>
4186 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUVUQGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4187 <labelFormat>bold</labelFormat>
4188 </ownedStyle>
4189 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4190 </ownedElements>
4191 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUWiYWDAEeq8BovXV4ESzw" name="validity : EBoolean = false" tooltipText="">
4192 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/validity"/>
4193 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/validity"/>
4194 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUXJcGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4195 <labelFormat>bold</labelFormat>
4196 </ownedStyle>
4197 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4198 </ownedElements>
4199 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUXJcWDAEeq8BovXV4ESzw" name="credit_CIM_yearly : EDouble = 0.0" tooltipText="">
4200 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIM_yearly"/>
4201 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/credit_CIM_yearly"/>
4202 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUXwgGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4203 <labelFormat>bold</labelFormat>
4204 </ownedStyle>
4205 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4206 </ownedElements>
4207 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUXwgWDAEeq8BovXV4ESzw" name="deduction_DS_Alimony_yearly : EDouble = 0.0" tooltipText="">
4208 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_Alimony_yearly"/>
4209 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_Alimony_yearly"/>
4210 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUY-oGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4211 <labelFormat>bold</labelFormat>
4212 </ownedStyle>
4213 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4214 </ownedElements>
4215 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUY-oWDAEeq8BovXV4ESzw" name="deduction_DS_Debt_yearly : EDouble = 0.0" tooltipText="">
4216 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_Debt_yearly"/>
4217 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Tax_Card/deduction_DS_Debt_yearly"/>
4218 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUZlsGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4219 <labelFormat>bold</labelFormat>
4220 </ownedStyle>
4221 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4222 </ownedElements>
4223 </ownedDiagramElements>
4224 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHnt8WDAEeq8BovXV4ESzw" name="Income_Tax_Credit" tooltipText="" outgoingEdges="_aYgppmDAEeq8BovXV4ESzw" incomingEdges="_aY5rM2DAEeq8BovXV4ESzw _aY65UGDAEeq8BovXV4ESzw _aY7gYGDAEeq8BovXV4ESzw _aZObV2DAEeq8BovXV4ESzw" width="12" height="10">
4225 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Tax_Credit"/>
4226 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Tax_Credit"/>
4227 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHpjIGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4228 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4229 </ownedStyle>
4230 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4231 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUaMwGDAEeq8BovXV4ESzw" name="grantedBy : Grantor = WWW" tooltipText="">
4232 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/grantedBy"/>
4233 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/grantedBy"/>
4234 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUaz0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4235 <labelFormat>bold</labelFormat>
4236 </ownedStyle>
4237 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4238 </ownedElements>
4239 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUba4GDAEeq8BovXV4ESzw" name="tax_year : EInt" tooltipText="">
4240 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/tax_year"/>
4241 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/tax_year"/>
4242 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUcB8GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4243 <labelFormat>bold</labelFormat>
4244 </ownedStyle>
4245 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4246 </ownedElements>
4247 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUcB8WDAEeq8BovXV4ESzw" name="yearly : EDouble = 300.0" tooltipText="">
4248 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/yearly"/>
4249 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/yearly"/>
4250 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUcpAGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4251 <labelFormat>bold</labelFormat>
4252 </ownedStyle>
4253 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4254 </ownedElements>
4255 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUdQEGDAEeq8BovXV4ESzw" name="monthly : EDouble = 25.0" tooltipText="">
4256 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/monthly"/>
4257 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/monthly"/>
4258 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUdQEWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4259 <labelFormat>bold</labelFormat>
4260 </ownedStyle>
4261 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4262 </ownedElements>
4263 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUd3IGDAEeq8BovXV4ESzw" name="daily : EDouble = 1.0" tooltipText="">
4264 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/daily"/>
4265 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/daily"/>
4266 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUd3IWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4267 <labelFormat>bold</labelFormat>
4268 </ownedStyle>
4269 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4270 </ownedElements>
4271 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUd3ImDAEeq8BovXV4ESzw" name="id7 : EString" tooltipText="">
4272 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/id7"/>
4273 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Tax_Credit/id7"/>
4274 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUeeMGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4275 <labelFormat>bold</labelFormat>
4276 </ownedStyle>
4277 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4278 </ownedElements>
4279 </ownedDiagramElements>
4280 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHqxQGDAEeq8BovXV4ESzw" name="Income_Detail" tooltipText="" incomingEdges="_aZReoGDAEeq8BovXV4ESzw" width="12" height="10">
4281 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Detail"/>
4282 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Income_Detail"/>
4283 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHrYUGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4284 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4285 </ownedStyle>
4286 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4287 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUfsUWDAEeq8BovXV4ESzw" name="amount : EDouble = 0.0" tooltipText="">
4288 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/amount"/>
4289 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/amount"/>
4290 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUgTYGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4291 <labelFormat>bold</labelFormat>
4292 </ownedStyle>
4293 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4294 </ownedElements>
4295 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUgTYWDAEeq8BovXV4ESzw" name="is_worked : EBoolean = false" tooltipText="">
4296 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/is_worked"/>
4297 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/is_worked"/>
4298 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUg6cGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4299 <labelFormat>bold</labelFormat>
4300 </ownedStyle>
4301 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4302 </ownedElements>
4303 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUhhgGDAEeq8BovXV4ESzw" name="distance : EDouble = 0.0" tooltipText="">
4304 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/distance"/>
4305 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/distance"/>
4306 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUiIkGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4307 <labelFormat>bold</labelFormat>
4308 </ownedStyle>
4309 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4310 </ownedElements>
4311 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUjWsGDAEeq8BovXV4ESzw" name="worked_days : EInt" tooltipText="">
4312 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/worked_days"/>
4313 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/worked_days"/>
4314 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUj9wGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4315 <labelFormat>bold</labelFormat>
4316 </ownedStyle>
4317 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4318 </ownedElements>
4319 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUj9wWDAEeq8BovXV4ESzw" name="is_contributing_CNS : EBoolean = false" tooltipText="">
4320 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/is_contributing_CNS"/>
4321 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/is_contributing_CNS"/>
4322 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUkk0GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4323 <labelFormat>bold</labelFormat>
4324 </ownedStyle>
4325 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4326 </ownedElements>
4327 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUlL4WDAEeq8BovXV4ESzw" name="id5 : EString" tooltipText="">
4328 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/id5"/>
4329 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Income_Detail/id5"/>
4330 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUlL4mDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4331 <labelFormat>bold</labelFormat>
4332 </ownedStyle>
4333 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4334 </ownedElements>
4335 </ownedDiagramElements>
4336 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHr_YWDAEeq8BovXV4ESzw" name="FromLaw" tooltipText="" incomingEdges="_aZZacGDAEeq8BovXV4ESzw" width="12" height="10">
4337 <target xmi:type="ecore:EClass" href="Taxation.ecore#//FromLaw"/>
4338 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//FromLaw"/>
4339 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHsmcGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4340 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4341 </ownedStyle>
4342 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4343 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUly8GDAEeq8BovXV4ESzw" name="id : EString" tooltipText="">
4344 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//FromLaw/id"/>
4345 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//FromLaw/id"/>
4346 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUly8WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4347 <labelFormat>bold</labelFormat>
4348 </ownedStyle>
4349 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4350 </ownedElements>
4351 </ownedDiagramElements>
4352 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHt0kGDAEeq8BovXV4ESzw" name="Fiscal_Address" tooltipText="" outgoingEdges="_aYusFmDAEeq8BovXV4ESzw" width="12" height="10">
4353 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Fiscal_Address"/>
4354 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Fiscal_Address"/>
4355 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHt0kWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4356 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4357 </ownedStyle>
4358 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4359 </ownedDiagramElements>
4360 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHvpwGDAEeq8BovXV4ESzw" name="Habitual_Address" tooltipText="" outgoingEdges="_aYvTJmDAEeq8BovXV4ESzw" width="12" height="10">
4361 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Habitual_Address"/>
4362 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Habitual_Address"/>
4363 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHvpwWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4364 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4365 </ownedStyle>
4366 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4367 </ownedDiagramElements>
4368 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHwQ0WDAEeq8BovXV4ESzw" name="Marriage_Record" tooltipText="" outgoingEdges="_aYv6NmDAEeq8BovXV4ESzw" width="12" height="10">
4369 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Marriage_Record"/>
4370 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Marriage_Record"/>
4371 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHw34GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4372 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4373 </ownedStyle>
4374 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4375 </ownedDiagramElements>
4376 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHxe8GDAEeq8BovXV4ESzw" name="Non_Resident_Tax_Payer" tooltipText="" outgoingEdges="_aYwhRmDAEeq8BovXV4ESzw" width="12" height="10">
4377 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Non_Resident_Tax_Payer"/>
4378 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Non_Resident_Tax_Payer"/>
4379 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHxe8WDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4380 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4381 </ownedStyle>
4382 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4383 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aUmaAGDAEeq8BovXV4ESzw" name="is_assimilated_to_resident : EBoolean = false" tooltipText="">
4384 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Non_Resident_Tax_Payer/is_assimilated_to_resident"/>
4385 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Non_Resident_Tax_Payer/is_assimilated_to_resident"/>
4386 <ownedStyle xmi:type="diagram:BundledImage" uid="_aUnBEGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4387 <labelFormat>bold</labelFormat>
4388 </ownedStyle>
4389 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4390 </ownedElements>
4391 </ownedDiagramElements>
4392 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHytEGDAEeq8BovXV4ESzw" name="Partnership_Record" tooltipText="" outgoingEdges="_aYxIU2DAEeq8BovXV4ESzw" width="12" height="10">
4393 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Partnership_Record"/>
4394 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Partnership_Record"/>
4395 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aHytEWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4396 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4397 </ownedStyle>
4398 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4399 </ownedDiagramElements>
4400 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aHz7MGDAEeq8BovXV4ESzw" name="Resident_Tax_Payer" tooltipText="" outgoingEdges="_aYxvYGDAEeq8BovXV4ESzw" width="12" height="10">
4401 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Resident_Tax_Payer"/>
4402 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Resident_Tax_Payer"/>
4403 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJrjcGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4404 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4405 </ownedStyle>
4406 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4407 </ownedDiagramElements>
4408 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJsxkGDAEeq8BovXV4ESzw" name="Trade_and_Business_Income" tooltipText="" outgoingEdges="_aYyWc2DAEeq8BovXV4ESzw" width="12" height="10">
4409 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Trade_and_Business_Income"/>
4410 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Trade_and_Business_Income"/>
4411 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJsxkWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4412 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4413 </ownedStyle>
4414 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4415 </ownedDiagramElements>
4416 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJt_sGDAEeq8BovXV4ESzw" name="Agriculture_and_Forestry_Income" tooltipText="" outgoingEdges="_aYy9g2DAEeq8BovXV4ESzw" width="12" height="10">
4417 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Agriculture_and_Forestry_Income"/>
4418 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Agriculture_and_Forestry_Income"/>
4419 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJumwGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4420 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4421 </ownedStyle>
4422 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4423 </ownedDiagramElements>
4424 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJvN0GDAEeq8BovXV4ESzw" name="Pensions_and_Annuities_Income" tooltipText="" outgoingEdges="_aY0LoGDAEeq8BovXV4ESzw" width="12" height="10">
4425 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Pensions_and_Annuities_Income"/>
4426 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Pensions_and_Annuities_Income"/>
4427 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJv04GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4428 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4429 </ownedStyle>
4430 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4431 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aW3q4GDAEeq8BovXV4ESzw" name="occasional_payement : EBoolean = false" tooltipText="">
4432 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Pensions_and_Annuities_Income/occasional_payement"/>
4433 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Pensions_and_Annuities_Income/occasional_payement"/>
4434 <ownedStyle xmi:type="diagram:BundledImage" uid="_aW4R8GDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4435 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4436 </ownedStyle>
4437 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4438 </ownedElements>
4439 </ownedDiagramElements>
4440 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJwb8GDAEeq8BovXV4ESzw" name="Capital_and_Investments_Income" tooltipText="" outgoingEdges="_aY0ysGDAEeq8BovXV4ESzw" width="12" height="10">
4441 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Capital_and_Investments_Income"/>
4442 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Capital_and_Investments_Income"/>
4443 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJxDAGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4444 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4445 </ownedStyle>
4446 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4447 </ownedDiagramElements>
4448 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJxqEGDAEeq8BovXV4ESzw" name="Employment_Income" tooltipText="" outgoingEdges="_aY1ZwmDAEeq8BovXV4ESzw" width="12" height="10">
4449 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Employment_Income"/>
4450 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Employment_Income"/>
4451 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJyRIGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4452 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4453 </ownedStyle>
4454 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4455 </ownedDiagramElements>
4456 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJzfQGDAEeq8BovXV4ESzw" name="Rentals_and_Leases_Income" tooltipText="" outgoingEdges="_aY2A1mDAEeq8BovXV4ESzw" width="12" height="10">
4457 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Rentals_and_Leases_Income"/>
4458 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Rentals_and_Leases_Income"/>
4459 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ0GUGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4460 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4461 </ownedStyle>
4462 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4463 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aW5gEGDAEeq8BovXV4ESzw" name="is_periodic : EBoolean = true" tooltipText="">
4464 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Rentals_and_Leases_Income/is_periodic"/>
4465 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Rentals_and_Leases_Income/is_periodic"/>
4466 <ownedStyle xmi:type="diagram:BundledImage" uid="_aW6HIGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4467 <labelFormat>bold</labelFormat>
4468 </ownedStyle>
4469 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4470 </ownedElements>
4471 </ownedDiagramElements>
4472 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ0tYGDAEeq8BovXV4ESzw" name="Foreign_Income" tooltipText="" outgoingEdges="_aY32AGDAEeq8BovXV4ESzw" width="12" height="10">
4473 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Foreign_Income"/>
4474 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Foreign_Income"/>
4475 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ1UcGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4476 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4477 </ownedStyle>
4478 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4479 </ownedDiagramElements>
4480 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ17gGDAEeq8BovXV4ESzw" name="Local_Income" tooltipText="" outgoingEdges="_aY4dE2DAEeq8BovXV4ESzw" width="12" height="10">
4481 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Local_Income"/>
4482 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Local_Income"/>
4483 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ2ikGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4484 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4485 </ownedStyle>
4486 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4487 </ownedDiagramElements>
4488 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ3JoGDAEeq8BovXV4ESzw" name="CIM" tooltipText="" outgoingEdges="_aY5rM2DAEeq8BovXV4ESzw" width="12" height="10">
4489 <target xmi:type="ecore:EClass" href="Taxation.ecore#//CIM"/>
4490 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//CIM"/>
4491 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ3wsGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4492 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4493 </ownedStyle>
4494 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4495 </ownedDiagramElements>
4496 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ4XwGDAEeq8BovXV4ESzw" name="CIP" tooltipText="" outgoingEdges="_aY65UGDAEeq8BovXV4ESzw" width="12" height="10">
4497 <target xmi:type="ecore:EClass" href="Taxation.ecore#//CIP"/>
4498 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//CIP"/>
4499 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ4-0GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4500 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4501 </ownedStyle>
4502 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4503 </ownedDiagramElements>
4504 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ5l4GDAEeq8BovXV4ESzw" name="CIS" tooltipText="" outgoingEdges="_aY7gYGDAEeq8BovXV4ESzw" width="12" height="10">
4505 <target xmi:type="ecore:EClass" href="Taxation.ecore#//CIS"/>
4506 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//CIS"/>
4507 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ6M8GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4508 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4509 </ownedStyle>
4510 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4511 </ownedDiagramElements>
4512 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ60AGDAEeq8BovXV4ESzw" name="FD" tooltipText="" outgoingEdges="_aY8HcGDAEeq8BovXV4ESzw" width="12" height="10">
4513 <target xmi:type="ecore:EClass" href="Taxation.ecore#//FD"/>
4514 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//FD"/>
4515 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ7bEGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4516 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4517 </ownedStyle>
4518 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4519 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aW9KcGDAEeq8BovXV4ESzw" name="distance_declared_in_january : EDouble = 0.0" tooltipText="">
4520 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//FD/distance_declared_in_january"/>
4521 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//FD/distance_declared_in_january"/>
4522 <ownedStyle xmi:type="diagram:BundledImage" uid="_aW9KcWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4523 <labelFormat>bold</labelFormat>
4524 </ownedStyle>
4525 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4526 </ownedElements>
4527 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aW9xgGDAEeq8BovXV4ESzw" name="/calculated_distance : EDouble = 0.0" tooltipText="">
4528 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//FD/calculated_distance"/>
4529 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//FD/calculated_distance"/>
4530 <ownedStyle xmi:type="diagram:BundledImage" uid="_aW9xgWDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4531 <labelFormat>bold</labelFormat>
4532 </ownedStyle>
4533 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4534 </ownedElements>
4535 </ownedDiagramElements>
4536 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ8pMGDAEeq8BovXV4ESzw" name="Professional_Expenses_Deduction" tooltipText="" incomingEdges="_aY8HcGDAEeq8BovXV4ESzw _aY8ugGDAEeq8BovXV4ESzw" width="12" height="10">
4537 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Professional_Expenses_Deduction"/>
4538 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Professional_Expenses_Deduction"/>
4539 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ8pMWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4540 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4541 </ownedStyle>
4542 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4543 </ownedDiagramElements>
4544 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ93UGDAEeq8BovXV4ESzw" name="FO" tooltipText="" outgoingEdges="_aY8ugGDAEeq8BovXV4ESzw" width="12" height="10">
4545 <target xmi:type="ecore:EClass" href="Taxation.ecore#//FO"/>
4546 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//FO"/>
4547 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ93UWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4548 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4549 </ownedStyle>
4550 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4551 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aW-_oGDAEeq8BovXV4ESzw" name="/rate_type_for_FO : Type_of_Rate = REGULAR" tooltipText="">
4552 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//FO/rate_type_for_FO"/>
4553 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//FO/rate_type_for_FO"/>
4554 <ownedStyle xmi:type="diagram:BundledImage" uid="_aW-_oWDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4555 <labelFormat>bold</labelFormat>
4556 </ownedStyle>
4557 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4558 </ownedElements>
4559 </ownedDiagramElements>
4560 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aJ_FcGDAEeq8BovXV4ESzw" name="DS_for_Permanent_Expense" tooltipText="" outgoingEdges="_aY8uh2DAEeq8BovXV4ESzw" width="12" height="10">
4561 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Permanent_Expense"/>
4562 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Permanent_Expense"/>
4563 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aJ_sgGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4564 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4565 </ownedStyle>
4566 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4567 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aW_msGDAEeq8BovXV4ESzw" name="permanent_expense_category : Category_of_Permanent_Expense = MISCELLANEOUS_DEBT" tooltipText="">
4568 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Permanent_Expense/permanent_expense_category"/>
4569 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Permanent_Expense/permanent_expense_category"/>
4570 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXANwGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4571 <labelFormat>bold</labelFormat>
4572 </ownedStyle>
4573 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4574 </ownedElements>
4575 </ownedDiagramElements>
4576 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKATkGDAEeq8BovXV4ESzw" name="DS" tooltipText="" incomingEdges="_aY8uh2DAEeq8BovXV4ESzw _aY-jsGDAEeq8BovXV4ESzw _aY_KxmDAEeq8BovXV4ESzw _aZAY42DAEeq8BovXV4ESzw _aZBnAGDAEeq8BovXV4ESzw _aZCOE2DAEeq8BovXV4ESzw" width="12" height="10">
4577 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS"/>
4578 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS"/>
4579 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKA6oGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4580 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4581 </ownedStyle>
4582 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4583 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXA00GDAEeq8BovXV4ESzw" name="maximum_deductible_amount : EDouble = 0.0" tooltipText="">
4584 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS/maximum_deductible_amount"/>
4585 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS/maximum_deductible_amount"/>
4586 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXBb4GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4587 <labelFormat>bold</labelFormat>
4588 </ownedStyle>
4589 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4590 </ownedElements>
4591 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXBb4WDAEeq8BovXV4ESzw" name="id3 : EString" tooltipText="">
4592 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS/id3"/>
4593 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS/id3"/>
4594 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXCC8GDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4595 <labelFormat>bold</labelFormat>
4596 </ownedStyle>
4597 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4598 </ownedElements>
4599 </ownedDiagramElements>
4600 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKBhsGDAEeq8BovXV4ESzw" name="Category_of_Permanent_Expense" tooltipText="" width="12" height="10">
4601 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Category_of_Permanent_Expense"/>
4602 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Category_of_Permanent_Expense"/>
4603 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKBhsWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
4604 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
4605 </ownedStyle>
4606 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
4607 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX6zwGDAEeq8BovXV4ESzw" name="MISCELLANEOUS_DEBT" tooltipText="">
4608 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Permanent_Expense/MISCELLANEOUS_DEBT"/>
4609 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Permanent_Expense/MISCELLANEOUS_DEBT"/>
4610 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX6zwWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4611 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4612 </ownedStyle>
4613 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4614 </ownedElements>
4615 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX7a0GDAEeq8BovXV4ESzw" name="ALIMONY" tooltipText="">
4616 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Permanent_Expense/ALIMONY"/>
4617 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Permanent_Expense/ALIMONY"/>
4618 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX7a0WDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4619 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4620 </ownedStyle>
4621 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4622 </ownedElements>
4623 </ownedDiagramElements>
4624 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKCv0GDAEeq8BovXV4ESzw" name="DS_for_Interest_Expense" tooltipText="" outgoingEdges="_aY-jsGDAEeq8BovXV4ESzw" width="12" height="10">
4625 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Interest_Expense"/>
4626 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Interest_Expense"/>
4627 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKCv0WDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4628 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4629 </ownedStyle>
4630 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4631 </ownedDiagramElements>
4632 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKD98GDAEeq8BovXV4ESzw" name="DS_for_Health_and_Pension_Insurance" tooltipText="" outgoingEdges="_aY_KxmDAEeq8BovXV4ESzw" width="12" height="10">
4633 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Health_and_Pension_Insurance"/>
4634 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Health_and_Pension_Insurance"/>
4635 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKD98WDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4636 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4637 </ownedStyle>
4638 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4639 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXCqAGDAEeq8BovXV4ESzw" name="insurance_category : Category_of_Health_and_Pension_Insurances = MANDATORY_HEALTH_AND_PENSION_INSURANCE" tooltipText="">
4640 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Health_and_Pension_Insurance/insurance_category"/>
4641 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Health_and_Pension_Insurance/insurance_category"/>
4642 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXDREGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4643 <labelFormat>bold</labelFormat>
4644 </ownedStyle>
4645 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4646 </ownedElements>
4647 </ownedDiagramElements>
4648 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKFMEGDAEeq8BovXV4ESzw" name="Category_of_Health_and_Pension_Insurances" tooltipText="" width="12" height="10">
4649 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances"/>
4650 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances"/>
4651 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKFMEWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
4652 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
4653 </ownedStyle>
4654 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
4655 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX8B4GDAEeq8BovXV4ESzw" name="MANDATORY_HEALTH_AND_PENSION_INSURANCE" tooltipText="">
4656 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
4657 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
4658 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX8B4WDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4659 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4660 </ownedStyle>
4661 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4662 </ownedElements>
4663 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX8o8GDAEeq8BovXV4ESzw" name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" tooltipText="">
4664 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
4665 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
4666 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX8o8WDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4667 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4668 </ownedStyle>
4669 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4670 </ownedElements>
4671 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX8o8mDAEeq8BovXV4ESzw" name="CONTINUED_HEALTH_AND_PENSION_INSURANCE" tooltipText="">
4672 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
4673 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
4674 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX9QAGDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4675 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4676 </ownedStyle>
4677 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4678 </ownedElements>
4679 </ownedDiagramElements>
4680 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKFzIWDAEeq8BovXV4ESzw" name="DS_for_Private_Insurance_and_Plan" tooltipText="" outgoingEdges="_aZAY42DAEeq8BovXV4ESzw" width="12" height="10">
4681 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan"/>
4682 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan"/>
4683 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKGaMGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4684 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4685 </ownedStyle>
4686 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4687 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXD4IGDAEeq8BovXV4ESzw" name="private_insurance_and_plan_category : Category_of_Private_Insurance_and_Plan = PRIVATE_INSURANCE" tooltipText="">
4688 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/private_insurance_and_plan_category"/>
4689 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/private_insurance_and_plan_category"/>
4690 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXD4IWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4691 <labelFormat>bold</labelFormat>
4692 </ownedStyle>
4693 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4694 </ownedElements>
4695 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXEfMGDAEeq8BovXV4ESzw" name="/increase_for_life_insurance : EDouble = 0.0" tooltipText="">
4696 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/increase_for_life_insurance"/>
4697 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/increase_for_life_insurance"/>
4698 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXG7cGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4699 <labelFormat>bold</labelFormat>
4700 </ownedStyle>
4701 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4702 </ownedElements>
4703 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXG7cWDAEeq8BovXV4ESzw" name="/maximum_deductible_amount_for_private_insurance : EDouble = 0.0" tooltipText="">
4704 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/maximum_deductible_amount_for_private_insurance"/>
4705 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/maximum_deductible_amount_for_private_insurance"/>
4706 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXHigGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4707 <labelFormat>bold</labelFormat>
4708 </ownedStyle>
4709 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4710 </ownedElements>
4711 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXHigWDAEeq8BovXV4ESzw" name="/maximum_deductible_amount_for_old_age_pension_plan : EDouble = 0.0" tooltipText="">
4712 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/maximum_deductible_amount_for_old_age_pension_plan"/>
4713 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan/maximum_deductible_amount_for_old_age_pension_plan"/>
4714 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXIJkGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4715 <labelFormat>bold</labelFormat>
4716 </ownedStyle>
4717 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4718 </ownedElements>
4719 </ownedDiagramElements>
4720 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKHBQWDAEeq8BovXV4ESzw" name="Category_of_Private_Insurance_and_Plan" tooltipText="" width="12" height="10">
4721 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan"/>
4722 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan"/>
4723 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKHoUGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
4724 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
4725 </ownedStyle>
4726 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
4727 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX9QAWDAEeq8BovXV4ESzw" name="PRIVATE_INSURANCE" tooltipText="">
4728 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/PRIVATE_INSURANCE"/>
4729 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/PRIVATE_INSURANCE"/>
4730 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX9QAmDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4731 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4732 </ownedStyle>
4733 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4734 </ownedElements>
4735 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX93EGDAEeq8BovXV4ESzw" name="PRIVATE_LIFE_INSURANCE" tooltipText="">
4736 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/PRIVATE_LIFE_INSURANCE"/>
4737 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/PRIVATE_LIFE_INSURANCE"/>
4738 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX93EWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4739 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4740 </ownedStyle>
4741 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4742 </ownedElements>
4743 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX93EmDAEeq8BovXV4ESzw" name="COMPANY_MEMBERS_PRIVATE_INSURANCE" tooltipText="">
4744 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
4745 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
4746 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX93E2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
4747 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4748 </ownedStyle>
4749 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4750 </ownedElements>
4751 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX-eIGDAEeq8BovXV4ESzw" name="HOUSING_SAVING_PLAN" tooltipText="">
4752 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/HOUSING_SAVING_PLAN"/>
4753 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/HOUSING_SAVING_PLAN"/>
4754 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX-eIWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4755 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4756 </ownedStyle>
4757 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4758 </ownedElements>
4759 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX_FMGDAEeq8BovXV4ESzw" name="OLD_AGE_PENSION_PLAN" tooltipText="">
4760 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/OLD_AGE_PENSION_PLAN"/>
4761 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/OLD_AGE_PENSION_PLAN"/>
4762 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX_FMWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
4763 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4764 </ownedStyle>
4765 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4766 </ownedElements>
4767 </ownedDiagramElements>
4768 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKIPYGDAEeq8BovXV4ESzw" name="DS_for_Loss_Carryforward" tooltipText="" outgoingEdges="_aZBnAGDAEeq8BovXV4ESzw" width="12" height="10">
4769 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Loss_Carryforward"/>
4770 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Loss_Carryforward"/>
4771 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKI2cGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4772 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4773 </ownedStyle>
4774 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4775 </ownedDiagramElements>
4776 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKJdgGDAEeq8BovXV4ESzw" name="DS_for_Donation" tooltipText="" outgoingEdges="_aZCOE2DAEeq8BovXV4ESzw" width="12" height="10">
4777 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Donation"/>
4778 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Donation"/>
4779 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKJdgWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4780 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4781 </ownedStyle>
4782 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4783 </ownedDiagramElements>
4784 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKKroGDAEeq8BovXV4ESzw" name="Permanent_Expense" tooltipText="" outgoingEdges="_aZDcM2DAEeq8BovXV4ESzw" width="12" height="10">
4785 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Permanent_Expense"/>
4786 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Permanent_Expense"/>
4787 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKKroWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4788 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4789 </ownedStyle>
4790 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4791 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXJXsGDAEeq8BovXV4ESzw" name="category : Category_of_Permanent_Expense = MISCELLANEOUS_DEBT" tooltipText="">
4792 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Permanent_Expense/category"/>
4793 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Permanent_Expense/category"/>
4794 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXJ-wGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4795 <labelFormat>bold</labelFormat>
4796 </ownedStyle>
4797 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4798 </ownedElements>
4799 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXJ-wWDAEeq8BovXV4ESzw" name="/is_eligible_for_deduction : EBoolean = false" tooltipText="">
4800 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Permanent_Expense/is_eligible_for_deduction"/>
4801 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Permanent_Expense/is_eligible_for_deduction"/>
4802 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXKl0GDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4803 <labelFormat>bold</labelFormat>
4804 </ownedStyle>
4805 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4806 </ownedElements>
4807 </ownedDiagramElements>
4808 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKL5wGDAEeq8BovXV4ESzw" name="Special_Expense_DS" tooltipText="" outgoingEdges="_aZEqUGDAEeq8BovXV4ESzw" incomingEdges="_aZDcM2DAEeq8BovXV4ESzw _aZFRY2DAEeq8BovXV4ESzw _aZF4dmDAEeq8BovXV4ESzw _aZGfhmDAEeq8BovXV4ESzw _aZHGlmDAEeq8BovXV4ESzw _aZHtpmDAEeq8BovXV4ESzw" width="12" height="10">
4809 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Special_Expense_DS"/>
4810 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Special_Expense_DS"/>
4811 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKMg0GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4812 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4813 </ownedStyle>
4814 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4815 </ownedDiagramElements>
4816 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKNH4GDAEeq8BovXV4ESzw" name="Interest_Expense" tooltipText="" outgoingEdges="_aZFRY2DAEeq8BovXV4ESzw" width="12" height="10">
4817 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Interest_Expense"/>
4818 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Interest_Expense"/>
4819 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKNu8GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4820 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4821 </ownedStyle>
4822 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4823 </ownedDiagramElements>
4824 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKOWAGDAEeq8BovXV4ESzw" name="Private_Insurance_and_Plan" tooltipText="" outgoingEdges="_aZF4dmDAEeq8BovXV4ESzw" width="12" height="10">
4825 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Private_Insurance_and_Plan"/>
4826 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Private_Insurance_and_Plan"/>
4827 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKO9EGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4828 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4829 </ownedStyle>
4830 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4831 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXLz8GDAEeq8BovXV4ESzw" name="category : Category_of_Private_Insurance_and_Plan = PRIVATE_INSURANCE" tooltipText="">
4832 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Private_Insurance_and_Plan/category"/>
4833 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Private_Insurance_and_Plan/category"/>
4834 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXLz8WDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4835 <labelFormat>bold</labelFormat>
4836 </ownedStyle>
4837 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4838 </ownedElements>
4839 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXMbAGDAEeq8BovXV4ESzw" name="duration_of_contract : EInt" tooltipText="">
4840 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Private_Insurance_and_Plan/duration_of_contract"/>
4841 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Private_Insurance_and_Plan/duration_of_contract"/>
4842 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXMbAWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4843 <labelFormat>bold</labelFormat>
4844 </ownedStyle>
4845 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4846 </ownedElements>
4847 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXNCEGDAEeq8BovXV4ESzw" name="/is_private_insurance_and_plan_eligible_for_deduction : EBoolean = false" tooltipText="">
4848 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Private_Insurance_and_Plan/is_private_insurance_and_plan_eligible_for_deduction"/>
4849 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Private_Insurance_and_Plan/is_private_insurance_and_plan_eligible_for_deduction"/>
4850 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXNCEWDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4851 <labelFormat>bold</labelFormat>
4852 </ownedStyle>
4853 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4854 </ownedElements>
4855 </ownedDiagramElements>
4856 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKPkIGDAEeq8BovXV4ESzw" name="Health_and_Pension_Insurance" tooltipText="" outgoingEdges="_aZGfhmDAEeq8BovXV4ESzw" width="12" height="10">
4857 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Health_and_Pension_Insurance"/>
4858 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Health_and_Pension_Insurance"/>
4859 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKQLMGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4860 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4861 </ownedStyle>
4862 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4863 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXNpIGDAEeq8BovXV4ESzw" name="category : Category_of_Health_and_Pension_Insurances = MANDATORY_HEALTH_AND_PENSION_INSURANCE" tooltipText="">
4864 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Health_and_Pension_Insurance/category"/>
4865 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Health_and_Pension_Insurance/category"/>
4866 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXOQMGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4867 <labelFormat>bold</labelFormat>
4868 </ownedStyle>
4869 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4870 </ownedElements>
4871 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXPeUGDAEeq8BovXV4ESzw" name="is_related_to_additional_salary : EBoolean = false" tooltipText="">
4872 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Health_and_Pension_Insurance/is_related_to_additional_salary"/>
4873 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Health_and_Pension_Insurance/is_related_to_additional_salary"/>
4874 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXQFYGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4875 <labelFormat>bold</labelFormat>
4876 </ownedStyle>
4877 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4878 </ownedElements>
4879 </ownedDiagramElements>
4880 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKQyQGDAEeq8BovXV4ESzw" name="Donation" tooltipText="" outgoingEdges="_aZHGlmDAEeq8BovXV4ESzw" width="12" height="10">
4881 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Donation"/>
4882 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Donation"/>
4883 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKRZUGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4884 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4885 </ownedStyle>
4886 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4887 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXRTgGDAEeq8BovXV4ESzw" name="beneficiary1 : EString" tooltipText="">
4888 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Donation/beneficiary1"/>
4889 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Donation/beneficiary1"/>
4890 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXRTgWDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4891 <labelFormat>bold</labelFormat>
4892 </ownedStyle>
4893 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4894 </ownedElements>
4895 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXR6kGDAEeq8BovXV4ESzw" name="/is_beneficiary_eligible : EBoolean = false" tooltipText="">
4896 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Donation/is_beneficiary_eligible"/>
4897 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Donation/is_beneficiary_eligible"/>
4898 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXShoGDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4899 <labelFormat>bold</labelFormat>
4900 </ownedStyle>
4901 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4902 </ownedElements>
4903 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXShoWDAEeq8BovXV4ESzw" name="is_donation_reported : EBoolean = false" tooltipText="">
4904 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Donation/is_donation_reported"/>
4905 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Donation/is_donation_reported"/>
4906 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXTIsGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4907 <labelFormat>bold</labelFormat>
4908 </ownedStyle>
4909 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4910 </ownedElements>
4911 </ownedDiagramElements>
4912 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKSAYWDAEeq8BovXV4ESzw" name="Loss_Carryforward" tooltipText="" outgoingEdges="_aZHtpmDAEeq8BovXV4ESzw" width="12" height="10">
4913 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Loss_Carryforward"/>
4914 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Loss_Carryforward"/>
4915 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKSncGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4916 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4917 </ownedStyle>
4918 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4919 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXTvwGDAEeq8BovXV4ESzw" name="/regular_accountability : EBoolean = false" tooltipText="">
4920 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/regular_accountability"/>
4921 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/regular_accountability"/>
4922 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXUW0GDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4923 <labelFormat>bold</labelFormat>
4924 </ownedStyle>
4925 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4926 </ownedElements>
4927 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXU94GDAEeq8BovXV4ESzw" name="/compensation_by_other_means : EBoolean = false" tooltipText="">
4928 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/compensation_by_other_means"/>
4929 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/compensation_by_other_means"/>
4930 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXU94WDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4931 <labelFormat>bold</labelFormat>
4932 </ownedStyle>
4933 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4934 </ownedElements>
4935 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXVk8GDAEeq8BovXV4ESzw" name="/tax_payer_has_inherited_business_ownership : EBoolean = false" tooltipText="">
4936 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/tax_payer_has_inherited_business_ownership"/>
4937 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/tax_payer_has_inherited_business_ownership"/>
4938 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXVk8WDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4939 <labelFormat>bold</labelFormat>
4940 </ownedStyle>
4941 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4942 </ownedElements>
4943 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXWMAGDAEeq8BovXV4ESzw" name="/tax_payer_has_been_partner_in_business : EBoolean = true" tooltipText="">
4944 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/tax_payer_has_been_partner_in_business"/>
4945 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Loss_Carryforward/tax_payer_has_been_partner_in_business"/>
4946 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXWMAWDAEeq8BovXV4ESzw" labelColor="39,76,114" labelAlignment="LEFT" description="_aL9bYGDAEeq8BovXV4ESzw">
4947 <labelFormat>bold</labelFormat>
4948 </ownedStyle>
4949 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4950 </ownedElements>
4951 </ownedDiagramElements>
4952 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKT1kGDAEeq8BovXV4ESzw" name="Spousal_Expense_AC" tooltipText="" outgoingEdges="_aZIUs2DAEeq8BovXV4ESzw" width="12" height="10">
4953 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Spousal_Expense_AC"/>
4954 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Spousal_Expense_AC"/>
4955 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKT1kWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4956 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4957 </ownedStyle>
4958 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4959 </ownedDiagramElements>
4960 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKUcoWDAEeq8BovXV4ESzw" name="Extraordinary_Expense_CE" tooltipText="" outgoingEdges="_aZI7xmDAEeq8BovXV4ESzw" width="12" height="10">
4961 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Extraordinary_Expense_CE"/>
4962 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Extraordinary_Expense_CE"/>
4963 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKVDsGDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4964 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4965 </ownedStyle>
4966 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4967 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXWzEGDAEeq8BovXV4ESzw" name="thresholded_deduction_percentage : EDouble = 0.0" tooltipText="">
4968 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Extraordinary_Expense_CE/thresholded_deduction_percentage"/>
4969 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Extraordinary_Expense_CE/thresholded_deduction_percentage"/>
4970 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXXaIGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4971 <labelFormat>bold</labelFormat>
4972 </ownedStyle>
4973 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4974 </ownedElements>
4975 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aXYBMGDAEeq8BovXV4ESzw" name="ce_type : CE_Type = INALIDITY_AND_INFIRMITY" tooltipText="">
4976 <target xmi:type="ecore:EAttribute" href="Taxation.ecore#//Extraordinary_Expense_CE/ce_type"/>
4977 <semanticElements xmi:type="ecore:EAttribute" href="Taxation.ecore#//Extraordinary_Expense_CE/ce_type"/>
4978 <ownedStyle xmi:type="diagram:BundledImage" uid="_aXYoQGDAEeq8BovXV4ESzw" labelAlignment="LEFT" description="_aLikoGDAEeq8BovXV4ESzw">
4979 <labelFormat>bold</labelFormat>
4980 </ownedStyle>
4981 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4982 </ownedElements>
4983 </ownedDiagramElements>
4984 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKVqwWDAEeq8BovXV4ESzw" name="Travel_Expense_FD" tooltipText="" outgoingEdges="_aZJi02DAEeq8BovXV4ESzw" width="12" height="10">
4985 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Travel_Expense_FD"/>
4986 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Travel_Expense_FD"/>
4987 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKWR0GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4988 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4989 </ownedStyle>
4990 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4991 </ownedDiagramElements>
4992 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKW44WDAEeq8BovXV4ESzw" name="Professional_Expense" tooltipText="" outgoingEdges="_aZKJ4GDAEeq8BovXV4ESzw" incomingEdges="_aZJi02DAEeq8BovXV4ESzw _aZKJ52DAEeq8BovXV4ESzw" width="12" height="10">
4993 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Professional_Expense"/>
4994 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Professional_Expense"/>
4995 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKXf8GDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4996 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4997 </ownedStyle>
4998 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4999 </ownedDiagramElements>
5000 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKYHAGDAEeq8BovXV4ESzw" name="Miscellaneous_Expense_FO" tooltipText="" outgoingEdges="_aZKJ52DAEeq8BovXV4ESzw" width="12" height="10">
5001 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Miscellaneous_Expense_FO"/>
5002 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Miscellaneous_Expense_FO"/>
5003 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKYHAWDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
5004 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
5005 </ownedStyle>
5006 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
5007 </ownedDiagramElements>
5008 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_aKYuEWDAEeq8BovXV4ESzw" name="Legal_Union_Types" tooltipText="" width="12" height="10">
5009 <target xmi:type="ecore:EEnum" href="Taxation.ecore#//Legal_Union_Types"/>
5010 <semanticElements xmi:type="ecore:EEnum" href="Taxation.ecore#//Legal_Union_Types"/>
5011 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_aKYuEmDAEeq8BovXV4ESzw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
5012 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
5013 </ownedStyle>
5014 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
5015 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX_FMmDAEeq8BovXV4ESzw" name="MARIAGE" tooltipText="">
5016 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Legal_Union_Types/MARIAGE"/>
5017 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Legal_Union_Types/MARIAGE"/>
5018 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX_FM2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
5019 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5020 </ownedStyle>
5021 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5022 </ownedElements>
5023 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX_sQGDAEeq8BovXV4ESzw" name="PARTNERSHIP" tooltipText="">
5024 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Legal_Union_Types/PARTNERSHIP"/>
5025 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Legal_Union_Types/PARTNERSHIP"/>
5026 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX_sQWDAEeq8BovXV4ESzw" labelAlignment="LEFT">
5027 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5028 </ownedStyle>
5029 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5030 </ownedElements>
5031 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aX_sQmDAEeq8BovXV4ESzw" name="OTHER" tooltipText="">
5032 <target xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Legal_Union_Types/OTHER"/>
5033 <semanticElements xmi:type="ecore:EEnumLiteral" href="Taxation.ecore#//Legal_Union_Types/OTHER"/>
5034 <ownedStyle xmi:type="diagram:BundledImage" uid="_aX_sQ2DAEeq8BovXV4ESzw" labelAlignment="LEFT">
5035 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5036 </ownedStyle>
5037 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5038 </ownedElements>
5039 </ownedDiagramElements>
5040 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYSAIGDAEeq8BovXV4ESzw" name="[1..1] taxPayer" sourceNode="_aAoVIGDAEeq8BovXV4ESzw" targetNode="_aApjQGDAEeq8BovXV4ESzw">
5041 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Tax/taxPayer"/>
5042 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Tax/taxPayer"/>
5043 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYbKEGDAEeq8BovXV4ESzw" description="_aYT1UGDAEeq8BovXV4ESzw" routingStyle="manhattan" strokeColor="0,0,0">
5044 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYcYMGDAEeq8BovXV4ESzw" showIcon="false">
5045 <customFeatures>labelSize</customFeatures>
5046 <labelFormat>bold</labelFormat>
5047 </centerLabelStyle>
5048 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aYbxIGDAEeq8BovXV4ESzw" showIcon="false" labelColor="39,76,114">
5049 <customFeatures>labelSize</customFeatures>
5050 </endLabelStyle>
5051 </ownedStyle>
5052 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5053 </ownedDiagramElements>
5054 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYdmUGDAEeq8BovXV4ESzw" name="[1..1] reciver" sourceNode="_aAyGIGDAEeq8BovXV4ESzw" targetNode="_aArYcGDAEeq8BovXV4ESzw">
5055 <target xmi:type="ecore:EReference" href="Taxation.ecore#//External_Allowance/reciver"/>
5056 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//External_Allowance/reciver"/>
5057 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYeNYGDAEeq8BovXV4ESzw" description="_aYT1UGDAEeq8BovXV4ESzw" routingStyle="manhattan" strokeColor="0,0,0">
5058 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYeNYmDAEeq8BovXV4ESzw" showIcon="false">
5059 <customFeatures>labelSize</customFeatures>
5060 <labelFormat>bold</labelFormat>
5061 </centerLabelStyle>
5062 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aYeNYWDAEeq8BovXV4ESzw" showIcon="false" labelColor="39,76,114">
5063 <customFeatures>labelSize</customFeatures>
5064 </endLabelStyle>
5065 </ownedStyle>
5066 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5067 </ownedDiagramElements>
5068 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYeNZmDAEeq8BovXV4ESzw" name="[1..1] individual_A" sourceNode="_aA1JcGDAEeq8BovXV4ESzw" targetNode="_aArYcGDAEeq8BovXV4ESzw">
5069 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/individual_A"/>
5070 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/individual_A"/>
5071 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYe0c2DAEeq8BovXV4ESzw" description="_aYe0cGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5072 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYe0dWDAEeq8BovXV4ESzw" showIcon="false">
5073 <customFeatures>labelSize</customFeatures>
5074 <labelFormat>bold</labelFormat>
5075 </centerLabelStyle>
5076 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aYe0dGDAEeq8BovXV4ESzw" showIcon="false" labelColor="39,76,114">
5077 <customFeatures>labelSize</customFeatures>
5078 </endLabelStyle>
5079 </ownedStyle>
5080 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5081 </ownedDiagramElements>
5082 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYe0eWDAEeq8BovXV4ESzw" name="[1..*] individual_B" sourceNode="_aA1JcGDAEeq8BovXV4ESzw" targetNode="_aArYcGDAEeq8BovXV4ESzw">
5083 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/individual_B"/>
5084 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/individual_B"/>
5085 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYfbgGDAEeq8BovXV4ESzw" description="_aYe0cGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5086 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYfbgmDAEeq8BovXV4ESzw" showIcon="false">
5087 <customFeatures>labelSize</customFeatures>
5088 <labelFormat>bold</labelFormat>
5089 </centerLabelStyle>
5090 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aYfbgWDAEeq8BovXV4ESzw" showIcon="false" labelColor="39,76,114">
5091 <customFeatures>labelSize</customFeatures>
5092 </endLabelStyle>
5093 </ownedStyle>
5094 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5095 </ownedDiagramElements>
5096 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYgCkGDAEeq8BovXV4ESzw" name="[0..1] tax_payers_address" sourceNode="_aFaugGDAEeq8BovXV4ESzw" targetNode="_aAubwGDAEeq8BovXV4ESzw">
5097 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/tax_payers_address"/>
5098 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/tax_payers_address"/>
5099 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYgpoGDAEeq8BovXV4ESzw" routingStyle="manhattan" strokeColor="0,0,0">
5100 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
5101 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYgpomDAEeq8BovXV4ESzw" showIcon="false">
5102 <customFeatures>labelSize</customFeatures>
5103 </centerLabelStyle>
5104 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aYgpoWDAEeq8BovXV4ESzw" showIcon="false" labelColor="39,76,114">
5105 <customFeatures>labelSize</customFeatures>
5106 </endLabelStyle>
5107 </ownedStyle>
5108 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5109 </ownedDiagramElements>
5110 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYgppmDAEeq8BovXV4ESzw" name="[0..1] taxPayer" sourceNode="_aHnt8WDAEeq8BovXV4ESzw" targetNode="_aApjQGDAEeq8BovXV4ESzw">
5111 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Tax_Credit/taxPayer"/>
5112 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Tax_Credit/taxPayer"/>
5113 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYhQsGDAEeq8BovXV4ESzw" routingStyle="manhattan" strokeColor="0,0,0">
5114 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
5115 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYhQsmDAEeq8BovXV4ESzw" showIcon="false">
5116 <customFeatures>labelSize</customFeatures>
5117 </centerLabelStyle>
5118 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aYhQsWDAEeq8BovXV4ESzw" showIcon="false" labelColor="39,76,114">
5119 <customFeatures>labelSize</customFeatures>
5120 </endLabelStyle>
5121 </ownedStyle>
5122 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5123 </ownedDiagramElements>
5124 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYnXUGDAEeq8BovXV4ESzw" sourceNode="_aApjQGDAEeq8BovXV4ESzw" targetNode="_aArYcGDAEeq8BovXV4ESzw">
5125 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Payer"/>
5126 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Payer"/>
5127 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYrBsGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5128 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5129 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYrowGDAEeq8BovXV4ESzw" showIcon="false">
5130 <labelFormat>italic</labelFormat>
5131 </beginLabelStyle>
5132 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYrowWDAEeq8BovXV4ESzw" showIcon="false"/>
5133 </ownedStyle>
5134 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5135 </ownedDiagramElements>
5136 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYsP02DAEeq8BovXV4ESzw" sourceNode="_aApjQGDAEeq8BovXV4ESzw" targetNode="_aA5a4GDAEeq8BovXV4ESzw">
5137 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Payer"/>
5138 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Tax_Payer"/>
5139 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYs24GDAEeq8BovXV4ESzw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree">
5140 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
5141 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYs24WDAEeq8BovXV4ESzw" showIcon="false">
5142 <labelFormat>italic</labelFormat>
5143 </beginLabelStyle>
5144 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYs24mDAEeq8BovXV4ESzw" showIcon="false"/>
5145 </ownedStyle>
5146 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5147 </ownedDiagramElements>
5148 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYs25mDAEeq8BovXV4ESzw" sourceNode="_aAw4AGDAEeq8BovXV4ESzw" targetNode="_aArYcGDAEeq8BovXV4ESzw">
5149 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Dependent"/>
5150 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Dependent"/>
5151 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYuFAGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5152 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5153 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYuFAWDAEeq8BovXV4ESzw" showIcon="false">
5154 <labelFormat>italic</labelFormat>
5155 </beginLabelStyle>
5156 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYuFAmDAEeq8BovXV4ESzw" showIcon="false"/>
5157 </ownedStyle>
5158 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5159 </ownedDiagramElements>
5160 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYuFBmDAEeq8BovXV4ESzw" sourceNode="_aAzUQGDAEeq8BovXV4ESzw" targetNode="_aA5a4GDAEeq8BovXV4ESzw">
5161 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Household"/>
5162 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Household"/>
5163 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYusEGDAEeq8BovXV4ESzw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree">
5164 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
5165 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYusEWDAEeq8BovXV4ESzw" showIcon="false">
5166 <labelFormat>italic</labelFormat>
5167 </beginLabelStyle>
5168 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYusEmDAEeq8BovXV4ESzw" showIcon="false"/>
5169 </ownedStyle>
5170 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5171 </ownedDiagramElements>
5172 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYusFmDAEeq8BovXV4ESzw" sourceNode="_aHt0kGDAEeq8BovXV4ESzw" targetNode="_aAubwGDAEeq8BovXV4ESzw">
5173 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Fiscal_Address"/>
5174 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Fiscal_Address"/>
5175 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYvTIGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5176 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5177 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYvTIWDAEeq8BovXV4ESzw" showIcon="false">
5178 <labelFormat>italic</labelFormat>
5179 </beginLabelStyle>
5180 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYvTImDAEeq8BovXV4ESzw" showIcon="false"/>
5181 </ownedStyle>
5182 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5183 </ownedDiagramElements>
5184 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYvTJmDAEeq8BovXV4ESzw" sourceNode="_aHvpwGDAEeq8BovXV4ESzw" targetNode="_aAubwGDAEeq8BovXV4ESzw">
5185 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Habitual_Address"/>
5186 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Habitual_Address"/>
5187 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYv6MGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5188 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5189 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYv6MWDAEeq8BovXV4ESzw" showIcon="false">
5190 <labelFormat>italic</labelFormat>
5191 </beginLabelStyle>
5192 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYv6MmDAEeq8BovXV4ESzw" showIcon="false"/>
5193 </ownedStyle>
5194 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5195 </ownedDiagramElements>
5196 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYv6NmDAEeq8BovXV4ESzw" sourceNode="_aHwQ0WDAEeq8BovXV4ESzw" targetNode="_aA1JcGDAEeq8BovXV4ESzw">
5197 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Marriage_Record"/>
5198 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Marriage_Record"/>
5199 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYwhQGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5200 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5201 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYwhQWDAEeq8BovXV4ESzw" showIcon="false">
5202 <labelFormat>italic</labelFormat>
5203 </beginLabelStyle>
5204 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYwhQmDAEeq8BovXV4ESzw" showIcon="false"/>
5205 </ownedStyle>
5206 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5207 </ownedDiagramElements>
5208 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYwhRmDAEeq8BovXV4ESzw" sourceNode="_aHxe8GDAEeq8BovXV4ESzw" targetNode="_aApjQGDAEeq8BovXV4ESzw">
5209 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Non_Resident_Tax_Payer"/>
5210 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Non_Resident_Tax_Payer"/>
5211 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYwhR2DAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5212 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5213 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYwhSGDAEeq8BovXV4ESzw" showIcon="false">
5214 <labelFormat>italic</labelFormat>
5215 </beginLabelStyle>
5216 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYwhSWDAEeq8BovXV4ESzw" showIcon="false"/>
5217 </ownedStyle>
5218 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5219 </ownedDiagramElements>
5220 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYxIU2DAEeq8BovXV4ESzw" sourceNode="_aHytEGDAEeq8BovXV4ESzw" targetNode="_aA1JcGDAEeq8BovXV4ESzw">
5221 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Partnership_Record"/>
5222 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Partnership_Record"/>
5223 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYxIVGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5224 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5225 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYxIVWDAEeq8BovXV4ESzw" showIcon="false">
5226 <labelFormat>italic</labelFormat>
5227 </beginLabelStyle>
5228 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYxIVmDAEeq8BovXV4ESzw" showIcon="false"/>
5229 </ownedStyle>
5230 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5231 </ownedDiagramElements>
5232 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYxvYGDAEeq8BovXV4ESzw" sourceNode="_aHz7MGDAEeq8BovXV4ESzw" targetNode="_aApjQGDAEeq8BovXV4ESzw">
5233 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Resident_Tax_Payer"/>
5234 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Resident_Tax_Payer"/>
5235 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYxvYWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5236 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5237 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYxvYmDAEeq8BovXV4ESzw" showIcon="false">
5238 <labelFormat>italic</labelFormat>
5239 </beginLabelStyle>
5240 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYxvY2DAEeq8BovXV4ESzw" showIcon="false"/>
5241 </ownedStyle>
5242 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5243 </ownedDiagramElements>
5244 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYyWc2DAEeq8BovXV4ESzw" sourceNode="_aJsxkGDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw">
5245 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Trade_and_Business_Income"/>
5246 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Trade_and_Business_Income"/>
5247 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYyWdGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5248 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5249 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYyWdWDAEeq8BovXV4ESzw" showIcon="false">
5250 <labelFormat>italic</labelFormat>
5251 </beginLabelStyle>
5252 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYyWdmDAEeq8BovXV4ESzw" showIcon="false"/>
5253 </ownedStyle>
5254 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5255 </ownedDiagramElements>
5256 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aYy9g2DAEeq8BovXV4ESzw" sourceNode="_aJt_sGDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw">
5257 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Agriculture_and_Forestry_Income"/>
5258 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Agriculture_and_Forestry_Income"/>
5259 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aYzkkGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5260 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5261 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aYzkkWDAEeq8BovXV4ESzw" showIcon="false">
5262 <labelFormat>italic</labelFormat>
5263 </beginLabelStyle>
5264 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aYzkkmDAEeq8BovXV4ESzw" showIcon="false"/>
5265 </ownedStyle>
5266 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5267 </ownedDiagramElements>
5268 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY0LoGDAEeq8BovXV4ESzw" sourceNode="_aJvN0GDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw">
5269 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Pensions_and_Annuities_Income"/>
5270 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Pensions_and_Annuities_Income"/>
5271 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY0LoWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5272 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5273 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY0LomDAEeq8BovXV4ESzw" showIcon="false">
5274 <labelFormat>italic</labelFormat>
5275 </beginLabelStyle>
5276 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY0Lo2DAEeq8BovXV4ESzw" showIcon="false"/>
5277 </ownedStyle>
5278 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5279 </ownedDiagramElements>
5280 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY0ysGDAEeq8BovXV4ESzw" sourceNode="_aJwb8GDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw">
5281 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Capital_and_Investments_Income"/>
5282 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Capital_and_Investments_Income"/>
5283 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY0ysWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5284 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5285 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY0ysmDAEeq8BovXV4ESzw" showIcon="false">
5286 <labelFormat>italic</labelFormat>
5287 </beginLabelStyle>
5288 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY0ys2DAEeq8BovXV4ESzw" showIcon="false"/>
5289 </ownedStyle>
5290 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5291 </ownedDiagramElements>
5292 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY1ZwmDAEeq8BovXV4ESzw" sourceNode="_aJxqEGDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw">
5293 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Employment_Income"/>
5294 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Employment_Income"/>
5295 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY2A0GDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5296 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5297 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY2A0WDAEeq8BovXV4ESzw" showIcon="false">
5298 <labelFormat>italic</labelFormat>
5299 </beginLabelStyle>
5300 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY2A0mDAEeq8BovXV4ESzw" showIcon="false"/>
5301 </ownedStyle>
5302 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5303 </ownedDiagramElements>
5304 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY2A1mDAEeq8BovXV4ESzw" sourceNode="_aJzfQGDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw">
5305 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Rentals_and_Leases_Income"/>
5306 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Rentals_and_Leases_Income"/>
5307 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY2n4GDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5308 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5309 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY2n4WDAEeq8BovXV4ESzw" showIcon="false">
5310 <labelFormat>italic</labelFormat>
5311 </beginLabelStyle>
5312 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY2n4mDAEeq8BovXV4ESzw" showIcon="false"/>
5313 </ownedStyle>
5314 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5315 </ownedDiagramElements>
5316 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY32AGDAEeq8BovXV4ESzw" sourceNode="_aJ0tYGDAEeq8BovXV4ESzw" targetNode="_aA73IWDAEeq8BovXV4ESzw">
5317 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Foreign_Income"/>
5318 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Foreign_Income"/>
5319 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY32AWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5320 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5321 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY32AmDAEeq8BovXV4ESzw" showIcon="false">
5322 <labelFormat>italic</labelFormat>
5323 </beginLabelStyle>
5324 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY32A2DAEeq8BovXV4ESzw" showIcon="false"/>
5325 </ownedStyle>
5326 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5327 </ownedDiagramElements>
5328 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY4dE2DAEeq8BovXV4ESzw" sourceNode="_aJ17gGDAEeq8BovXV4ESzw" targetNode="_aA73IWDAEeq8BovXV4ESzw">
5329 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Local_Income"/>
5330 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Local_Income"/>
5331 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY5EIGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5332 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5333 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY5EIWDAEeq8BovXV4ESzw" showIcon="false">
5334 <labelFormat>italic</labelFormat>
5335 </beginLabelStyle>
5336 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY5EImDAEeq8BovXV4ESzw" showIcon="false"/>
5337 </ownedStyle>
5338 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5339 </ownedDiagramElements>
5340 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY5rM2DAEeq8BovXV4ESzw" sourceNode="_aJ3JoGDAEeq8BovXV4ESzw" targetNode="_aHnt8WDAEeq8BovXV4ESzw">
5341 <target xmi:type="ecore:EClass" href="Taxation.ecore#//CIM"/>
5342 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//CIM"/>
5343 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY6SQGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5344 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5345 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY6SQWDAEeq8BovXV4ESzw" showIcon="false">
5346 <labelFormat>italic</labelFormat>
5347 </beginLabelStyle>
5348 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY6SQmDAEeq8BovXV4ESzw" showIcon="false"/>
5349 </ownedStyle>
5350 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5351 </ownedDiagramElements>
5352 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY65UGDAEeq8BovXV4ESzw" sourceNode="_aJ4XwGDAEeq8BovXV4ESzw" targetNode="_aHnt8WDAEeq8BovXV4ESzw">
5353 <target xmi:type="ecore:EClass" href="Taxation.ecore#//CIP"/>
5354 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//CIP"/>
5355 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY65UWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5356 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5357 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY65UmDAEeq8BovXV4ESzw" showIcon="false">
5358 <labelFormat>italic</labelFormat>
5359 </beginLabelStyle>
5360 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY65U2DAEeq8BovXV4ESzw" showIcon="false"/>
5361 </ownedStyle>
5362 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5363 </ownedDiagramElements>
5364 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY7gYGDAEeq8BovXV4ESzw" sourceNode="_aJ5l4GDAEeq8BovXV4ESzw" targetNode="_aHnt8WDAEeq8BovXV4ESzw">
5365 <target xmi:type="ecore:EClass" href="Taxation.ecore#//CIS"/>
5366 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//CIS"/>
5367 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY7gYWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5368 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5369 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY7gYmDAEeq8BovXV4ESzw" showIcon="false">
5370 <labelFormat>italic</labelFormat>
5371 </beginLabelStyle>
5372 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY7gY2DAEeq8BovXV4ESzw" showIcon="false"/>
5373 </ownedStyle>
5374 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5375 </ownedDiagramElements>
5376 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY8HcGDAEeq8BovXV4ESzw" sourceNode="_aJ60AGDAEeq8BovXV4ESzw" targetNode="_aJ8pMGDAEeq8BovXV4ESzw">
5377 <target xmi:type="ecore:EClass" href="Taxation.ecore#//FD"/>
5378 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//FD"/>
5379 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY8HcWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5380 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5381 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY8HcmDAEeq8BovXV4ESzw" showIcon="false">
5382 <labelFormat>italic</labelFormat>
5383 </beginLabelStyle>
5384 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY8Hc2DAEeq8BovXV4ESzw" showIcon="false"/>
5385 </ownedStyle>
5386 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5387 </ownedDiagramElements>
5388 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY8ugGDAEeq8BovXV4ESzw" sourceNode="_aJ93UGDAEeq8BovXV4ESzw" targetNode="_aJ8pMGDAEeq8BovXV4ESzw">
5389 <target xmi:type="ecore:EClass" href="Taxation.ecore#//FO"/>
5390 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//FO"/>
5391 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY8ugWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5392 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5393 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY8ugmDAEeq8BovXV4ESzw" showIcon="false">
5394 <labelFormat>italic</labelFormat>
5395 </beginLabelStyle>
5396 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY8ug2DAEeq8BovXV4ESzw" showIcon="false"/>
5397 </ownedStyle>
5398 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5399 </ownedDiagramElements>
5400 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY8uh2DAEeq8BovXV4ESzw" sourceNode="_aJ_FcGDAEeq8BovXV4ESzw" targetNode="_aKATkGDAEeq8BovXV4ESzw">
5401 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Permanent_Expense"/>
5402 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Permanent_Expense"/>
5403 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY9VkGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5404 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5405 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY9VkWDAEeq8BovXV4ESzw" showIcon="false">
5406 <labelFormat>italic</labelFormat>
5407 </beginLabelStyle>
5408 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY9VkmDAEeq8BovXV4ESzw" showIcon="false"/>
5409 </ownedStyle>
5410 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5411 </ownedDiagramElements>
5412 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY-jsGDAEeq8BovXV4ESzw" sourceNode="_aKCv0GDAEeq8BovXV4ESzw" targetNode="_aKATkGDAEeq8BovXV4ESzw">
5413 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Interest_Expense"/>
5414 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Interest_Expense"/>
5415 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY_KwGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5416 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5417 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY_KwWDAEeq8BovXV4ESzw" showIcon="false">
5418 <labelFormat>italic</labelFormat>
5419 </beginLabelStyle>
5420 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY_KwmDAEeq8BovXV4ESzw" showIcon="false"/>
5421 </ownedStyle>
5422 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5423 </ownedDiagramElements>
5424 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aY_KxmDAEeq8BovXV4ESzw" sourceNode="_aKD98GDAEeq8BovXV4ESzw" targetNode="_aKATkGDAEeq8BovXV4ESzw">
5425 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Health_and_Pension_Insurance"/>
5426 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Health_and_Pension_Insurance"/>
5427 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aY_x0GDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5428 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5429 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aY_x0WDAEeq8BovXV4ESzw" showIcon="false">
5430 <labelFormat>italic</labelFormat>
5431 </beginLabelStyle>
5432 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aY_x0mDAEeq8BovXV4ESzw" showIcon="false"/>
5433 </ownedStyle>
5434 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5435 </ownedDiagramElements>
5436 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZAY42DAEeq8BovXV4ESzw" sourceNode="_aKFzIWDAEeq8BovXV4ESzw" targetNode="_aKATkGDAEeq8BovXV4ESzw">
5437 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan"/>
5438 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Private_Insurance_and_Plan"/>
5439 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZA_8GDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5440 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5441 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZA_8WDAEeq8BovXV4ESzw" showIcon="false">
5442 <labelFormat>italic</labelFormat>
5443 </beginLabelStyle>
5444 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZA_8mDAEeq8BovXV4ESzw" showIcon="false"/>
5445 </ownedStyle>
5446 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5447 </ownedDiagramElements>
5448 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZBnAGDAEeq8BovXV4ESzw" sourceNode="_aKIPYGDAEeq8BovXV4ESzw" targetNode="_aKATkGDAEeq8BovXV4ESzw">
5449 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Loss_Carryforward"/>
5450 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Loss_Carryforward"/>
5451 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZBnAWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5452 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5453 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZBnAmDAEeq8BovXV4ESzw" showIcon="false">
5454 <labelFormat>italic</labelFormat>
5455 </beginLabelStyle>
5456 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZBnA2DAEeq8BovXV4ESzw" showIcon="false"/>
5457 </ownedStyle>
5458 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5459 </ownedDiagramElements>
5460 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZCOE2DAEeq8BovXV4ESzw" sourceNode="_aKJdgGDAEeq8BovXV4ESzw" targetNode="_aKATkGDAEeq8BovXV4ESzw">
5461 <target xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Donation"/>
5462 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//DS_for_Donation"/>
5463 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZC1IGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5464 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5465 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZC1IWDAEeq8BovXV4ESzw" showIcon="false">
5466 <labelFormat>italic</labelFormat>
5467 </beginLabelStyle>
5468 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZC1ImDAEeq8BovXV4ESzw" showIcon="false"/>
5469 </ownedStyle>
5470 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5471 </ownedDiagramElements>
5472 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZDcM2DAEeq8BovXV4ESzw" sourceNode="_aKKroGDAEeq8BovXV4ESzw" targetNode="_aKL5wGDAEeq8BovXV4ESzw">
5473 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Permanent_Expense"/>
5474 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Permanent_Expense"/>
5475 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZEDQGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5476 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5477 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZEDQWDAEeq8BovXV4ESzw" showIcon="false">
5478 <labelFormat>italic</labelFormat>
5479 </beginLabelStyle>
5480 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZEDQmDAEeq8BovXV4ESzw" showIcon="false"/>
5481 </ownedStyle>
5482 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5483 </ownedDiagramElements>
5484 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZEqUGDAEeq8BovXV4ESzw" sourceNode="_aKL5wGDAEeq8BovXV4ESzw" targetNode="_aAvp4GDAEeq8BovXV4ESzw">
5485 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Special_Expense_DS"/>
5486 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Special_Expense_DS"/>
5487 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZEqUWDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5488 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5489 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZEqUmDAEeq8BovXV4ESzw" showIcon="false">
5490 <labelFormat>italic</labelFormat>
5491 </beginLabelStyle>
5492 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZEqU2DAEeq8BovXV4ESzw" showIcon="false"/>
5493 </ownedStyle>
5494 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5495 </ownedDiagramElements>
5496 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZFRY2DAEeq8BovXV4ESzw" sourceNode="_aKNH4GDAEeq8BovXV4ESzw" targetNode="_aKL5wGDAEeq8BovXV4ESzw">
5497 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Interest_Expense"/>
5498 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Interest_Expense"/>
5499 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZF4cGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5500 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5501 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZF4cWDAEeq8BovXV4ESzw" showIcon="false">
5502 <labelFormat>italic</labelFormat>
5503 </beginLabelStyle>
5504 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZF4cmDAEeq8BovXV4ESzw" showIcon="false"/>
5505 </ownedStyle>
5506 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5507 </ownedDiagramElements>
5508 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZF4dmDAEeq8BovXV4ESzw" sourceNode="_aKOWAGDAEeq8BovXV4ESzw" targetNode="_aKL5wGDAEeq8BovXV4ESzw">
5509 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Private_Insurance_and_Plan"/>
5510 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Private_Insurance_and_Plan"/>
5511 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZGfgGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5512 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5513 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZGfgWDAEeq8BovXV4ESzw" showIcon="false">
5514 <labelFormat>italic</labelFormat>
5515 </beginLabelStyle>
5516 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZGfgmDAEeq8BovXV4ESzw" showIcon="false"/>
5517 </ownedStyle>
5518 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5519 </ownedDiagramElements>
5520 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZGfhmDAEeq8BovXV4ESzw" sourceNode="_aKPkIGDAEeq8BovXV4ESzw" targetNode="_aKL5wGDAEeq8BovXV4ESzw">
5521 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Health_and_Pension_Insurance"/>
5522 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Health_and_Pension_Insurance"/>
5523 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZHGkGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5524 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5525 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZHGkWDAEeq8BovXV4ESzw" showIcon="false">
5526 <labelFormat>italic</labelFormat>
5527 </beginLabelStyle>
5528 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZHGkmDAEeq8BovXV4ESzw" showIcon="false"/>
5529 </ownedStyle>
5530 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5531 </ownedDiagramElements>
5532 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZHGlmDAEeq8BovXV4ESzw" sourceNode="_aKQyQGDAEeq8BovXV4ESzw" targetNode="_aKL5wGDAEeq8BovXV4ESzw">
5533 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Donation"/>
5534 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Donation"/>
5535 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZHtoGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5536 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5537 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZHtoWDAEeq8BovXV4ESzw" showIcon="false">
5538 <labelFormat>italic</labelFormat>
5539 </beginLabelStyle>
5540 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZHtomDAEeq8BovXV4ESzw" showIcon="false"/>
5541 </ownedStyle>
5542 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5543 </ownedDiagramElements>
5544 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZHtpmDAEeq8BovXV4ESzw" sourceNode="_aKSAYWDAEeq8BovXV4ESzw" targetNode="_aKL5wGDAEeq8BovXV4ESzw">
5545 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Loss_Carryforward"/>
5546 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Loss_Carryforward"/>
5547 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZHtp2DAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5548 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5549 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZHtqGDAEeq8BovXV4ESzw" showIcon="false">
5550 <labelFormat>italic</labelFormat>
5551 </beginLabelStyle>
5552 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZHtqWDAEeq8BovXV4ESzw" showIcon="false"/>
5553 </ownedStyle>
5554 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5555 </ownedDiagramElements>
5556 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZIUs2DAEeq8BovXV4ESzw" sourceNode="_aKT1kGDAEeq8BovXV4ESzw" targetNode="_aAvp4GDAEeq8BovXV4ESzw">
5557 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Spousal_Expense_AC"/>
5558 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Spousal_Expense_AC"/>
5559 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZI7wGDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5560 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5561 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZI7wWDAEeq8BovXV4ESzw" showIcon="false">
5562 <labelFormat>italic</labelFormat>
5563 </beginLabelStyle>
5564 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZI7wmDAEeq8BovXV4ESzw" showIcon="false"/>
5565 </ownedStyle>
5566 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5567 </ownedDiagramElements>
5568 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZI7xmDAEeq8BovXV4ESzw" sourceNode="_aKUcoWDAEeq8BovXV4ESzw" targetNode="_aAvp4GDAEeq8BovXV4ESzw">
5569 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Extraordinary_Expense_CE"/>
5570 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Extraordinary_Expense_CE"/>
5571 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZI7x2DAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5572 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5573 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZI7yGDAEeq8BovXV4ESzw" showIcon="false">
5574 <labelFormat>italic</labelFormat>
5575 </beginLabelStyle>
5576 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZI7yWDAEeq8BovXV4ESzw" showIcon="false"/>
5577 </ownedStyle>
5578 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5579 </ownedDiagramElements>
5580 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZJi02DAEeq8BovXV4ESzw" sourceNode="_aKVqwWDAEeq8BovXV4ESzw" targetNode="_aKW44WDAEeq8BovXV4ESzw">
5581 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Travel_Expense_FD"/>
5582 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Travel_Expense_FD"/>
5583 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZJi1GDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5584 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5585 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZJi1WDAEeq8BovXV4ESzw" showIcon="false">
5586 <labelFormat>italic</labelFormat>
5587 </beginLabelStyle>
5588 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZJi1mDAEeq8BovXV4ESzw" showIcon="false"/>
5589 </ownedStyle>
5590 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5591 </ownedDiagramElements>
5592 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZKJ4GDAEeq8BovXV4ESzw" sourceNode="_aKW44WDAEeq8BovXV4ESzw" targetNode="_aAvp4GDAEeq8BovXV4ESzw">
5593 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Professional_Expense"/>
5594 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Professional_Expense"/>
5595 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZKJ4WDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5596 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5597 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZKJ4mDAEeq8BovXV4ESzw" showIcon="false">
5598 <labelFormat>italic</labelFormat>
5599 </beginLabelStyle>
5600 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZKJ42DAEeq8BovXV4ESzw" showIcon="false"/>
5601 </ownedStyle>
5602 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5603 </ownedDiagramElements>
5604 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZKJ52DAEeq8BovXV4ESzw" sourceNode="_aKYHAGDAEeq8BovXV4ESzw" targetNode="_aKW44WDAEeq8BovXV4ESzw">
5605 <target xmi:type="ecore:EClass" href="Taxation.ecore#//Miscellaneous_Expense_FO"/>
5606 <semanticElements xmi:type="ecore:EClass" href="Taxation.ecore#//Miscellaneous_Expense_FO"/>
5607 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZKw8GDAEeq8BovXV4ESzw" targetArrow="InputClosedArrow" routingStyle="tree">
5608 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5609 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZKw8WDAEeq8BovXV4ESzw" showIcon="false">
5610 <labelFormat>italic</labelFormat>
5611 </beginLabelStyle>
5612 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_aZKw8mDAEeq8BovXV4ESzw" showIcon="false"/>
5613 </ownedStyle>
5614 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5615 </ownedDiagramElements>
5616 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZLYAGDAEeq8BovXV4ESzw" sourceNode="_aArYcGDAEeq8BovXV4ESzw" targetNode="_aAubwGDAEeq8BovXV4ESzw" beginLabel="[0..*] taxPayer" endLabel="[0..*] addresses">
5617 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Physical_Person/addresses"/>
5618 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Physical_Person/addresses"/>
5619 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Address/taxPayer"/>
5620 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZMmIGDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5621 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5622 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZMmIWDAEeq8BovXV4ESzw" showIcon="false"/>
5623 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZMmImDAEeq8BovXV4ESzw" showIcon="false"/>
5624 </ownedStyle>
5625 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5626 </ownedDiagramElements>
5627 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZNNMGDAEeq8BovXV4ESzw" sourceNode="_aFaugGDAEeq8BovXV4ESzw" targetNode="_aFaugGDAEeq8BovXV4ESzw" beginLabel="[0..1] current_tax_card" endLabel="[0..1] previous">
5628 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/previous"/>
5629 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/current_tax_card"/>
5630 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/previous"/>
5631 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZNNMWDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5632 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5633 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZNNMmDAEeq8BovXV4ESzw" showIcon="false"/>
5634 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZNNM2DAEeq8BovXV4ESzw" showIcon="false"/>
5635 </ownedStyle>
5636 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5637 </ownedDiagramElements>
5638 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZN0QGDAEeq8BovXV4ESzw" sourceNode="_aAvp4GDAEeq8BovXV4ESzw" targetNode="_aAw4AGDAEeq8BovXV4ESzw" beginLabel="[0..*] expense" endLabel="[0..1] dependent">
5639 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/dependent"/>
5640 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/dependent"/>
5641 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/expense"/>
5642 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZN0QWDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5643 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5644 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZN0QmDAEeq8BovXV4ESzw" showIcon="false"/>
5645 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZN0Q2DAEeq8BovXV4ESzw" showIcon="false"/>
5646 </ownedStyle>
5647 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5648 </ownedDiagramElements>
5649 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZObUGDAEeq8BovXV4ESzw" sourceNode="_aAw4AGDAEeq8BovXV4ESzw" targetNode="_aA6pAGDAEeq8BovXV4ESzw" beginLabel="[0..1] dependent" endLabel="[0..1] from_agent">
5650 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/from_agent"/>
5651 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//FromAgent/dependent"/>
5652 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/from_agent"/>
5653 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZObUWDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5654 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5655 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZObUmDAEeq8BovXV4ESzw" showIcon="false"/>
5656 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZObU2DAEeq8BovXV4ESzw" showIcon="false"/>
5657 </ownedStyle>
5658 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5659 </ownedDiagramElements>
5660 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZObV2DAEeq8BovXV4ESzw" sourceNode="_aFaugGDAEeq8BovXV4ESzw" targetNode="_aHnt8WDAEeq8BovXV4ESzw" beginLabel="[0..1] taxation_Frame" endLabel="[0..*] income_Tax_Credit">
5661 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/income_Tax_Credit"/>
5662 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/income_Tax_Credit"/>
5663 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Tax_Credit/taxation_Frame"/>
5664 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZPCYGDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5665 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5666 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZPCYWDAEeq8BovXV4ESzw" showIcon="false"/>
5667 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZPCYmDAEeq8BovXV4ESzw" showIcon="false"/>
5668 </ownedStyle>
5669 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5670 </ownedDiagramElements>
5671 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZPCZmDAEeq8BovXV4ESzw" sourceNode="_aApjQGDAEeq8BovXV4ESzw" targetNode="_aAw4AGDAEeq8BovXV4ESzw" beginLabel="[0..1] responsible_person" endLabel="[0..6] dependents">
5672 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/dependents"/>
5673 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/dependents"/>
5674 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/responsible_person"/>
5675 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZPpc2DAEeq8BovXV4ESzw" description="_aZPpcGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5676 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZPpdGDAEeq8BovXV4ESzw" showIcon="false"/>
5677 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZPpdWDAEeq8BovXV4ESzw" showIcon="false"/>
5678 </ownedStyle>
5679 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5680 </ownedDiagramElements>
5681 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZQQgGDAEeq8BovXV4ESzw" sourceNode="_aAvp4GDAEeq8BovXV4ESzw" targetNode="_aA6pAGDAEeq8BovXV4ESzw" beginLabel="[0..1] expense" endLabel="[0..1] from_agent">
5682 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/from_agent"/>
5683 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//FromAgent/expense"/>
5684 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/from_agent"/>
5685 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZQQgWDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5686 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5687 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZQQgmDAEeq8BovXV4ESzw" showIcon="false"/>
5688 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZQQg2DAEeq8BovXV4ESzw" showIcon="false"/>
5689 </ownedStyle>
5690 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5691 </ownedDiagramElements>
5692 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZQQh2DAEeq8BovXV4ESzw" sourceNode="_aA73IWDAEeq8BovXV4ESzw" targetNode="_aFaugGDAEeq8BovXV4ESzw" beginLabel="[1..1] income" endLabel="[0..1] tax_card">
5693 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Income/tax_card"/>
5694 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Card/income"/>
5695 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income/tax_card"/>
5696 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZQ3kGDAEeq8BovXV4ESzw" description="_aZPpcGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5697 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZQ3kWDAEeq8BovXV4ESzw" showIcon="false"/>
5698 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZQ3kmDAEeq8BovXV4ESzw" showIcon="false"/>
5699 </ownedStyle>
5700 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5701 </ownedDiagramElements>
5702 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZReoGDAEeq8BovXV4ESzw" sourceNode="_aA73IWDAEeq8BovXV4ESzw" targetNode="_aHqxQGDAEeq8BovXV4ESzw" beginLabel="[1..1] income" endLabel="[12..12] details">
5703 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Income/details"/>
5704 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income/details"/>
5705 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Detail/income"/>
5706 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZRepGDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5707 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZRepWDAEeq8BovXV4ESzw" showIcon="false">
5708 <labelFormat>bold</labelFormat>
5709 </beginLabelStyle>
5710 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZRepmDAEeq8BovXV4ESzw" showIcon="false">
5711 <labelFormat>bold</labelFormat>
5712 </endLabelStyle>
5713 </ownedStyle>
5714 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5715 </ownedDiagramElements>
5716 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZSFs2DAEeq8BovXV4ESzw" sourceNode="_aAw4AGDAEeq8BovXV4ESzw" targetNode="_aAyGIGDAEeq8BovXV4ESzw" beginLabel="[1..1] person" endLabel="[0..1] allowances">
5717 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/allowances"/>
5718 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/allowances"/>
5719 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//External_Allowance/person"/>
5720 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZSswGDAEeq8BovXV4ESzw" description="_aZPpcGDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5721 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZSswWDAEeq8BovXV4ESzw" showIcon="false"/>
5722 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZSswmDAEeq8BovXV4ESzw" showIcon="false"/>
5723 </ownedStyle>
5724 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5725 </ownedDiagramElements>
5726 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZT64GDAEeq8BovXV4ESzw" sourceNode="_aAw4AGDAEeq8BovXV4ESzw" targetNode="_aAzUQGDAEeq8BovXV4ESzw" beginLabel="[0..*] children" endLabel="[0..1] household">
5727 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/household"/>
5728 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Household/children"/>
5729 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Dependent/household"/>
5730 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZUh82DAEeq8BovXV4ESzw" description="_aZUh8GDAEeq8BovXV4ESzw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5731 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZUh9GDAEeq8BovXV4ESzw" showIcon="false"/>
5732 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZUh9WDAEeq8BovXV4ESzw" showIcon="false"/>
5733 </ownedStyle>
5734 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5735 </ownedDiagramElements>
5736 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZVJAGDAEeq8BovXV4ESzw" sourceNode="_aApjQGDAEeq8BovXV4ESzw" targetNode="_aA6pAGDAEeq8BovXV4ESzw" beginLabel="[1..1] taxPayer" endLabel="[1..1] from_agent">
5737 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/from_agent"/>
5738 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/from_agent"/>
5739 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//FromAgent/taxPayer"/>
5740 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZVJAWDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5741 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZVJAmDAEeq8BovXV4ESzw" showIcon="false">
5742 <labelFormat>bold</labelFormat>
5743 </beginLabelStyle>
5744 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZVwEGDAEeq8BovXV4ESzw" showIcon="false">
5745 <labelFormat>bold</labelFormat>
5746 </endLabelStyle>
5747 </ownedStyle>
5748 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5749 </ownedDiagramElements>
5750 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZVwFGDAEeq8BovXV4ESzw" sourceNode="_aArYcGDAEeq8BovXV4ESzw" targetNode="_aAvp4GDAEeq8BovXV4ESzw" beginLabel="[0..1] beneficiary" endLabel="[0..*] expenses">
5751 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Physical_Person/expenses"/>
5752 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/beneficiary"/>
5753 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Physical_Person/expenses"/>
5754 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZWXIGDAEeq8BovXV4ESzw" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
5755 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
5756 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZWXIWDAEeq8BovXV4ESzw" showIcon="false"/>
5757 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZWXImDAEeq8BovXV4ESzw" showIcon="false"/>
5758 </ownedStyle>
5759 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5760 </ownedDiagramElements>
5761 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZW-MGDAEeq8BovXV4ESzw" sourceNode="_aApjQGDAEeq8BovXV4ESzw" targetNode="_aA73IWDAEeq8BovXV4ESzw" beginLabel="[1..1] taxPayer" endLabel="[1..*] incomes">
5762 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/incomes"/>
5763 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/incomes"/>
5764 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income/taxPayer"/>
5765 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZW-MWDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5766 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZW-MmDAEeq8BovXV4ESzw" showIcon="false">
5767 <labelFormat>bold</labelFormat>
5768 </beginLabelStyle>
5769 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZW-M2DAEeq8BovXV4ESzw" showIcon="false">
5770 <labelFormat>bold</labelFormat>
5771 </endLabelStyle>
5772 </ownedStyle>
5773 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5774 </ownedDiagramElements>
5775 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZXlQ2DAEeq8BovXV4ESzw" sourceNode="_aAzUQGDAEeq8BovXV4ESzw" targetNode="_aA1JcGDAEeq8BovXV4ESzw" beginLabel="[1..1] household" endLabel="[1..1] parents">
5776 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Household/parents"/>
5777 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/household"/>
5778 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Household/parents"/>
5779 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZYMUGDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5780 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZYMUWDAEeq8BovXV4ESzw" showIcon="false">
5781 <labelFormat>bold</labelFormat>
5782 </beginLabelStyle>
5783 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZYMUmDAEeq8BovXV4ESzw" showIcon="false">
5784 <labelFormat>bold</labelFormat>
5785 </endLabelStyle>
5786 </ownedStyle>
5787 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5788 </ownedDiagramElements>
5789 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZYzYGDAEeq8BovXV4ESzw" sourceNode="_aA1JcGDAEeq8BovXV4ESzw" targetNode="_aA4MwGDAEeq8BovXV4ESzw" beginLabel="[1..1] union_record" endLabel="[1..*] properties">
5790 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/properties"/>
5791 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Legal_Union_Record/properties"/>
5792 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Property/union_record"/>
5793 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZYzYWDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5794 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZYzYmDAEeq8BovXV4ESzw" showIcon="false">
5795 <labelFormat>bold</labelFormat>
5796 </beginLabelStyle>
5797 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZYzY2DAEeq8BovXV4ESzw" showIcon="false">
5798 <labelFormat>bold</labelFormat>
5799 </endLabelStyle>
5800 </ownedStyle>
5801 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5802 </ownedDiagramElements>
5803 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZZacGDAEeq8BovXV4ESzw" sourceNode="_aApjQGDAEeq8BovXV4ESzw" targetNode="_aHr_YWDAEeq8BovXV4ESzw" beginLabel="[1..1] taxPayer" endLabel="[1..1] from_law">
5804 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/from_law"/>
5805 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Tax_Payer/from_law"/>
5806 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//FromLaw/taxPayer"/>
5807 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZaBgGDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5808 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZaBgWDAEeq8BovXV4ESzw" showIcon="false">
5809 <labelFormat>bold</labelFormat>
5810 </beginLabelStyle>
5811 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZaBgmDAEeq8BovXV4ESzw" showIcon="false">
5812 <labelFormat>bold</labelFormat>
5813 </endLabelStyle>
5814 </ownedStyle>
5815 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5816 </ownedDiagramElements>
5817 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZaBhmDAEeq8BovXV4ESzw" sourceNode="_aAvp4GDAEeq8BovXV4ESzw" targetNode="_aA73IWDAEeq8BovXV4ESzw" beginLabel="[0..*] expenses" endLabel="[1..1] income">
5818 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/income"/>
5819 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income/expenses"/>
5820 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Expense/income"/>
5821 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZaok2DAEeq8BovXV4ESzw" description="_aZaokGDAEeq8BovXV4ESzw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5822 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZaolGDAEeq8BovXV4ESzw" showIcon="false">
5823 <labelFormat>bold</labelFormat>
5824 </beginLabelStyle>
5825 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZaolWDAEeq8BovXV4ESzw" showIcon="false">
5826 <labelFormat>bold</labelFormat>
5827 </endLabelStyle>
5828 </ownedStyle>
5829 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5830 </ownedDiagramElements>
5831 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_aZbPo2DAEeq8BovXV4ESzw" sourceNode="_aA73IWDAEeq8BovXV4ESzw" targetNode="_aDFzQGDAEeq8BovXV4ESzw" beginLabel="[1..1] income" endLabel="[1..1] income_type">
5832 <target xmi:type="ecore:EReference" href="Taxation.ecore#//Income/income_type"/>
5833 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income_Type/income"/>
5834 <semanticElements xmi:type="ecore:EReference" href="Taxation.ecore#//Income/income_type"/>
5835 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_aZb2sGDAEeq8BovXV4ESzw" description="_aZReoWDAEeq8BovXV4ESzw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5836 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_aZb2sWDAEeq8BovXV4ESzw" showIcon="false">
5837 <labelFormat>bold</labelFormat>
5838 </beginLabelStyle>
5839 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_aZb2smDAEeq8BovXV4ESzw" showIcon="false">
5840 <labelFormat>bold</labelFormat>
5841 </endLabelStyle>
5842 </ownedStyle>
5843 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
5844 </ownedDiagramElements>
5845 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
5846 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_ZEKs4GDAEeq8BovXV4ESzw"/>
5847 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
5848 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
5849 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
5850 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
5851 <target xmi:type="ecore:EPackage" href="Taxation.ecore#/"/>
5852 </diagram:DSemanticDiagram>
5853</xmi:XMI>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.ecore b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.ecore
new file mode 100644
index 00000000..a1b9acd5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.ecore
@@ -0,0 +1,651 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Taxation" nsURI="http:///TaxCard.ecore" nsPrefix="TaxCard">
4 <eAnnotations source="http://www.eclipse.org/OCL/Import">
5 <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EEnum" name="Grantor">
8 <eLiterals name="WWW" literal="WWW"/>
9 <eLiterals name="Employer" value="1" literal="Employer"/>
10 <eLiterals name="MMM" value="2" literal="MMM"/>
11 <eLiterals name="UUU" value="3" literal="UUU"/>
12 <eLiterals name="YYY" value="4" literal="YYY"/>
13 <eLiterals name="OOO" value="5" literal="OOO"/>
14 </eClassifiers>
15 <eClassifiers xsi:type="ecore:EClass" name="Constants" abstract="true">
16 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"
17 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
18 defaultValueLiteral="3480.0"/>
19 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"
20 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
21 defaultValueLiteral="3600.0"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_SALARY" lowerBound="1"
23 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1500.0"/>
24 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"
25 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
26 defaultValueLiteral="4500.0"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"
28 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
29 defaultValueLiteral="20.0"/>
30 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"
31 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
32 defaultValueLiteral="120.0"/>
33 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"
34 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
35 defaultValueLiteral="0.0"/>
36 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"
37 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
38 defaultValueLiteral="24000.0"/>
39 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
40 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
41 defaultValueLiteral="99.0"/>
42 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
43 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
44 defaultValueLiteral="30.0"/>
45 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
46 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
47 defaultValueLiteral="4.0"/>
48 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_DAILY" lowerBound="1"
49 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="2.0"/>
50 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_MONTHLY"
51 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
52 defaultValueLiteral="62.0"/>
53 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_YEARLY" lowerBound="1"
54 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="750.0"/>
55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_DAILY" lowerBound="1"
56 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
57 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_MONTHLY"
58 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
59 defaultValueLiteral="25.0"/>
60 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_YEARLY" lowerBound="1"
61 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="30.0"/>
62 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_DAILY" lowerBound="1"
63 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
64 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_MONTHLY"
65 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
66 defaultValueLiteral="25.0"/>
67 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_YEARLY" lowerBound="1"
68 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
69 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"
70 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
71 defaultValueLiteral="99.0"/>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"
73 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
75 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
76 <eStructuralFeatures xsi:type="ecore:EAttribute" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
77 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
78 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"
79 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
80 </eClassifiers>
81 <eClassifiers xsi:type="ecore:EEnum" name="Disability_Types">
82 <eLiterals name="beug"/>
83 <eLiterals name="NONE" value="1"/>
84 <eLiterals name="A" value="2" literal="A"/>
85 <eLiterals name="B" value="3" literal="B"/>
86 <eLiterals name="C" value="4" literal="C"/>
87 <eLiterals name="D" value="5" literal="D"/>
88 <eLiterals name="E" value="6" literal="E"/>
89 <eLiterals name="OTHER" value="7"/>
90 </eClassifiers>
91 <eClassifiers xsi:type="ecore:EEnum" name="Country">
92 <eLiterals name="ZZ" literal="ZZ"/>
93 <eLiterals name="FF" value="1" literal="FF"/>
94 <eLiterals name="BB" value="2" literal="BB"/>
95 <eLiterals name="DD" value="3" literal="DD"/>
96 <eLiterals name="NN" value="4" literal="NN"/>
97 <eLiterals name="OTHER" value="5" literal="OTHER"/>
98 </eClassifiers>
99 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Card_Type">
100 <eLiterals name="Principal" literal="Principal"/>
101 <eLiterals name="Additional" value="1" literal="Additional"/>
102 </eClassifiers>
103 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Office">
104 <eLiterals name="RTS_2" literal="RTS_2"/>
105 <eLiterals name="RTS_3" value="1" literal="RTS_3"/>
106 <eLiterals name="RTS_4" value="2" literal="RTS_4"/>
107 <eLiterals name="RTS_5" value="3" literal="RTS_5"/>
108 </eClassifiers>
109 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Class_Category">
110 <eLiterals name="One" literal="One"/>
111 <eLiterals name="One_A" value="1" literal="One_A"/>
112 <eLiterals name="Two" value="2" literal="Two"/>
113 </eClassifiers>
114 <eClassifiers xsi:type="ecore:EEnum" name="Job_Activity">
115 <eLiterals name="Salary" literal="Salary"/>
116 <eLiterals name="Pension" value="1" literal="Pension"/>
117 <eLiterals name="Annuity" value="2" literal="Annuity"/>
118 </eClassifiers>
119 <eClassifiers xsi:type="ecore:EEnum" name="Town">
120 <eLiterals name="LL" literal="LL"/>
121 <eLiterals name="BB" value="1" literal="BB"/>
122 <eLiterals name="SS" value="2" literal="SS"/>
123 <eLiterals name="TT" value="3" literal="TT"/>
124 <eLiterals name="Other" value="4" literal="Other"/>
125 </eClassifiers>
126 <eClassifiers xsi:type="ecore:EEnum" name="Type_of_Rate">
127 <eLiterals name="REGULAR" literal="REGULAR"/>
128 <eLiterals name="REAL_COST" value="1" literal="REAL_COST"/>
129 </eClassifiers>
130 <eClassifiers xsi:type="ecore:EEnum" name="CE_Type">
131 <eLiterals name="INALIDITY_AND_INFIRMITY" literal="INALIDITY_AND_INFIRMITY"/>
132 <eLiterals name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"
133 value="1" literal="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
134 <eLiterals name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" value="2" literal="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
135 </eClassifiers>
136 <eClassifiers xsi:type="ecore:EEnum" name="Expense_Purpose">
137 <eLiterals name="HOUSE_CARE" literal="HOUSE_CARE"/>
138 <eLiterals name="CHILD_CARE" value="1" literal="CHILD_CARE"/>
139 <eLiterals name="DEPENDENCE_CARE" value="2" literal="DEPENDENCE_CARE"/>
140 <eLiterals name="OTHER" value="3" literal="OTHER"/>
141 <eLiterals name="ALIMONY" value="4"/>
142 <eLiterals name="RECURRENT_DEPT" value="5"/>
143 </eClassifiers>
144 <eClassifiers xsi:type="ecore:EEnum" name="Dependent_Type">
145 <eLiterals name="CHILD" literal="CHILD"/>
146 <eLiterals name="SPOUSE" value="1" literal="SPOUSE"/>
147 <eLiterals name="RELATIVE" value="2" literal="RELATIVE"/>
148 <eLiterals name="OTHER_FAMILY_MEMBER" value="3" literal="OTHER_FAMILY_MEMBER"/>
149 <eLiterals name="NOT_OWN_CHILD" value="4"/>
150 </eClassifiers>
151 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax">
152 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
153 eType="#//Tax_Payer"/>
154 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_amount" lowerBound="1"
155 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
157 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id6" ordered="false" lowerBound="1"
159 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
160 </eClassifiers>
161 <eClassifiers xsi:type="ecore:EClass" name="Tax_Payer" abstract="true" eSuperTypes="#//Physical_Person #//Tax_Case">
162 <eAnnotations source="duplicates">
163 <contents xsi:type="ecore:EReference" name="expenses" ordered="false" upperBound="-1"
164 eType="#//Expense" containment="true">
165 <eAnnotations source="redefines" references="#//Physical_Person/expenses"/>
166 </contents>
167 </eAnnotations>
168 <eStructuralFeatures xsi:type="ecore:EReference" name="dependents" ordered="false"
169 upperBound="6" eType="#//Dependent" containment="true" eOpposite="#//Dependent/responsible_person"/>
170 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" lowerBound="1"
171 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/taxPayer"/>
172 <eStructuralFeatures xsi:type="ecore:EReference" name="incomes" ordered="false"
173 lowerBound="1" upperBound="-1" eType="#//Income" containment="true" eOpposite="#//Income/taxPayer"/>
174 <eStructuralFeatures xsi:type="ecore:EReference" name="from_law" lowerBound="1"
175 eType="#//FromLaw" containment="true" eOpposite="#//FromLaw/taxPayer"/>
176 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxesDue" ordered="false"
177 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
178 </eClassifiers>
179 <eClassifiers xsi:type="ecore:EClass" name="Physical_Person">
180 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assisting_spouse" lowerBound="1"
181 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" derived="true"/>
182 <eStructuralFeatures xsi:type="ecore:EAttribute" name="SSNo" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
183 iD="true"/>
184 <eStructuralFeatures xsi:type="ecore:EReference" name="addresses" ordered="false"
185 upperBound="-1" eType="#//Address" eOpposite="#//Address/taxPayer"/>
186 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_year" ordered="false"
187 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
188 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_percentage"
189 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
190 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_type" ordered="false"
191 unique="false" lowerBound="1" eType="#//Disability_Types"/>
192 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_affiliated_personnaly_to_social_security"
193 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
194 derived="true"/>
195 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_month" ordered="false"
196 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
197 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_day" ordered="false"
198 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
199 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
200 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/beneficiary"/>
201 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_widower" ordered="false"
202 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
203 </eClassifiers>
204 <eClassifiers xsi:type="ecore:EClass" name="Address">
205 <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" lowerBound="1"
206 eType="#//Country" defaultValueLiteral="ZZ"/>
207 <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" lowerBound="1"
208 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
209 <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" lowerBound="1"
210 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
211 <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
212 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id2" ordered="false" lowerBound="1"
213 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
214 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
215 upperBound="-1" eType="#//Physical_Person" eOpposite="#//Physical_Person/addresses"/>
216 </eClassifiers>
217 <eClassifiers xsi:type="ecore:EClass" name="Expense">
218 <eStructuralFeatures xsi:type="ecore:EAttribute" name="declared_amount" lowerBound="1"
219 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
220 <eStructuralFeatures xsi:type="ecore:EAttribute" name="expense_purpose" lowerBound="1"
221 eType="#//Expense_Purpose" defaultValueLiteral="OTHER"/>
222 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" eType="#//Dependent"
223 eOpposite="#//Dependent/expense"/>
224 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
225 eType="#//FromAgent" eOpposite="#//FromAgent/expense"/>
226 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
227 eType="#//Income" eOpposite="#//Income/expenses"/>
228 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id4" ordered="false" lowerBound="1"
229 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
230 <eStructuralFeatures xsi:type="ecore:EReference" name="beneficiary" ordered="false"
231 eType="#//Physical_Person" eOpposite="#//Physical_Person/expenses"/>
232 </eClassifiers>
233 <eClassifiers xsi:type="ecore:EClass" name="Dependent" eSuperTypes="#//Physical_Person">
234 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dependent_type" lowerBound="1"
235 eType="#//Dependent_Type"/>
236 <eStructuralFeatures xsi:type="ecore:EReference" name="responsible_person" eType="#//Tax_Payer"
237 eOpposite="#//Tax_Payer/dependents"/>
238 <eStructuralFeatures xsi:type="ecore:EAttribute" name="continued_studies" lowerBound="1"
239 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
240 <eStructuralFeatures xsi:type="ecore:EReference" name="allowances" ordered="false"
241 eType="#//External_Allowance" containment="true" eOpposite="#//External_Allowance/person"/>
242 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
243 eType="#//Household" eOpposite="#//Household/children"/>
244 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
245 eType="#//FromAgent" eOpposite="#//FromAgent/dependent"/>
246 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
247 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/dependent"/>
248 </eClassifiers>
249 <eClassifiers xsi:type="ecore:EClass" name="External_Allowance">
250 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
251 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
252 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantor" lowerBound="1"
253 eType="#//Grantor"/>
254 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
255 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
256 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ending_year" ordered="false"
257 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
258 <eStructuralFeatures xsi:type="ecore:EReference" name="reciver" ordered="false"
259 lowerBound="1" eType="#//Physical_Person"/>
260 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
261 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
262 <eStructuralFeatures xsi:type="ecore:EReference" name="person" ordered="false"
263 lowerBound="1" eType="#//Dependent" eOpposite="#//Dependent/allowances"/>
264 </eClassifiers>
265 <eClassifiers xsi:type="ecore:EClass" name="Household" eSuperTypes="#//Tax_Case">
266 <eStructuralFeatures xsi:type="ecore:EReference" name="parents" ordered="false"
267 lowerBound="1" eType="#//Legal_Union_Record" containment="true" eOpposite="#//Legal_Union_Record/household"/>
268 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id1" ordered="false" lowerBound="1"
269 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
270 <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
271 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/household"/>
272 </eClassifiers>
273 <eClassifiers xsi:type="ecore:EClass" name="Legal_Union_Record" abstract="true">
274 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" lowerBound="1"
275 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_year" lowerBound="1"
277 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
278 <eStructuralFeatures xsi:type="ecore:EAttribute" name="separation_cause" ordered="false"
279 lowerBound="1" eType="#//Separation_Causes"/>
280 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_A" ordered="false"
281 lowerBound="1" eType="#//Physical_Person" containment="true">
282 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
283 <details key="body" value="legal_union_A"/>
284 </eAnnotations>
285 </eStructuralFeatures>
286 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_B" ordered="false"
287 lowerBound="1" upperBound="-1" eType="#//Physical_Person" containment="true">
288 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
289 <details key="body" value="legal_union_B"/>
290 </eAnnotations>
291 </eStructuralFeatures>
292 <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
293 lowerBound="1" upperBound="-1" eType="#//Tax_Property" containment="true"
294 eOpposite="#//Tax_Property/union_record"/>
295 <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutual_agreement" ordered="false"
296 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
297 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id9" ordered="false" lowerBound="1"
298 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
299 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
300 lowerBound="1" eType="#//Household" eOpposite="#//Household/parents"/>
301 </eClassifiers>
302 <eClassifiers xsi:type="ecore:EEnum" name="Separation_Causes">
303 <eLiterals name="NONE"/>
304 <eLiterals name="DIVORCE" value="1"/>
305 <eLiterals name="SEPARATION_DE_FAIT" value="2"/>
306 <eLiterals name="SEPARATION_BY_COURT" value="3"/>
307 </eClassifiers>
308 <eClassifiers xsi:type="ecore:EClass" name="Tax_Property">
309 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
310 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
311 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id10" ordered="false" lowerBound="1"
312 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
313 <eStructuralFeatures xsi:type="ecore:EReference" name="union_record" ordered="false"
314 lowerBound="1" eType="#//Legal_Union_Record" eOpposite="#//Legal_Union_Record/properties"/>
315 </eClassifiers>
316 <eClassifiers xsi:type="ecore:EClass" name="Tax_Case" abstract="true" interface="true"/>
317 <eClassifiers xsi:type="ecore:EClass" name="FromAgent">
318 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
319 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_agent"/>
320 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"
321 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
322 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
323 eType="#//Expense" eOpposite="#//Expense/from_agent"/>
324 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_debt" ordered="false"
325 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
326 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" ordered="false"
327 eType="#//Dependent" eOpposite="#//Dependent/from_agent"/>
328 </eClassifiers>
329 <eClassifiers xsi:type="ecore:EClass" name="Income" abstract="true">
330 <eStructuralFeatures xsi:type="ecore:EAttribute" name="income_amount" ordered="false"
331 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
332 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
333 <details key="derivation" value="let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in&#xA;non_null_amounts->collect(amount)->min()"/>
334 </eAnnotations>
335 </eStructuralFeatures>
336 <eStructuralFeatures xsi:type="ecore:EReference" name="income_type" lowerBound="1"
337 eType="#//Income_Type" containment="true" eOpposite="#//Income_Type/income"/>
338 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_within_taxation_year"
339 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
340 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_of_contract"
341 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
342 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_date_within_taxation_year"
343 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
344 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_card" eType="#//Tax_Card"
345 containment="true" eOpposite="#//Tax_Card/income"/>
346 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_liability" lowerBound="1"
347 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
348 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
349 lowerBound="1" eType="#//Tax_Payer" eOpposite="#//Tax_Payer/incomes"/>
350 <eStructuralFeatures xsi:type="ecore:EReference" name="details" lowerBound="12"
351 upperBound="12" eType="#//Income_Detail" containment="true" eOpposite="#//Income_Detail/income"/>
352 <eStructuralFeatures xsi:type="ecore:EAttribute" name="num" ordered="false" lowerBound="1"
353 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" iD="true"/>
354 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
355 upperBound="-1" eType="#//Expense" containment="true" eOpposite="#//Expense/income"/>
356 </eClassifiers>
357 <eClassifiers xsi:type="ecore:EClass" name="Income_Type" abstract="true">
358 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subjectToWithholdingTax"
359 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
360 derived="true">
361 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
362 <details key="derivation" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.income.tax_card->notEmpty()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
363 </eAnnotations>
364 </eStructuralFeatures>
365 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id8" ordered="false" lowerBound="1"
366 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
367 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
368 eType="#//Income" eOpposite="#//Income/income_type"/>
369 </eClassifiers>
370 <eClassifiers xsi:type="ecore:EClass" name="Tax_Card">
371 <eStructuralFeatures xsi:type="ecore:EAttribute" name="card_identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
372 iD="true"/>
373 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_card_type" lowerBound="1"
374 eType="#//Tax_Card_Type" derived="true">
375 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
376 <details key="derivation" value="if(self.income.taxPayer.incomes->size()=1) then &#xA;Tax_Card_Type::Principal&#xA;&#x9;else&#xA;&#x9;&#x9;let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in&#xA;&#x9;&#x9;let bigest_income:Income= all_incomes->first() in&#xA;&#x9;&#x9;&#x9; if(bigest_income=self.income) then&#xA;&#x9;&#x9;&#x9; &#x9; Tax_Card_Type::Principal&#xA;&#x9;&#x9;&#x9; else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;Tax_Card_Type::Additional&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
377 </eAnnotations>
378 </eStructuralFeatures>
379 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_office" lowerBound="1"
380 eType="#//Tax_Office"/>
381 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_from_date" ordered="false"
382 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
383 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_until_date" ordered="false"
384 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
385 <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentage_of_witholding"
386 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
387 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_name_surname"
388 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
389 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_partner_name_surname"
390 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
391 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_payers_address" eType="#//Address"/>
392 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_Employer_SSNo" ordered="false"
393 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
394 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_employers_name" ordered="false"
395 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
396 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_activity_type" lowerBound="1"
397 eType="#//Job_Activity"/>
398 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_place_of_work" lowerBound="1"
399 eType="#//Town"/>
400 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_daily" ordered="false"
401 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
402 defaultValueLiteral="0.0"/>
403 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_monthly" ordered="false"
404 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
405 defaultValueLiteral="0.0"/>
406 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_daily" unique="false"
407 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
408 defaultValueLiteral="0.0"/>
409 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_monthly" unique="false"
410 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
411 defaultValueLiteral="0.0"/>
412 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_yearly" unique="false"
413 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
414 defaultValueLiteral="0.0"/>
415 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_daily" unique="false"
416 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
417 defaultValueLiteral="0.0"/>
418 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_monthly" unique="false"
419 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
420 defaultValueLiteral="0.0"/>
421 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_yearly" unique="false"
422 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
423 defaultValueLiteral="0.0"/>
424 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_daily" unique="false"
425 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
426 defaultValueLiteral="0.0"/>
427 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_monthly" lowerBound="1"
428 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0"/>
429 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_daily" unique="false"
430 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
431 defaultValueLiteral="0.0"/>
432 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_monthly" unique="false"
433 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
434 defaultValueLiteral="0.0"/>
435 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_yearly" unique="false"
436 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
437 defaultValueLiteral="0.0"/>
438 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_daily" unique="false"
439 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
440 defaultValueLiteral="0.0"/>
441 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_monthly" unique="false"
442 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
443 defaultValueLiteral="0.0"/>
444 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_daily" unique="false"
445 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
446 defaultValueLiteral="0.0"/>
447 <eStructuralFeatures xsi:type="ecore:EAttribute" name="validity" lowerBound="1"
448 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
449 <eStructuralFeatures xsi:type="ecore:EReference" name="income_Tax_Credit" ordered="false"
450 upperBound="-1" eType="#//Income_Tax_Credit" eOpposite="#//Income_Tax_Credit/taxation_Frame"/>
451 <eStructuralFeatures xsi:type="ecore:EReference" name="previous" eType="#//Tax_Card"
452 eOpposite="#//Tax_Card/current_tax_card"/>
453 <eStructuralFeatures xsi:type="ecore:EReference" name="current_tax_card" eType="#//Tax_Card"
454 eOpposite="#//Tax_Card/previous"/>
455 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_yearly" ordered="false"
456 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
457 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Alimony_yearly"
458 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
459 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Debt_yearly"
460 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
461 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
462 eType="#//Income" eOpposite="#//Income/tax_card"/>
463 </eClassifiers>
464 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax_Credit">
465 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantedBy" lowerBound="1"
466 eType="#//Grantor"/>
467 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" eType="#//Tax_Payer"/>
468 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
469 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
470 <eStructuralFeatures xsi:type="ecore:EAttribute" name="yearly" lowerBound="1"
471 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
472 <eStructuralFeatures xsi:type="ecore:EAttribute" name="monthly" lowerBound="1"
473 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="25.0"/>
474 <eStructuralFeatures xsi:type="ecore:EAttribute" name="daily" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
475 defaultValueLiteral="1.0"/>
476 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id7" ordered="false" lowerBound="1"
477 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
478 <eStructuralFeatures xsi:type="ecore:EReference" name="taxation_Frame" eType="#//Tax_Card"
479 eOpposite="#//Tax_Card/income_Tax_Credit"/>
480 </eClassifiers>
481 <eClassifiers xsi:type="ecore:EClass" name="Income_Detail">
482 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
483 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
484 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_worked" lowerBound="1"
485 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
486 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance" lowerBound="1"
487 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
488 <eStructuralFeatures xsi:type="ecore:EAttribute" name="worked_days" lowerBound="1"
489 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
490 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_CNS" ordered="false"
491 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
492 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
493 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
494 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
495 eType="#//Income" eOpposite="#//Income/details"/>
496 </eClassifiers>
497 <eClassifiers xsi:type="ecore:EClass" name="FromLaw">
498 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" lowerBound="1"
499 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
500 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
501 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_law"/>
502 </eClassifiers>
503 <eClassifiers xsi:type="ecore:EClass" name="Fiscal_Address" eSuperTypes="#//Address"/>
504 <eClassifiers xsi:type="ecore:EClass" name="Habitual_Address" eSuperTypes="#//Address"/>
505 <eClassifiers xsi:type="ecore:EClass" name="Marriage_Record" eSuperTypes="#//Legal_Union_Record"/>
506 <eClassifiers xsi:type="ecore:EClass" name="Non_Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
507 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assimilated_to_resident"
508 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
509 defaultValueLiteral="false"/>
510 </eClassifiers>
511 <eClassifiers xsi:type="ecore:EClass" name="Partnership_Record" eSuperTypes="#//Legal_Union_Record"/>
512 <eClassifiers xsi:type="ecore:EClass" name="Resident_Tax_Payer" eSuperTypes="#//Tax_Payer"/>
513 <eClassifiers xsi:type="ecore:EClass" name="Trade_and_Business_Income" eSuperTypes="#//Income_Type"/>
514 <eClassifiers xsi:type="ecore:EClass" name="Agriculture_and_Forestry_Income" eSuperTypes="#//Income_Type"/>
515 <eClassifiers xsi:type="ecore:EClass" name="Pensions_and_Annuities_Income" eSuperTypes="#//Income_Type">
516 <eStructuralFeatures xsi:type="ecore:EAttribute" name="occasional_payement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
517 defaultValueLiteral="false"/>
518 </eClassifiers>
519 <eClassifiers xsi:type="ecore:EClass" name="Capital_and_Investments_Income" eSuperTypes="#//Income_Type"/>
520 <eClassifiers xsi:type="ecore:EClass" name="Employment_Income" eSuperTypes="#//Income_Type"/>
521 <eClassifiers xsi:type="ecore:EClass" name="Rentals_and_Leases_Income" eSuperTypes="#//Income_Type">
522 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_periodic" lowerBound="1"
523 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="true"/>
524 </eClassifiers>
525 <eClassifiers xsi:type="ecore:EClass" name="Foreign_Income" eSuperTypes="#//Income"/>
526 <eClassifiers xsi:type="ecore:EClass" name="Local_Income" eSuperTypes="#//Income"/>
527 <eClassifiers xsi:type="ecore:EClass" name="CIM" eSuperTypes="#//Income_Tax_Credit"/>
528 <eClassifiers xsi:type="ecore:EClass" name="CIP" eSuperTypes="#//Income_Tax_Credit"/>
529 <eClassifiers xsi:type="ecore:EClass" name="CIS" eSuperTypes="#//Income_Tax_Credit"/>
530 <eClassifiers xsi:type="ecore:EClass" name="FD" eSuperTypes="#//Professional_Expenses_Deduction">
531 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance_declared_in_january"
532 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
533 <eStructuralFeatures xsi:type="ecore:EAttribute" name="calculated_distance" lowerBound="1"
534 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" derived="true"/>
535 </eClassifiers>
536 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expenses_Deduction"/>
537 <eClassifiers xsi:type="ecore:EClass" name="FO" eSuperTypes="#//Professional_Expenses_Deduction">
538 <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate_type_for_FO" lowerBound="1"
539 eType="#//Type_of_Rate" derived="true"/>
540 </eClassifiers>
541 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Permanent_Expense" eSuperTypes="#//DS">
542 <eStructuralFeatures xsi:type="ecore:EAttribute" name="permanent_expense_category"
543 lowerBound="1" eType="#//Category_of_Permanent_Expense"/>
544 </eClassifiers>
545 <eClassifiers xsi:type="ecore:EClass" name="DS">
546 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount"
547 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
548 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id3" ordered="false" lowerBound="1"
549 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
550 </eClassifiers>
551 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Permanent_Expense">
552 <eLiterals name="MISCELLANEOUS_DEBT" literal="MISCELLANEOUS_DEBT"/>
553 <eLiterals name="ALIMONY" value="1" literal="ALIMONY"/>
554 </eClassifiers>
555 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Interest_Expense" eSuperTypes="#//DS"/>
556 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Health_and_Pension_Insurance"
557 eSuperTypes="#//DS">
558 <eStructuralFeatures xsi:type="ecore:EAttribute" name="insurance_category" lowerBound="1"
559 eType="#//Category_of_Health_and_Pension_Insurances"/>
560 </eClassifiers>
561 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Health_and_Pension_Insurances">
562 <eLiterals name="MANDATORY_HEALTH_AND_PENSION_INSURANCE" literal="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
563 <eLiterals name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" value="1" literal="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
564 <eLiterals name="CONTINUED_HEALTH_AND_PENSION_INSURANCE" value="2" literal="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
565 </eClassifiers>
566 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Private_Insurance_and_Plan" eSuperTypes="#//DS">
567 <eStructuralFeatures xsi:type="ecore:EAttribute" name="private_insurance_and_plan_category"
568 lowerBound="1" eType="#//Category_of_Private_Insurance_and_Plan"/>
569 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increase_for_life_insurance"
570 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
571 derived="true"/>
572 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_private_insurance"
573 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
574 derived="true"/>
575 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_old_age_pension_plan"
576 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
577 derived="true"/>
578 </eClassifiers>
579 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Private_Insurance_and_Plan">
580 <eLiterals name="PRIVATE_INSURANCE" literal="PRIVATE_INSURANCE"/>
581 <eLiterals name="PRIVATE_LIFE_INSURANCE" value="1" literal="PRIVATE_LIFE_INSURANCE"/>
582 <eLiterals name="COMPANY_MEMBERS_PRIVATE_INSURANCE" value="2" literal="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
583 <eLiterals name="HOUSING_SAVING_PLAN" value="3" literal="HOUSING_SAVING_PLAN"/>
584 <eLiterals name="OLD_AGE_PENSION_PLAN" value="4" literal="OLD_AGE_PENSION_PLAN"/>
585 </eClassifiers>
586 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Loss_Carryforward" eSuperTypes="#//DS"/>
587 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Donation" eSuperTypes="#//DS"/>
588 <eClassifiers xsi:type="ecore:EClass" name="Permanent_Expense" eSuperTypes="#//Special_Expense_DS">
589 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
590 eType="#//Category_of_Permanent_Expense"/>
591 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_for_deduction"
592 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
593 defaultValueLiteral="false" derived="true"/>
594 </eClassifiers>
595 <eClassifiers xsi:type="ecore:EClass" name="Special_Expense_DS" eSuperTypes="#//Expense"/>
596 <eClassifiers xsi:type="ecore:EClass" name="Interest_Expense" eSuperTypes="#//Special_Expense_DS"/>
597 <eClassifiers xsi:type="ecore:EClass" name="Private_Insurance_and_Plan" eSuperTypes="#//Special_Expense_DS">
598 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
599 eType="#//Category_of_Private_Insurance_and_Plan"/>
600 <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration_of_contract" lowerBound="1"
601 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
602 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_private_insurance_and_plan_eligible_for_deduction"
603 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
604 defaultValueLiteral="false" derived="true"/>
605 </eClassifiers>
606 <eClassifiers xsi:type="ecore:EClass" name="Health_and_Pension_Insurance" eSuperTypes="#//Special_Expense_DS">
607 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
608 eType="#//Category_of_Health_and_Pension_Insurances"/>
609 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_related_to_additional_salary"
610 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
611 defaultValueLiteral="false"/>
612 </eClassifiers>
613 <eClassifiers xsi:type="ecore:EClass" name="Donation" eSuperTypes="#//Special_Expense_DS">
614 <eStructuralFeatures xsi:type="ecore:EAttribute" name="beneficiary1" lowerBound="1"
615 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
616 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_beneficiary_eligible"
617 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
618 defaultValueLiteral="false" derived="true"/>
619 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_donation_reported" lowerBound="1"
620 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
621 </eClassifiers>
622 <eClassifiers xsi:type="ecore:EClass" name="Loss_Carryforward" eSuperTypes="#//Special_Expense_DS">
623 <eStructuralFeatures xsi:type="ecore:EAttribute" name="regular_accountability"
624 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
625 derived="true"/>
626 <eStructuralFeatures xsi:type="ecore:EAttribute" name="compensation_by_other_means"
627 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
628 derived="true"/>
629 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_inherited_business_ownership"
630 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
631 defaultValueLiteral="false" derived="true"/>
632 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_been_partner_in_business"
633 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
634 defaultValueLiteral="true" derived="true"/>
635 </eClassifiers>
636 <eClassifiers xsi:type="ecore:EClass" name="Spousal_Expense_AC" eSuperTypes="#//Expense"/>
637 <eClassifiers xsi:type="ecore:EClass" name="Extraordinary_Expense_CE" eSuperTypes="#//Expense">
638 <eStructuralFeatures xsi:type="ecore:EAttribute" name="thresholded_deduction_percentage"
639 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
640 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ce_type" lowerBound="1"
641 eType="#//CE_Type"/>
642 </eClassifiers>
643 <eClassifiers xsi:type="ecore:EClass" name="Travel_Expense_FD" eSuperTypes="#//Professional_Expense"/>
644 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expense" eSuperTypes="#//Expense"/>
645 <eClassifiers xsi:type="ecore:EClass" name="Miscellaneous_Expense_FO" eSuperTypes="#//Professional_Expense"/>
646 <eClassifiers xsi:type="ecore:EEnum" name="Legal_Union_Types">
647 <eLiterals name="MARIAGE"/>
648 <eLiterals name="PARTNERSHIP" value="1"/>
649 <eLiterals name="OTHER" value="2"/>
650 </eClassifiers>
651</ecore:EPackage>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.genmodel b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.genmodel
new file mode 100644
index 00000000..0b8ab072
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/model/Taxation.genmodel
@@ -0,0 +1,395 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/case.study.a.model/src" modelPluginID="case.study.a.model"
4 modelName="Taxation" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
5 importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
6 operationReflection="true" importOrganizing="true">
7 <foreignModel>Taxation.ecore</foreignModel>
8 <genPackages prefix="Taxation" disposableProviderFactory="true" ecorePackage="Taxation.ecore#/">
9 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Grantor">
10 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Grantor/WWW"/>
11 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Grantor/Employer"/>
12 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Grantor/MMM"/>
13 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Grantor/UUU"/>
14 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Grantor/YYY"/>
15 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Grantor/OOO"/>
16 </genEnums>
17 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Disability_Types">
18 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/beug"/>
19 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/NONE"/>
20 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/A"/>
21 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/B"/>
22 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/C"/>
23 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/D"/>
24 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/E"/>
25 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Disability_Types/OTHER"/>
26 </genEnums>
27 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Country">
28 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Country/ZZ"/>
29 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Country/FF"/>
30 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Country/BB"/>
31 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Country/DD"/>
32 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Country/NN"/>
33 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Country/OTHER"/>
34 </genEnums>
35 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Tax_Card_Type">
36 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Card_Type/Principal"/>
37 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Card_Type/Additional"/>
38 </genEnums>
39 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Tax_Office">
40 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Office/RTS_2"/>
41 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Office/RTS_3"/>
42 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Office/RTS_4"/>
43 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Office/RTS_5"/>
44 </genEnums>
45 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Tax_Class_Category">
46 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Class_Category/One"/>
47 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Class_Category/One_A"/>
48 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Tax_Class_Category/Two"/>
49 </genEnums>
50 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Job_Activity">
51 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Job_Activity/Salary"/>
52 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Job_Activity/Pension"/>
53 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Job_Activity/Annuity"/>
54 </genEnums>
55 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Town">
56 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Town/LL"/>
57 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Town/BB"/>
58 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Town/SS"/>
59 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Town/TT"/>
60 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Town/Other"/>
61 </genEnums>
62 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Type_of_Rate">
63 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Type_of_Rate/REGULAR"/>
64 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Type_of_Rate/REAL_COST"/>
65 </genEnums>
66 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//CE_Type">
67 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//CE_Type/INALIDITY_AND_INFIRMITY"/>
68 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//CE_Type/DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
69 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//CE_Type/CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
70 </genEnums>
71 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Expense_Purpose">
72 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Expense_Purpose/HOUSE_CARE"/>
73 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Expense_Purpose/CHILD_CARE"/>
74 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Expense_Purpose/DEPENDENCE_CARE"/>
75 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Expense_Purpose/OTHER"/>
76 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Expense_Purpose/ALIMONY"/>
77 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Expense_Purpose/RECURRENT_DEPT"/>
78 </genEnums>
79 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Dependent_Type">
80 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Dependent_Type/CHILD"/>
81 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Dependent_Type/SPOUSE"/>
82 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Dependent_Type/RELATIVE"/>
83 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Dependent_Type/OTHER_FAMILY_MEMBER"/>
84 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Dependent_Type/NOT_OWN_CHILD"/>
85 </genEnums>
86 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Separation_Causes">
87 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Separation_Causes/NONE"/>
88 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Separation_Causes/DIVORCE"/>
89 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Separation_Causes/SEPARATION_DE_FAIT"/>
90 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Separation_Causes/SEPARATION_BY_COURT"/>
91 </genEnums>
92 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Category_of_Permanent_Expense">
93 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Permanent_Expense/MISCELLANEOUS_DEBT"/>
94 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Permanent_Expense/ALIMONY"/>
95 </genEnums>
96 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Category_of_Health_and_Pension_Insurances">
97 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
98 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
99 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Health_and_Pension_Insurances/CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
100 </genEnums>
101 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Category_of_Private_Insurance_and_Plan">
102 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/PRIVATE_INSURANCE"/>
103 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/PRIVATE_LIFE_INSURANCE"/>
104 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
105 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/HOUSING_SAVING_PLAN"/>
106 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Category_of_Private_Insurance_and_Plan/OLD_AGE_PENSION_PLAN"/>
107 </genEnums>
108 <genEnums typeSafeEnumCompatible="false" ecoreEnum="Taxation.ecore#//Legal_Union_Types">
109 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Legal_Union_Types/MARIAGE"/>
110 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Legal_Union_Types/PARTNERSHIP"/>
111 <genEnumLiterals ecoreEnumLiteral="Taxation.ecore#//Legal_Union_Types/OTHER"/>
112 </genEnums>
113 <genClasses image="false" ecoreClass="Taxation.ecore#//Constants">
114 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"/>
115 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"/>
116 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MINIMUM_SALARY"/>
117 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"/>
118 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"/>
119 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"/>
120 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"/>
121 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"/>
122 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
123 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
124 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"/>
125 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIM_DAILY"/>
126 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIM_MONTHLY"/>
127 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIM_YEARLY"/>
128 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIP_DAILY"/>
129 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIP_MONTHLY"/>
130 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIP_YEARLY"/>
131 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIS_DAILY"/>
132 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIS_MONTHLY"/>
133 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_CIS_YEARLY"/>
134 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"/>
135 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"/>
136 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"/>
137 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"/>
138 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Constants/MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"/>
139 </genClasses>
140 <genClasses ecoreClass="Taxation.ecore#//Income_Tax">
141 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income_Tax/taxPayer"/>
142 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax/tax_amount"/>
143 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax/tax_year"/>
144 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax/id6"/>
145 </genClasses>
146 <genClasses image="false" ecoreClass="Taxation.ecore#//Tax_Payer">
147 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Payer/dependents"/>
148 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Payer/from_agent"/>
149 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Payer/incomes"/>
150 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Payer/from_law"/>
151 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Payer/taxesDue"/>
152 </genClasses>
153 <genClasses ecoreClass="Taxation.ecore#//Physical_Person">
154 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/is_assisting_spouse"/>
155 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/SSNo"/>
156 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Physical_Person/addresses"/>
157 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/birth_year"/>
158 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/disability_percentage"/>
159 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/disability_type"/>
160 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/is_affiliated_personnaly_to_social_security"/>
161 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/birth_month"/>
162 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/birth_day"/>
163 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Physical_Person/expenses"/>
164 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Physical_Person/is_widower"/>
165 </genClasses>
166 <genClasses ecoreClass="Taxation.ecore#//Address">
167 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Address/country"/>
168 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Address/street"/>
169 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Address/zipCode"/>
170 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Address/city"/>
171 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Address/id2"/>
172 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Address/taxPayer"/>
173 </genClasses>
174 <genClasses ecoreClass="Taxation.ecore#//Expense">
175 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Expense/declared_amount"/>
176 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Expense/expense_purpose"/>
177 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Expense/dependent"/>
178 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Expense/from_agent"/>
179 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Expense/income"/>
180 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Expense/id4"/>
181 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Expense/beneficiary"/>
182 </genClasses>
183 <genClasses ecoreClass="Taxation.ecore#//Dependent">
184 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Dependent/dependent_type"/>
185 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Dependent/responsible_person"/>
186 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Dependent/continued_studies"/>
187 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Dependent/allowances"/>
188 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Dependent/household"/>
189 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Dependent/from_agent"/>
190 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Dependent/expense"/>
191 </genClasses>
192 <genClasses ecoreClass="Taxation.ecore#//External_Allowance">
193 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//External_Allowance/amount"/>
194 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//External_Allowance/grantor"/>
195 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//External_Allowance/starting_year"/>
196 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//External_Allowance/ending_year"/>
197 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//External_Allowance/reciver"/>
198 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//External_Allowance/id5"/>
199 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//External_Allowance/person"/>
200 </genClasses>
201 <genClasses ecoreClass="Taxation.ecore#//Household">
202 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Household/parents"/>
203 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Household/id1"/>
204 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Household/children"/>
205 </genClasses>
206 <genClasses image="false" ecoreClass="Taxation.ecore#//Legal_Union_Record">
207 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Legal_Union_Record/start_year"/>
208 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Legal_Union_Record/end_year"/>
209 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Legal_Union_Record/separation_cause"/>
210 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Legal_Union_Record/individual_A"/>
211 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Legal_Union_Record/individual_B"/>
212 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Legal_Union_Record/properties"/>
213 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Legal_Union_Record/mutual_agreement"/>
214 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Legal_Union_Record/id9"/>
215 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Legal_Union_Record/household"/>
216 </genClasses>
217 <genClasses ecoreClass="Taxation.ecore#//Tax_Property">
218 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Property/starting_year"/>
219 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Property/id10"/>
220 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Property/union_record"/>
221 </genClasses>
222 <genClasses image="false" ecoreClass="Taxation.ecore#//Tax_Case"/>
223 <genClasses ecoreClass="Taxation.ecore#//FromAgent">
224 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//FromAgent/taxPayer"/>
225 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//FromAgent/is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"/>
226 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//FromAgent/expense"/>
227 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//FromAgent/is_eligible_debt"/>
228 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//FromAgent/dependent"/>
229 </genClasses>
230 <genClasses image="false" ecoreClass="Taxation.ecore#//Income">
231 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income/income_amount"/>
232 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income/income_type"/>
233 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income/start_date_within_taxation_year"/>
234 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income/start_date_of_contract"/>
235 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income/end_date_within_taxation_year"/>
236 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income/tax_card"/>
237 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income/tax_liability"/>
238 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Income/taxPayer"/>
239 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income/details"/>
240 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income/num"/>
241 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income/expenses"/>
242 </genClasses>
243 <genClasses image="false" ecoreClass="Taxation.ecore#//Income_Type">
244 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Type/subjectToWithholdingTax"/>
245 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Type/id8"/>
246 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Income_Type/income"/>
247 </genClasses>
248 <genClasses ecoreClass="Taxation.ecore#//Tax_Card">
249 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/card_identifier"/>
250 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/tax_card_type"/>
251 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/tax_office"/>
252 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/valid_from_date"/>
253 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/valid_until_date"/>
254 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/percentage_of_witholding"/>
255 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/tax_payers_name_surname"/>
256 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/tax_payers_partner_name_surname"/>
257 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Card/tax_payers_address"/>
258 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/jobs_Employer_SSNo"/>
259 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/jobs_employers_name"/>
260 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/jobs_activity_type"/>
261 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/jobs_place_of_work"/>
262 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_FD_daily"/>
263 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_FD_monthly"/>
264 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_AC_daily"/>
265 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_AC_monthly"/>
266 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_AC_yearly"/>
267 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_CE_daily"/>
268 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_CE_monthly"/>
269 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_CE_yearly"/>
270 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_DS_daily"/>
271 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_DS_monthly"/>
272 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_FO_daily"/>
273 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_FO_monthly"/>
274 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_FO_yearly"/>
275 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/credit_CIS_daily"/>
276 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/credit_CIS_monthly"/>
277 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/credit_CIM_daily"/>
278 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/validity"/>
279 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Card/income_Tax_Credit"/>
280 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Card/previous"/>
281 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Card/current_tax_card"/>
282 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/credit_CIM_yearly"/>
283 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_DS_Alimony_yearly"/>
284 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Tax_Card/deduction_DS_Debt_yearly"/>
285 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Tax_Card/income"/>
286 </genClasses>
287 <genClasses ecoreClass="Taxation.ecore#//Income_Tax_Credit">
288 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax_Credit/grantedBy"/>
289 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income_Tax_Credit/taxPayer"/>
290 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax_Credit/tax_year"/>
291 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax_Credit/yearly"/>
292 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax_Credit/monthly"/>
293 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax_Credit/daily"/>
294 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Tax_Credit/id7"/>
295 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Taxation.ecore#//Income_Tax_Credit/taxation_Frame"/>
296 </genClasses>
297 <genClasses ecoreClass="Taxation.ecore#//Income_Detail">
298 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Detail/amount"/>
299 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Detail/is_worked"/>
300 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Detail/distance"/>
301 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Detail/worked_days"/>
302 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Detail/is_contributing_CNS"/>
303 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Income_Detail/id5"/>
304 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//Income_Detail/income"/>
305 </genClasses>
306 <genClasses ecoreClass="Taxation.ecore#//FromLaw">
307 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//FromLaw/id"/>
308 <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Taxation.ecore#//FromLaw/taxPayer"/>
309 </genClasses>
310 <genClasses ecoreClass="Taxation.ecore#//Fiscal_Address"/>
311 <genClasses ecoreClass="Taxation.ecore#//Habitual_Address"/>
312 <genClasses ecoreClass="Taxation.ecore#//Marriage_Record"/>
313 <genClasses ecoreClass="Taxation.ecore#//Non_Resident_Tax_Payer">
314 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Non_Resident_Tax_Payer/is_assimilated_to_resident"/>
315 </genClasses>
316 <genClasses ecoreClass="Taxation.ecore#//Partnership_Record"/>
317 <genClasses ecoreClass="Taxation.ecore#//Resident_Tax_Payer"/>
318 <genClasses ecoreClass="Taxation.ecore#//Trade_and_Business_Income"/>
319 <genClasses ecoreClass="Taxation.ecore#//Agriculture_and_Forestry_Income"/>
320 <genClasses ecoreClass="Taxation.ecore#//Pensions_and_Annuities_Income">
321 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Pensions_and_Annuities_Income/occasional_payement"/>
322 </genClasses>
323 <genClasses ecoreClass="Taxation.ecore#//Capital_and_Investments_Income"/>
324 <genClasses ecoreClass="Taxation.ecore#//Employment_Income"/>
325 <genClasses ecoreClass="Taxation.ecore#//Rentals_and_Leases_Income">
326 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Rentals_and_Leases_Income/is_periodic"/>
327 </genClasses>
328 <genClasses ecoreClass="Taxation.ecore#//Foreign_Income"/>
329 <genClasses ecoreClass="Taxation.ecore#//Local_Income"/>
330 <genClasses ecoreClass="Taxation.ecore#//CIM"/>
331 <genClasses ecoreClass="Taxation.ecore#//CIP"/>
332 <genClasses ecoreClass="Taxation.ecore#//CIS"/>
333 <genClasses ecoreClass="Taxation.ecore#//FD">
334 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//FD/distance_declared_in_january"/>
335 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//FD/calculated_distance"/>
336 </genClasses>
337 <genClasses ecoreClass="Taxation.ecore#//Professional_Expenses_Deduction"/>
338 <genClasses ecoreClass="Taxation.ecore#//FO">
339 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//FO/rate_type_for_FO"/>
340 </genClasses>
341 <genClasses ecoreClass="Taxation.ecore#//DS_for_Permanent_Expense">
342 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS_for_Permanent_Expense/permanent_expense_category"/>
343 </genClasses>
344 <genClasses ecoreClass="Taxation.ecore#//DS">
345 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS/maximum_deductible_amount"/>
346 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS/id3"/>
347 </genClasses>
348 <genClasses ecoreClass="Taxation.ecore#//DS_for_Interest_Expense"/>
349 <genClasses ecoreClass="Taxation.ecore#//DS_for_Health_and_Pension_Insurance">
350 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS_for_Health_and_Pension_Insurance/insurance_category"/>
351 </genClasses>
352 <genClasses ecoreClass="Taxation.ecore#//DS_for_Private_Insurance_and_Plan">
353 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS_for_Private_Insurance_and_Plan/private_insurance_and_plan_category"/>
354 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS_for_Private_Insurance_and_Plan/increase_for_life_insurance"/>
355 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS_for_Private_Insurance_and_Plan/maximum_deductible_amount_for_private_insurance"/>
356 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//DS_for_Private_Insurance_and_Plan/maximum_deductible_amount_for_old_age_pension_plan"/>
357 </genClasses>
358 <genClasses ecoreClass="Taxation.ecore#//DS_for_Loss_Carryforward"/>
359 <genClasses ecoreClass="Taxation.ecore#//DS_for_Donation"/>
360 <genClasses ecoreClass="Taxation.ecore#//Permanent_Expense">
361 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Permanent_Expense/category"/>
362 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Permanent_Expense/is_eligible_for_deduction"/>
363 </genClasses>
364 <genClasses ecoreClass="Taxation.ecore#//Special_Expense_DS"/>
365 <genClasses ecoreClass="Taxation.ecore#//Interest_Expense"/>
366 <genClasses ecoreClass="Taxation.ecore#//Private_Insurance_and_Plan">
367 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Private_Insurance_and_Plan/category"/>
368 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Private_Insurance_and_Plan/duration_of_contract"/>
369 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Private_Insurance_and_Plan/is_private_insurance_and_plan_eligible_for_deduction"/>
370 </genClasses>
371 <genClasses ecoreClass="Taxation.ecore#//Health_and_Pension_Insurance">
372 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Health_and_Pension_Insurance/category"/>
373 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Health_and_Pension_Insurance/is_related_to_additional_salary"/>
374 </genClasses>
375 <genClasses ecoreClass="Taxation.ecore#//Donation">
376 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Donation/beneficiary1"/>
377 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Donation/is_beneficiary_eligible"/>
378 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Donation/is_donation_reported"/>
379 </genClasses>
380 <genClasses ecoreClass="Taxation.ecore#//Loss_Carryforward">
381 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Loss_Carryforward/regular_accountability"/>
382 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Loss_Carryforward/compensation_by_other_means"/>
383 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Loss_Carryforward/tax_payer_has_inherited_business_ownership"/>
384 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Loss_Carryforward/tax_payer_has_been_partner_in_business"/>
385 </genClasses>
386 <genClasses ecoreClass="Taxation.ecore#//Spousal_Expense_AC"/>
387 <genClasses ecoreClass="Taxation.ecore#//Extraordinary_Expense_CE">
388 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Extraordinary_Expense_CE/thresholded_deduction_percentage"/>
389 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Taxation.ecore#//Extraordinary_Expense_CE/ce_type"/>
390 </genClasses>
391 <genClasses ecoreClass="Taxation.ecore#//Travel_Expense_FD"/>
392 <genClasses ecoreClass="Taxation.ecore#//Professional_Expense"/>
393 <genClasses ecoreClass="Taxation.ecore#//Miscellaneous_Expense_FO"/>
394 </genPackages>
395</genmodel:GenModel>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.properties b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.properties
new file mode 100644
index 00000000..9b6fa711
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.properties
@@ -0,0 +1,4 @@
1#
2
3pluginName = Replication
4providerName = www.example.org
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.xml b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.xml
new file mode 100644
index 00000000..4660d88a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/plugin.xml
@@ -0,0 +1,13 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<?eclipse version="3.0"?>
3<plugin
4>
5 <extension
6 point="org.eclipse.emf.ecore.generated_package">
7 <package
8 class="Taxation.TaxationPackage"
9 genModel="model/Taxation.genmodel"
10 uri="http:///TaxCard.ecore">
11 </package>
12 </extension>
13</plugin>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src-gen/queries/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src-gen/queries/.gitignore
new file mode 100644
index 00000000..1e50c85a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src-gen/queries/.gitignore
@@ -0,0 +1,3 @@
1/.Case_study_A.java._trace
2/.Inv25.java._trace
3/.Mother.java._trace
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Address.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Address.java
new file mode 100644
index 00000000..2994ae14
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Address.java
@@ -0,0 +1,159 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Address</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link Taxation.Address#getCountry <em>Country</em>}</li>
19 * <li>{@link Taxation.Address#getStreet <em>Street</em>}</li>
20 * <li>{@link Taxation.Address#getZipCode <em>Zip Code</em>}</li>
21 * <li>{@link Taxation.Address#getCity <em>City</em>}</li>
22 * <li>{@link Taxation.Address#getId2 <em>Id2</em>}</li>
23 * <li>{@link Taxation.Address#getTaxPayer <em>Tax Payer</em>}</li>
24 * </ul>
25 *
26 * @see Taxation.TaxationPackage#getAddress()
27 * @model
28 * @generated
29 */
30public interface Address extends EObject {
31 /**
32 * Returns the value of the '<em><b>Country</b></em>' attribute.
33 * The default value is <code>"ZZ"</code>.
34 * The literals are from the enumeration {@link Taxation.Country}.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return the value of the '<em>Country</em>' attribute.
38 * @see Taxation.Country
39 * @see #setCountry(Country)
40 * @see Taxation.TaxationPackage#getAddress_Country()
41 * @model default="ZZ" required="true"
42 * @generated
43 */
44 Country getCountry();
45
46 /**
47 * Sets the value of the '{@link Taxation.Address#getCountry <em>Country</em>}' attribute.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param value the new value of the '<em>Country</em>' attribute.
51 * @see Taxation.Country
52 * @see #getCountry()
53 * @generated
54 */
55 void setCountry(Country value);
56
57 /**
58 * Returns the value of the '<em><b>Street</b></em>' attribute.
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @return the value of the '<em>Street</em>' attribute.
62 * @see #setStreet(String)
63 * @see Taxation.TaxationPackage#getAddress_Street()
64 * @model required="true"
65 * @generated
66 */
67 String getStreet();
68
69 /**
70 * Sets the value of the '{@link Taxation.Address#getStreet <em>Street</em>}' attribute.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @param value the new value of the '<em>Street</em>' attribute.
74 * @see #getStreet()
75 * @generated
76 */
77 void setStreet(String value);
78
79 /**
80 * Returns the value of the '<em><b>Zip Code</b></em>' attribute.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @return the value of the '<em>Zip Code</em>' attribute.
84 * @see #setZipCode(String)
85 * @see Taxation.TaxationPackage#getAddress_ZipCode()
86 * @model required="true"
87 * @generated
88 */
89 String getZipCode();
90
91 /**
92 * Sets the value of the '{@link Taxation.Address#getZipCode <em>Zip Code</em>}' attribute.
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @param value the new value of the '<em>Zip Code</em>' attribute.
96 * @see #getZipCode()
97 * @generated
98 */
99 void setZipCode(String value);
100
101 /**
102 * Returns the value of the '<em><b>City</b></em>' attribute.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @return the value of the '<em>City</em>' attribute.
106 * @see #setCity(String)
107 * @see Taxation.TaxationPackage#getAddress_City()
108 * @model required="true"
109 * @generated
110 */
111 String getCity();
112
113 /**
114 * Sets the value of the '{@link Taxation.Address#getCity <em>City</em>}' attribute.
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @param value the new value of the '<em>City</em>' attribute.
118 * @see #getCity()
119 * @generated
120 */
121 void setCity(String value);
122
123 /**
124 * Returns the value of the '<em><b>Id2</b></em>' attribute.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @return the value of the '<em>Id2</em>' attribute.
128 * @see #setId2(String)
129 * @see Taxation.TaxationPackage#getAddress_Id2()
130 * @model id="true" required="true" ordered="false"
131 * @generated
132 */
133 String getId2();
134
135 /**
136 * Sets the value of the '{@link Taxation.Address#getId2 <em>Id2</em>}' attribute.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @param value the new value of the '<em>Id2</em>' attribute.
140 * @see #getId2()
141 * @generated
142 */
143 void setId2(String value);
144
145 /**
146 * Returns the value of the '<em><b>Tax Payer</b></em>' reference list.
147 * The list contents are of type {@link Taxation.Physical_Person}.
148 * It is bidirectional and its opposite is '{@link Taxation.Physical_Person#getAddresses <em>Addresses</em>}'.
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @return the value of the '<em>Tax Payer</em>' reference list.
152 * @see Taxation.TaxationPackage#getAddress_TaxPayer()
153 * @see Taxation.Physical_Person#getAddresses
154 * @model opposite="addresses" ordered="false"
155 * @generated
156 */
157 EList<Physical_Person> getTaxPayer();
158
159} // Address
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Agriculture_and_Forestry_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Agriculture_and_Forestry_Income.java
new file mode 100644
index 00000000..fac879d1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Agriculture_and_Forestry_Income.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Agriculture and Forestry Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getAgriculture_and_Forestry_Income()
13 * @model
14 * @generated
15 */
16public interface Agriculture_and_Forestry_Income extends Income_Type {
17} // Agriculture_and_Forestry_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CE_Type.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CE_Type.java
new file mode 100644
index 00000000..3be2941d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CE_Type.java
@@ -0,0 +1,232 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>CE Type</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getCE_Type()
17 * @model
18 * @generated
19 */
20public enum CE_Type implements Enumerator {
21 /**
22 * The '<em><b>INALIDITY AND INFIRMITY</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #INALIDITY_AND_INFIRMITY_VALUE
26 * @generated
27 * @ordered
28 */
29 INALIDITY_AND_INFIRMITY(0, "INALIDITY_AND_INFIRMITY", "INALIDITY_AND_INFIRMITY"),
30
31 /**
32 * The '<em><b>DEPENDENCE AND CARE EXCLUDING CHLIDREN NOT PART OF HOUSEHOLD</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD_VALUE
36 * @generated
37 * @ordered
38 */
39 DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD(1, "DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD", "DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"),
40
41 /**
42 * The '<em><b>CARE FOR CHILDREN NOT BEING PART OF HOUSEHOLD</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD_VALUE
46 * @generated
47 * @ordered
48 */
49 CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD(2, "CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD", "CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD");
50
51 /**
52 * The '<em><b>INALIDITY AND INFIRMITY</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #INALIDITY_AND_INFIRMITY
56 * @model
57 * @generated
58 * @ordered
59 */
60 public static final int INALIDITY_AND_INFIRMITY_VALUE = 0;
61
62 /**
63 * The '<em><b>DEPENDENCE AND CARE EXCLUDING CHLIDREN NOT PART OF HOUSEHOLD</b></em>' literal value.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD
67 * @model
68 * @generated
69 * @ordered
70 */
71 public static final int DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD_VALUE = 1;
72
73 /**
74 * The '<em><b>CARE FOR CHILDREN NOT BEING PART OF HOUSEHOLD</b></em>' literal value.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD
78 * @model
79 * @generated
80 * @ordered
81 */
82 public static final int CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD_VALUE = 2;
83
84 /**
85 * An array of all the '<em><b>CE Type</b></em>' enumerators.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 private static final CE_Type[] VALUES_ARRAY =
91 new CE_Type[] {
92 INALIDITY_AND_INFIRMITY,
93 DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD,
94 CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD,
95 };
96
97 /**
98 * A public read-only list of all the '<em><b>CE Type</b></em>' enumerators.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 public static final List<CE_Type> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
104
105 /**
106 * Returns the '<em><b>CE Type</b></em>' literal with the specified literal value.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param literal the literal.
110 * @return the matching enumerator or <code>null</code>.
111 * @generated
112 */
113 public static CE_Type get(String literal) {
114 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
115 CE_Type result = VALUES_ARRAY[i];
116 if (result.toString().equals(literal)) {
117 return result;
118 }
119 }
120 return null;
121 }
122
123 /**
124 * Returns the '<em><b>CE Type</b></em>' literal with the specified name.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @param name the name.
128 * @return the matching enumerator or <code>null</code>.
129 * @generated
130 */
131 public static CE_Type getByName(String name) {
132 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
133 CE_Type result = VALUES_ARRAY[i];
134 if (result.getName().equals(name)) {
135 return result;
136 }
137 }
138 return null;
139 }
140
141 /**
142 * Returns the '<em><b>CE Type</b></em>' literal with the specified integer value.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @param value the integer value.
146 * @return the matching enumerator or <code>null</code>.
147 * @generated
148 */
149 public static CE_Type get(int value) {
150 switch (value) {
151 case INALIDITY_AND_INFIRMITY_VALUE: return INALIDITY_AND_INFIRMITY;
152 case DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD_VALUE: return DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD;
153 case CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD_VALUE: return CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD;
154 }
155 return null;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 private final int value;
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 private final String name;
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 private final String literal;
178
179 /**
180 * Only this class can construct instances.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 private CE_Type(int value, String name, String literal) {
186 this.value = value;
187 this.name = name;
188 this.literal = literal;
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public int getValue() {
198 return value;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public String getName() {
208 return name;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getLiteral() {
218 return literal;
219 }
220
221 /**
222 * Returns the literal value of the enumerator, which is its string representation.
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public String toString() {
229 return literal;
230 }
231
232} //CE_Type
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIM.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIM.java
new file mode 100644
index 00000000..10246bdf
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIM.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>CIM</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getCIM()
13 * @model
14 * @generated
15 */
16public interface CIM extends Income_Tax_Credit {
17} // CIM
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIP.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIP.java
new file mode 100644
index 00000000..c8d4ab42
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIP.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>CIP</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getCIP()
13 * @model
14 * @generated
15 */
16public interface CIP extends Income_Tax_Credit {
17} // CIP
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIS.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIS.java
new file mode 100644
index 00000000..ae688220
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/CIS.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>CIS</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getCIS()
13 * @model
14 * @generated
15 */
16public interface CIS extends Income_Tax_Credit {
17} // CIS
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Capital_and_Investments_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Capital_and_Investments_Income.java
new file mode 100644
index 00000000..833366f4
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Capital_and_Investments_Income.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Capital and Investments Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getCapital_and_Investments_Income()
13 * @model
14 * @generated
15 */
16public interface Capital_and_Investments_Income extends Income_Type {
17} // Capital_and_Investments_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Health_and_Pension_Insurances.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Health_and_Pension_Insurances.java
new file mode 100644
index 00000000..5cc3e13d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Health_and_Pension_Insurances.java
@@ -0,0 +1,232 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Category of Health and Pension Insurances</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getCategory_of_Health_and_Pension_Insurances()
17 * @model
18 * @generated
19 */
20public enum Category_of_Health_and_Pension_Insurances implements Enumerator {
21 /**
22 * The '<em><b>MANDATORY HEALTH AND PENSION INSURANCE</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #MANDATORY_HEALTH_AND_PENSION_INSURANCE_VALUE
26 * @generated
27 * @ordered
28 */
29 MANDATORY_HEALTH_AND_PENSION_INSURANCE(0, "MANDATORY_HEALTH_AND_PENSION_INSURANCE", "MANDATORY_HEALTH_AND_PENSION_INSURANCE"),
30
31 /**
32 * The '<em><b>ADDITIONAL EMPLOYERS PENSION INSURANCE</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #ADDITIONAL_EMPLOYERS_PENSION_INSURANCE_VALUE
36 * @generated
37 * @ordered
38 */
39 ADDITIONAL_EMPLOYERS_PENSION_INSURANCE(1, "ADDITIONAL_EMPLOYERS_PENSION_INSURANCE", "ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"),
40
41 /**
42 * The '<em><b>CONTINUED HEALTH AND PENSION INSURANCE</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #CONTINUED_HEALTH_AND_PENSION_INSURANCE_VALUE
46 * @generated
47 * @ordered
48 */
49 CONTINUED_HEALTH_AND_PENSION_INSURANCE(2, "CONTINUED_HEALTH_AND_PENSION_INSURANCE", "CONTINUED_HEALTH_AND_PENSION_INSURANCE");
50
51 /**
52 * The '<em><b>MANDATORY HEALTH AND PENSION INSURANCE</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #MANDATORY_HEALTH_AND_PENSION_INSURANCE
56 * @model
57 * @generated
58 * @ordered
59 */
60 public static final int MANDATORY_HEALTH_AND_PENSION_INSURANCE_VALUE = 0;
61
62 /**
63 * The '<em><b>ADDITIONAL EMPLOYERS PENSION INSURANCE</b></em>' literal value.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #ADDITIONAL_EMPLOYERS_PENSION_INSURANCE
67 * @model
68 * @generated
69 * @ordered
70 */
71 public static final int ADDITIONAL_EMPLOYERS_PENSION_INSURANCE_VALUE = 1;
72
73 /**
74 * The '<em><b>CONTINUED HEALTH AND PENSION INSURANCE</b></em>' literal value.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #CONTINUED_HEALTH_AND_PENSION_INSURANCE
78 * @model
79 * @generated
80 * @ordered
81 */
82 public static final int CONTINUED_HEALTH_AND_PENSION_INSURANCE_VALUE = 2;
83
84 /**
85 * An array of all the '<em><b>Category of Health and Pension Insurances</b></em>' enumerators.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 private static final Category_of_Health_and_Pension_Insurances[] VALUES_ARRAY =
91 new Category_of_Health_and_Pension_Insurances[] {
92 MANDATORY_HEALTH_AND_PENSION_INSURANCE,
93 ADDITIONAL_EMPLOYERS_PENSION_INSURANCE,
94 CONTINUED_HEALTH_AND_PENSION_INSURANCE,
95 };
96
97 /**
98 * A public read-only list of all the '<em><b>Category of Health and Pension Insurances</b></em>' enumerators.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 public static final List<Category_of_Health_and_Pension_Insurances> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
104
105 /**
106 * Returns the '<em><b>Category of Health and Pension Insurances</b></em>' literal with the specified literal value.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param literal the literal.
110 * @return the matching enumerator or <code>null</code>.
111 * @generated
112 */
113 public static Category_of_Health_and_Pension_Insurances get(String literal) {
114 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
115 Category_of_Health_and_Pension_Insurances result = VALUES_ARRAY[i];
116 if (result.toString().equals(literal)) {
117 return result;
118 }
119 }
120 return null;
121 }
122
123 /**
124 * Returns the '<em><b>Category of Health and Pension Insurances</b></em>' literal with the specified name.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @param name the name.
128 * @return the matching enumerator or <code>null</code>.
129 * @generated
130 */
131 public static Category_of_Health_and_Pension_Insurances getByName(String name) {
132 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
133 Category_of_Health_and_Pension_Insurances result = VALUES_ARRAY[i];
134 if (result.getName().equals(name)) {
135 return result;
136 }
137 }
138 return null;
139 }
140
141 /**
142 * Returns the '<em><b>Category of Health and Pension Insurances</b></em>' literal with the specified integer value.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @param value the integer value.
146 * @return the matching enumerator or <code>null</code>.
147 * @generated
148 */
149 public static Category_of_Health_and_Pension_Insurances get(int value) {
150 switch (value) {
151 case MANDATORY_HEALTH_AND_PENSION_INSURANCE_VALUE: return MANDATORY_HEALTH_AND_PENSION_INSURANCE;
152 case ADDITIONAL_EMPLOYERS_PENSION_INSURANCE_VALUE: return ADDITIONAL_EMPLOYERS_PENSION_INSURANCE;
153 case CONTINUED_HEALTH_AND_PENSION_INSURANCE_VALUE: return CONTINUED_HEALTH_AND_PENSION_INSURANCE;
154 }
155 return null;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 private final int value;
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 private final String name;
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 private final String literal;
178
179 /**
180 * Only this class can construct instances.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 private Category_of_Health_and_Pension_Insurances(int value, String name, String literal) {
186 this.value = value;
187 this.name = name;
188 this.literal = literal;
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public int getValue() {
198 return value;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public String getName() {
208 return name;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getLiteral() {
218 return literal;
219 }
220
221 /**
222 * Returns the literal value of the enumerator, which is its string representation.
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public String toString() {
229 return literal;
230 }
231
232} //Category_of_Health_and_Pension_Insurances
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Permanent_Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Permanent_Expense.java
new file mode 100644
index 00000000..83d75af2
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Permanent_Expense.java
@@ -0,0 +1,209 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Category of Permanent Expense</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getCategory_of_Permanent_Expense()
17 * @model
18 * @generated
19 */
20public enum Category_of_Permanent_Expense implements Enumerator {
21 /**
22 * The '<em><b>MISCELLANEOUS DEBT</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #MISCELLANEOUS_DEBT_VALUE
26 * @generated
27 * @ordered
28 */
29 MISCELLANEOUS_DEBT(0, "MISCELLANEOUS_DEBT", "MISCELLANEOUS_DEBT"),
30
31 /**
32 * The '<em><b>ALIMONY</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #ALIMONY_VALUE
36 * @generated
37 * @ordered
38 */
39 ALIMONY(1, "ALIMONY", "ALIMONY");
40
41 /**
42 * The '<em><b>MISCELLANEOUS DEBT</b></em>' literal value.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #MISCELLANEOUS_DEBT
46 * @model
47 * @generated
48 * @ordered
49 */
50 public static final int MISCELLANEOUS_DEBT_VALUE = 0;
51
52 /**
53 * The '<em><b>ALIMONY</b></em>' literal value.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #ALIMONY
57 * @model
58 * @generated
59 * @ordered
60 */
61 public static final int ALIMONY_VALUE = 1;
62
63 /**
64 * An array of all the '<em><b>Category of Permanent Expense</b></em>' enumerators.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 private static final Category_of_Permanent_Expense[] VALUES_ARRAY =
70 new Category_of_Permanent_Expense[] {
71 MISCELLANEOUS_DEBT,
72 ALIMONY,
73 };
74
75 /**
76 * A public read-only list of all the '<em><b>Category of Permanent Expense</b></em>' enumerators.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 public static final List<Category_of_Permanent_Expense> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
82
83 /**
84 * Returns the '<em><b>Category of Permanent Expense</b></em>' literal with the specified literal value.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @param literal the literal.
88 * @return the matching enumerator or <code>null</code>.
89 * @generated
90 */
91 public static Category_of_Permanent_Expense get(String literal) {
92 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
93 Category_of_Permanent_Expense result = VALUES_ARRAY[i];
94 if (result.toString().equals(literal)) {
95 return result;
96 }
97 }
98 return null;
99 }
100
101 /**
102 * Returns the '<em><b>Category of Permanent Expense</b></em>' literal with the specified name.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @param name the name.
106 * @return the matching enumerator or <code>null</code>.
107 * @generated
108 */
109 public static Category_of_Permanent_Expense getByName(String name) {
110 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
111 Category_of_Permanent_Expense result = VALUES_ARRAY[i];
112 if (result.getName().equals(name)) {
113 return result;
114 }
115 }
116 return null;
117 }
118
119 /**
120 * Returns the '<em><b>Category of Permanent Expense</b></em>' literal with the specified integer value.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @param value the integer value.
124 * @return the matching enumerator or <code>null</code>.
125 * @generated
126 */
127 public static Category_of_Permanent_Expense get(int value) {
128 switch (value) {
129 case MISCELLANEOUS_DEBT_VALUE: return MISCELLANEOUS_DEBT;
130 case ALIMONY_VALUE: return ALIMONY;
131 }
132 return null;
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 private final int value;
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 private final String name;
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 private final String literal;
155
156 /**
157 * Only this class can construct instances.
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 private Category_of_Permanent_Expense(int value, String name, String literal) {
163 this.value = value;
164 this.name = name;
165 this.literal = literal;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 public int getValue() {
175 return value;
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 @Override
184 public String getName() {
185 return name;
186 }
187
188 /**
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 */
193 @Override
194 public String getLiteral() {
195 return literal;
196 }
197
198 /**
199 * Returns the literal value of the enumerator, which is its string representation.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public String toString() {
206 return literal;
207 }
208
209} //Category_of_Permanent_Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Private_Insurance_and_Plan.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Private_Insurance_and_Plan.java
new file mode 100644
index 00000000..bf4c3c3b
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Category_of_Private_Insurance_and_Plan.java
@@ -0,0 +1,278 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Category of Private Insurance and Plan</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getCategory_of_Private_Insurance_and_Plan()
17 * @model
18 * @generated
19 */
20public enum Category_of_Private_Insurance_and_Plan implements Enumerator {
21 /**
22 * The '<em><b>PRIVATE INSURANCE</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #PRIVATE_INSURANCE_VALUE
26 * @generated
27 * @ordered
28 */
29 PRIVATE_INSURANCE(0, "PRIVATE_INSURANCE", "PRIVATE_INSURANCE"),
30
31 /**
32 * The '<em><b>PRIVATE LIFE INSURANCE</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #PRIVATE_LIFE_INSURANCE_VALUE
36 * @generated
37 * @ordered
38 */
39 PRIVATE_LIFE_INSURANCE(1, "PRIVATE_LIFE_INSURANCE", "PRIVATE_LIFE_INSURANCE"),
40
41 /**
42 * The '<em><b>COMPANY MEMBERS PRIVATE INSURANCE</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #COMPANY_MEMBERS_PRIVATE_INSURANCE_VALUE
46 * @generated
47 * @ordered
48 */
49 COMPANY_MEMBERS_PRIVATE_INSURANCE(2, "COMPANY_MEMBERS_PRIVATE_INSURANCE", "COMPANY_MEMBERS_PRIVATE_INSURANCE"),
50
51 /**
52 * The '<em><b>HOUSING SAVING PLAN</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #HOUSING_SAVING_PLAN_VALUE
56 * @generated
57 * @ordered
58 */
59 HOUSING_SAVING_PLAN(3, "HOUSING_SAVING_PLAN", "HOUSING_SAVING_PLAN"),
60
61 /**
62 * The '<em><b>OLD AGE PENSION PLAN</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #OLD_AGE_PENSION_PLAN_VALUE
66 * @generated
67 * @ordered
68 */
69 OLD_AGE_PENSION_PLAN(4, "OLD_AGE_PENSION_PLAN", "OLD_AGE_PENSION_PLAN");
70
71 /**
72 * The '<em><b>PRIVATE INSURANCE</b></em>' literal value.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #PRIVATE_INSURANCE
76 * @model
77 * @generated
78 * @ordered
79 */
80 public static final int PRIVATE_INSURANCE_VALUE = 0;
81
82 /**
83 * The '<em><b>PRIVATE LIFE INSURANCE</b></em>' literal value.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @see #PRIVATE_LIFE_INSURANCE
87 * @model
88 * @generated
89 * @ordered
90 */
91 public static final int PRIVATE_LIFE_INSURANCE_VALUE = 1;
92
93 /**
94 * The '<em><b>COMPANY MEMBERS PRIVATE INSURANCE</b></em>' literal value.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #COMPANY_MEMBERS_PRIVATE_INSURANCE
98 * @model
99 * @generated
100 * @ordered
101 */
102 public static final int COMPANY_MEMBERS_PRIVATE_INSURANCE_VALUE = 2;
103
104 /**
105 * The '<em><b>HOUSING SAVING PLAN</b></em>' literal value.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @see #HOUSING_SAVING_PLAN
109 * @model
110 * @generated
111 * @ordered
112 */
113 public static final int HOUSING_SAVING_PLAN_VALUE = 3;
114
115 /**
116 * The '<em><b>OLD AGE PENSION PLAN</b></em>' literal value.
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @see #OLD_AGE_PENSION_PLAN
120 * @model
121 * @generated
122 * @ordered
123 */
124 public static final int OLD_AGE_PENSION_PLAN_VALUE = 4;
125
126 /**
127 * An array of all the '<em><b>Category of Private Insurance and Plan</b></em>' enumerators.
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 */
132 private static final Category_of_Private_Insurance_and_Plan[] VALUES_ARRAY =
133 new Category_of_Private_Insurance_and_Plan[] {
134 PRIVATE_INSURANCE,
135 PRIVATE_LIFE_INSURANCE,
136 COMPANY_MEMBERS_PRIVATE_INSURANCE,
137 HOUSING_SAVING_PLAN,
138 OLD_AGE_PENSION_PLAN,
139 };
140
141 /**
142 * A public read-only list of all the '<em><b>Category of Private Insurance and Plan</b></em>' enumerators.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 public static final List<Category_of_Private_Insurance_and_Plan> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
148
149 /**
150 * Returns the '<em><b>Category of Private Insurance and Plan</b></em>' literal with the specified literal value.
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @param literal the literal.
154 * @return the matching enumerator or <code>null</code>.
155 * @generated
156 */
157 public static Category_of_Private_Insurance_and_Plan get(String literal) {
158 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
159 Category_of_Private_Insurance_and_Plan result = VALUES_ARRAY[i];
160 if (result.toString().equals(literal)) {
161 return result;
162 }
163 }
164 return null;
165 }
166
167 /**
168 * Returns the '<em><b>Category of Private Insurance and Plan</b></em>' literal with the specified name.
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @param name the name.
172 * @return the matching enumerator or <code>null</code>.
173 * @generated
174 */
175 public static Category_of_Private_Insurance_and_Plan getByName(String name) {
176 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
177 Category_of_Private_Insurance_and_Plan result = VALUES_ARRAY[i];
178 if (result.getName().equals(name)) {
179 return result;
180 }
181 }
182 return null;
183 }
184
185 /**
186 * Returns the '<em><b>Category of Private Insurance and Plan</b></em>' literal with the specified integer value.
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @param value the integer value.
190 * @return the matching enumerator or <code>null</code>.
191 * @generated
192 */
193 public static Category_of_Private_Insurance_and_Plan get(int value) {
194 switch (value) {
195 case PRIVATE_INSURANCE_VALUE: return PRIVATE_INSURANCE;
196 case PRIVATE_LIFE_INSURANCE_VALUE: return PRIVATE_LIFE_INSURANCE;
197 case COMPANY_MEMBERS_PRIVATE_INSURANCE_VALUE: return COMPANY_MEMBERS_PRIVATE_INSURANCE;
198 case HOUSING_SAVING_PLAN_VALUE: return HOUSING_SAVING_PLAN;
199 case OLD_AGE_PENSION_PLAN_VALUE: return OLD_AGE_PENSION_PLAN;
200 }
201 return null;
202 }
203
204 /**
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @generated
208 */
209 private final int value;
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 private final String name;
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 private final String literal;
224
225 /**
226 * Only this class can construct instances.
227 * <!-- begin-user-doc -->
228 * <!-- end-user-doc -->
229 * @generated
230 */
231 private Category_of_Private_Insurance_and_Plan(int value, String name, String literal) {
232 this.value = value;
233 this.name = name;
234 this.literal = literal;
235 }
236
237 /**
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 */
242 @Override
243 public int getValue() {
244 return value;
245 }
246
247 /**
248 * <!-- begin-user-doc -->
249 * <!-- end-user-doc -->
250 * @generated
251 */
252 @Override
253 public String getName() {
254 return name;
255 }
256
257 /**
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 */
262 @Override
263 public String getLiteral() {
264 return literal;
265 }
266
267 /**
268 * Returns the literal value of the enumerator, which is its string representation.
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @generated
272 */
273 @Override
274 public String toString() {
275 return literal;
276 }
277
278} //Category_of_Private_Insurance_and_Plan
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Constants.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Constants.java
new file mode 100644
index 00000000..b21f94f1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Constants.java
@@ -0,0 +1,619 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Constants</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Constants#getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD <em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>}</li>
17 * <li>{@link Taxation.Constants#getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE <em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>}</li>
18 * <li>{@link Taxation.Constants#getMINIMUM_SALARY <em>MINIMUM SALARY</em>}</li>
19 * <li>{@link Taxation.Constants#getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION <em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>}</li>
20 * <li>{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS <em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>}</li>
21 * <li>{@link Taxation.Constants#getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS <em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>}</li>
22 * <li>{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>}</li>
23 * <li>{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>}</li>
24 * <li>{@link Taxation.Constants#getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}</li>
25 * <li>{@link Taxation.Constants#getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}</li>
26 * <li>{@link Taxation.Constants#getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}</li>
27 * <li>{@link Taxation.Constants#getFLAT_RATE_CIM_DAILY <em>FLAT RATE CIM DAILY</em>}</li>
28 * <li>{@link Taxation.Constants#getFLAT_RATE_CIM_MONTHLY <em>FLAT RATE CIM MONTHLY</em>}</li>
29 * <li>{@link Taxation.Constants#getFLAT_RATE_CIM_YEARLY <em>FLAT RATE CIM YEARLY</em>}</li>
30 * <li>{@link Taxation.Constants#getFLAT_RATE_CIP_DAILY <em>FLAT RATE CIP DAILY</em>}</li>
31 * <li>{@link Taxation.Constants#getFLAT_RATE_CIP_MONTHLY <em>FLAT RATE CIP MONTHLY</em>}</li>
32 * <li>{@link Taxation.Constants#getFLAT_RATE_CIP_YEARLY <em>FLAT RATE CIP YEARLY</em>}</li>
33 * <li>{@link Taxation.Constants#getFLAT_RATE_CIS_DAILY <em>FLAT RATE CIS DAILY</em>}</li>
34 * <li>{@link Taxation.Constants#getFLAT_RATE_CIS_MONTHLY <em>FLAT RATE CIS MONTHLY</em>}</li>
35 * <li>{@link Taxation.Constants#getFLAT_RATE_CIS_YEARLY <em>FLAT RATE CIS YEARLY</em>}</li>
36 * <li>{@link Taxation.Constants#getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT <em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>}</li>
37 * <li>{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS <em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>}</li>
38 * <li>{@link Taxation.Constants#getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}</li>
39 * <li>{@link Taxation.Constants#getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}</li>
40 * <li>{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>}</li>
41 * </ul>
42 *
43 * @see Taxation.TaxationPackage#getConstants()
44 * @model abstract="true"
45 * @generated
46 */
47public interface Constants extends EObject {
48 /**
49 * Returns the value of the '<em><b>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</b></em>' attribute.
50 * The default value is <code>"3480.0"</code>.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @return the value of the '<em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>' attribute.
54 * @see #setMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD(double)
55 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD()
56 * @model default="3480.0" required="true"
57 * @generated
58 */
59 double getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD();
60
61 /**
62 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD <em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @param value the new value of the '<em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>' attribute.
66 * @see #getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD()
67 * @generated
68 */
69 void setMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD(double value);
70
71 /**
72 * Returns the value of the '<em><b>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</b></em>' attribute.
73 * The default value is <code>"3600.0"</code>.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @return the value of the '<em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>' attribute.
77 * @see #setMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE(double)
78 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE()
79 * @model default="3600.0" required="true"
80 * @generated
81 */
82 double getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE();
83
84 /**
85 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE <em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>}' attribute.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @param value the new value of the '<em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>' attribute.
89 * @see #getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE()
90 * @generated
91 */
92 void setMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE(double value);
93
94 /**
95 * Returns the value of the '<em><b>MINIMUM SALARY</b></em>' attribute.
96 * The default value is <code>"1500.0"</code>.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @return the value of the '<em>MINIMUM SALARY</em>' attribute.
100 * @see #setMINIMUM_SALARY(double)
101 * @see Taxation.TaxationPackage#getConstants_MINIMUM_SALARY()
102 * @model default="1500.0" required="true"
103 * @generated
104 */
105 double getMINIMUM_SALARY();
106
107 /**
108 * Sets the value of the '{@link Taxation.Constants#getMINIMUM_SALARY <em>MINIMUM SALARY</em>}' attribute.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @param value the new value of the '<em>MINIMUM SALARY</em>' attribute.
112 * @see #getMINIMUM_SALARY()
113 * @generated
114 */
115 void setMINIMUM_SALARY(double value);
116
117 /**
118 * Returns the value of the '<em><b>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</b></em>' attribute.
119 * The default value is <code>"4500.0"</code>.
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @return the value of the '<em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>' attribute.
123 * @see #setFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION(double)
124 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION()
125 * @model default="4500.0" required="true"
126 * @generated
127 */
128 double getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION();
129
130 /**
131 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION <em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>}' attribute.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param value the new value of the '<em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>' attribute.
135 * @see #getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION()
136 * @generated
137 */
138 void setFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION(double value);
139
140 /**
141 * Returns the value of the '<em><b>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</b></em>' attribute.
142 * The default value is <code>"20.0"</code>.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @return the value of the '<em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>' attribute.
146 * @see #setMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS(double)
147 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS()
148 * @model default="20.0" required="true"
149 * @generated
150 */
151 double getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS();
152
153 /**
154 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS <em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>}' attribute.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @param value the new value of the '<em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>' attribute.
158 * @see #getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS()
159 * @generated
160 */
161 void setMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS(double value);
162
163 /**
164 * Returns the value of the '<em><b>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</b></em>' attribute.
165 * The default value is <code>"120.0"</code>.
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @return the value of the '<em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>' attribute.
169 * @see #setMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS(double)
170 * @see Taxation.TaxationPackage#getConstants_MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS()
171 * @model default="120.0" required="true"
172 * @generated
173 */
174 double getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS();
175
176 /**
177 * Sets the value of the '{@link Taxation.Constants#getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS <em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>}' attribute.
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @param value the new value of the '<em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>' attribute.
181 * @see #getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS()
182 * @generated
183 */
184 void setMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS(double value);
185
186 /**
187 * Returns the value of the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</b></em>' attribute.
188 * The default value is <code>"0.0"</code>.
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @return the value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>' attribute.
192 * @see #setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC(double)
193 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC()
194 * @model default="0.0" required="true"
195 * @generated
196 */
197 double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC();
198
199 /**
200 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>}' attribute.
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @param value the new value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>' attribute.
204 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC()
205 * @generated
206 */
207 void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC(double value);
208
209 /**
210 * Returns the value of the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</b></em>' attribute.
211 * The default value is <code>"24000.0"</code>.
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @return the value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>' attribute.
215 * @see #setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE(double)
216 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE()
217 * @model default="24000.0" required="true"
218 * @generated
219 */
220 double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE();
221
222 /**
223 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>}' attribute.
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @param value the new value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>' attribute.
227 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE()
228 * @generated
229 */
230 void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE(double value);
231
232 /**
233 * Returns the value of the '<em><b>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute.
234 * The default value is <code>"99.0"</code>.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @return the value of the '<em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>' attribute.
238 * @see #setMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double)
239 * @see Taxation.TaxationPackage#getConstants_MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
240 * @model default="99.0" required="true"
241 * @generated
242 */
243 double getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
244
245 /**
246 * Sets the value of the '{@link Taxation.Constants#getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
247 * <!-- begin-user-doc -->
248 * <!-- end-user-doc -->
249 * @param value the new value of the '<em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>' attribute.
250 * @see #getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
251 * @generated
252 */
253 void setMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double value);
254
255 /**
256 * Returns the value of the '<em><b>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute.
257 * The default value is <code>"30.0"</code>.
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @return the value of the '<em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>' attribute.
261 * @see #setMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double)
262 * @see Taxation.TaxationPackage#getConstants_MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
263 * @model default="30.0" required="true"
264 * @generated
265 */
266 double getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
267
268 /**
269 * Sets the value of the '{@link Taxation.Constants#getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
270 * <!-- begin-user-doc -->
271 * <!-- end-user-doc -->
272 * @param value the new value of the '<em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>' attribute.
273 * @see #getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
274 * @generated
275 */
276 void setMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double value);
277
278 /**
279 * Returns the value of the '<em><b>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute.
280 * The default value is <code>"4.0"</code>.
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @return the value of the '<em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>' attribute.
284 * @see #setMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double)
285 * @see Taxation.TaxationPackage#getConstants_MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
286 * @model default="4.0" required="true"
287 * @generated
288 */
289 double getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
290
291 /**
292 * Sets the value of the '{@link Taxation.Constants#getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
293 * <!-- begin-user-doc -->
294 * <!-- end-user-doc -->
295 * @param value the new value of the '<em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>' attribute.
296 * @see #getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
297 * @generated
298 */
299 void setMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double value);
300
301 /**
302 * Returns the value of the '<em><b>FLAT RATE CIM DAILY</b></em>' attribute.
303 * The default value is <code>"2.0"</code>.
304 * <!-- begin-user-doc -->
305 * <!-- end-user-doc -->
306 * @return the value of the '<em>FLAT RATE CIM DAILY</em>' attribute.
307 * @see #setFLAT_RATE_CIM_DAILY(double)
308 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIM_DAILY()
309 * @model default="2.0" required="true"
310 * @generated
311 */
312 double getFLAT_RATE_CIM_DAILY();
313
314 /**
315 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIM_DAILY <em>FLAT RATE CIM DAILY</em>}' attribute.
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @param value the new value of the '<em>FLAT RATE CIM DAILY</em>' attribute.
319 * @see #getFLAT_RATE_CIM_DAILY()
320 * @generated
321 */
322 void setFLAT_RATE_CIM_DAILY(double value);
323
324 /**
325 * Returns the value of the '<em><b>FLAT RATE CIM MONTHLY</b></em>' attribute.
326 * The default value is <code>"62.0"</code>.
327 * <!-- begin-user-doc -->
328 * <!-- end-user-doc -->
329 * @return the value of the '<em>FLAT RATE CIM MONTHLY</em>' attribute.
330 * @see #setFLAT_RATE_CIM_MONTHLY(double)
331 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIM_MONTHLY()
332 * @model default="62.0" required="true"
333 * @generated
334 */
335 double getFLAT_RATE_CIM_MONTHLY();
336
337 /**
338 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIM_MONTHLY <em>FLAT RATE CIM MONTHLY</em>}' attribute.
339 * <!-- begin-user-doc -->
340 * <!-- end-user-doc -->
341 * @param value the new value of the '<em>FLAT RATE CIM MONTHLY</em>' attribute.
342 * @see #getFLAT_RATE_CIM_MONTHLY()
343 * @generated
344 */
345 void setFLAT_RATE_CIM_MONTHLY(double value);
346
347 /**
348 * Returns the value of the '<em><b>FLAT RATE CIM YEARLY</b></em>' attribute.
349 * The default value is <code>"750.0"</code>.
350 * <!-- begin-user-doc -->
351 * <!-- end-user-doc -->
352 * @return the value of the '<em>FLAT RATE CIM YEARLY</em>' attribute.
353 * @see #setFLAT_RATE_CIM_YEARLY(double)
354 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIM_YEARLY()
355 * @model default="750.0" required="true"
356 * @generated
357 */
358 double getFLAT_RATE_CIM_YEARLY();
359
360 /**
361 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIM_YEARLY <em>FLAT RATE CIM YEARLY</em>}' attribute.
362 * <!-- begin-user-doc -->
363 * <!-- end-user-doc -->
364 * @param value the new value of the '<em>FLAT RATE CIM YEARLY</em>' attribute.
365 * @see #getFLAT_RATE_CIM_YEARLY()
366 * @generated
367 */
368 void setFLAT_RATE_CIM_YEARLY(double value);
369
370 /**
371 * Returns the value of the '<em><b>FLAT RATE CIP DAILY</b></em>' attribute.
372 * The default value is <code>"1.0"</code>.
373 * <!-- begin-user-doc -->
374 * <!-- end-user-doc -->
375 * @return the value of the '<em>FLAT RATE CIP DAILY</em>' attribute.
376 * @see #setFLAT_RATE_CIP_DAILY(double)
377 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIP_DAILY()
378 * @model default="1.0" required="true"
379 * @generated
380 */
381 double getFLAT_RATE_CIP_DAILY();
382
383 /**
384 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIP_DAILY <em>FLAT RATE CIP DAILY</em>}' attribute.
385 * <!-- begin-user-doc -->
386 * <!-- end-user-doc -->
387 * @param value the new value of the '<em>FLAT RATE CIP DAILY</em>' attribute.
388 * @see #getFLAT_RATE_CIP_DAILY()
389 * @generated
390 */
391 void setFLAT_RATE_CIP_DAILY(double value);
392
393 /**
394 * Returns the value of the '<em><b>FLAT RATE CIP MONTHLY</b></em>' attribute.
395 * The default value is <code>"25.0"</code>.
396 * <!-- begin-user-doc -->
397 * <!-- end-user-doc -->
398 * @return the value of the '<em>FLAT RATE CIP MONTHLY</em>' attribute.
399 * @see #setFLAT_RATE_CIP_MONTHLY(double)
400 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIP_MONTHLY()
401 * @model default="25.0" required="true"
402 * @generated
403 */
404 double getFLAT_RATE_CIP_MONTHLY();
405
406 /**
407 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIP_MONTHLY <em>FLAT RATE CIP MONTHLY</em>}' attribute.
408 * <!-- begin-user-doc -->
409 * <!-- end-user-doc -->
410 * @param value the new value of the '<em>FLAT RATE CIP MONTHLY</em>' attribute.
411 * @see #getFLAT_RATE_CIP_MONTHLY()
412 * @generated
413 */
414 void setFLAT_RATE_CIP_MONTHLY(double value);
415
416 /**
417 * Returns the value of the '<em><b>FLAT RATE CIP YEARLY</b></em>' attribute.
418 * The default value is <code>"30.0"</code>.
419 * <!-- begin-user-doc -->
420 * <!-- end-user-doc -->
421 * @return the value of the '<em>FLAT RATE CIP YEARLY</em>' attribute.
422 * @see #setFLAT_RATE_CIP_YEARLY(double)
423 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIP_YEARLY()
424 * @model default="30.0" required="true"
425 * @generated
426 */
427 double getFLAT_RATE_CIP_YEARLY();
428
429 /**
430 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIP_YEARLY <em>FLAT RATE CIP YEARLY</em>}' attribute.
431 * <!-- begin-user-doc -->
432 * <!-- end-user-doc -->
433 * @param value the new value of the '<em>FLAT RATE CIP YEARLY</em>' attribute.
434 * @see #getFLAT_RATE_CIP_YEARLY()
435 * @generated
436 */
437 void setFLAT_RATE_CIP_YEARLY(double value);
438
439 /**
440 * Returns the value of the '<em><b>FLAT RATE CIS DAILY</b></em>' attribute.
441 * The default value is <code>"1.0"</code>.
442 * <!-- begin-user-doc -->
443 * <!-- end-user-doc -->
444 * @return the value of the '<em>FLAT RATE CIS DAILY</em>' attribute.
445 * @see #setFLAT_RATE_CIS_DAILY(double)
446 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIS_DAILY()
447 * @model default="1.0" required="true"
448 * @generated
449 */
450 double getFLAT_RATE_CIS_DAILY();
451
452 /**
453 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIS_DAILY <em>FLAT RATE CIS DAILY</em>}' attribute.
454 * <!-- begin-user-doc -->
455 * <!-- end-user-doc -->
456 * @param value the new value of the '<em>FLAT RATE CIS DAILY</em>' attribute.
457 * @see #getFLAT_RATE_CIS_DAILY()
458 * @generated
459 */
460 void setFLAT_RATE_CIS_DAILY(double value);
461
462 /**
463 * Returns the value of the '<em><b>FLAT RATE CIS MONTHLY</b></em>' attribute.
464 * The default value is <code>"25.0"</code>.
465 * <!-- begin-user-doc -->
466 * <!-- end-user-doc -->
467 * @return the value of the '<em>FLAT RATE CIS MONTHLY</em>' attribute.
468 * @see #setFLAT_RATE_CIS_MONTHLY(double)
469 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIS_MONTHLY()
470 * @model default="25.0" required="true"
471 * @generated
472 */
473 double getFLAT_RATE_CIS_MONTHLY();
474
475 /**
476 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIS_MONTHLY <em>FLAT RATE CIS MONTHLY</em>}' attribute.
477 * <!-- begin-user-doc -->
478 * <!-- end-user-doc -->
479 * @param value the new value of the '<em>FLAT RATE CIS MONTHLY</em>' attribute.
480 * @see #getFLAT_RATE_CIS_MONTHLY()
481 * @generated
482 */
483 void setFLAT_RATE_CIS_MONTHLY(double value);
484
485 /**
486 * Returns the value of the '<em><b>FLAT RATE CIS YEARLY</b></em>' attribute.
487 * The default value is <code>"300.0"</code>.
488 * <!-- begin-user-doc -->
489 * <!-- end-user-doc -->
490 * @return the value of the '<em>FLAT RATE CIS YEARLY</em>' attribute.
491 * @see #setFLAT_RATE_CIS_YEARLY(double)
492 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_CIS_YEARLY()
493 * @model default="300.0" required="true"
494 * @generated
495 */
496 double getFLAT_RATE_CIS_YEARLY();
497
498 /**
499 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_CIS_YEARLY <em>FLAT RATE CIS YEARLY</em>}' attribute.
500 * <!-- begin-user-doc -->
501 * <!-- end-user-doc -->
502 * @param value the new value of the '<em>FLAT RATE CIS YEARLY</em>' attribute.
503 * @see #getFLAT_RATE_CIS_YEARLY()
504 * @generated
505 */
506 void setFLAT_RATE_CIS_YEARLY(double value);
507
508 /**
509 * Returns the value of the '<em><b>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</b></em>' attribute.
510 * The default value is <code>"99.0"</code>.
511 * <!-- begin-user-doc -->
512 * <!-- end-user-doc -->
513 * @return the value of the '<em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>' attribute.
514 * @see #setFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT(double)
515 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT()
516 * @model default="99.0" required="true"
517 * @generated
518 */
519 double getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT();
520
521 /**
522 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT <em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>}' attribute.
523 * <!-- begin-user-doc -->
524 * <!-- end-user-doc -->
525 * @param value the new value of the '<em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>' attribute.
526 * @see #getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT()
527 * @generated
528 */
529 void setFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT(double value);
530
531 /**
532 * Returns the value of the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</b></em>' attribute.
533 * <!-- begin-user-doc -->
534 * <!-- end-user-doc -->
535 * @return the value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>' attribute.
536 * @see #setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS(double)
537 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS()
538 * @model required="true"
539 * @generated
540 */
541 double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS();
542
543 /**
544 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS <em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>}' attribute.
545 * <!-- begin-user-doc -->
546 * <!-- end-user-doc -->
547 * @param value the new value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>' attribute.
548 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS()
549 * @generated
550 */
551 void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS(double value);
552
553 /**
554 * Returns the value of the '<em><b>FLAT RATE FOR MISCELLANEOUS EXPENSE</b></em>' attribute.
555 * <!-- begin-user-doc -->
556 * <!-- end-user-doc -->
557 * @return the value of the '<em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>' attribute.
558 * @see #setFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(double)
559 * @see Taxation.TaxationPackage#getConstants_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
560 * @model required="true"
561 * @generated
562 */
563 double getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
564
565 /**
566 * Sets the value of the '{@link Taxation.Constants#getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}' attribute.
567 * <!-- begin-user-doc -->
568 * <!-- end-user-doc -->
569 * @param value the new value of the '<em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>' attribute.
570 * @see #getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
571 * @generated
572 */
573 void setFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(double value);
574
575 /**
576 * Returns the value of the '<em><b>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</b></em>' attribute.
577 * <!-- begin-user-doc -->
578 * <!-- end-user-doc -->
579 * @return the value of the '<em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>' attribute.
580 * @see #setDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(double)
581 * @see Taxation.TaxationPackage#getConstants_DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
582 * @model required="true"
583 * @generated
584 */
585 double getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
586
587 /**
588 * Sets the value of the '{@link Taxation.Constants#getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}' attribute.
589 * <!-- begin-user-doc -->
590 * <!-- end-user-doc -->
591 * @param value the new value of the '<em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>' attribute.
592 * @see #getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
593 * @generated
594 */
595 void setDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(double value);
596
597 /**
598 * Returns the value of the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</b></em>' attribute.
599 * <!-- begin-user-doc -->
600 * <!-- end-user-doc -->
601 * @return the value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>' attribute.
602 * @see #setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE(double)
603 * @see Taxation.TaxationPackage#getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE()
604 * @model required="true"
605 * @generated
606 */
607 double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE();
608
609 /**
610 * Sets the value of the '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>}' attribute.
611 * <!-- begin-user-doc -->
612 * <!-- end-user-doc -->
613 * @param value the new value of the '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>' attribute.
614 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE()
615 * @generated
616 */
617 void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE(double value);
618
619} // Constants
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Country.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Country.java
new file mode 100644
index 00000000..def7923f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Country.java
@@ -0,0 +1,301 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Country</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getCountry()
17 * @model
18 * @generated
19 */
20public enum Country implements Enumerator {
21 /**
22 * The '<em><b>ZZ</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #ZZ_VALUE
26 * @generated
27 * @ordered
28 */
29 ZZ(0, "ZZ", "ZZ"),
30
31 /**
32 * The '<em><b>FF</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #FF_VALUE
36 * @generated
37 * @ordered
38 */
39 FF(1, "FF", "FF"),
40
41 /**
42 * The '<em><b>BB</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #BB_VALUE
46 * @generated
47 * @ordered
48 */
49 BB(2, "BB", "BB"),
50
51 /**
52 * The '<em><b>DD</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #DD_VALUE
56 * @generated
57 * @ordered
58 */
59 DD(3, "DD", "DD"),
60
61 /**
62 * The '<em><b>NN</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #NN_VALUE
66 * @generated
67 * @ordered
68 */
69 NN(4, "NN", "NN"),
70
71 /**
72 * The '<em><b>OTHER</b></em>' literal object.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #OTHER_VALUE
76 * @generated
77 * @ordered
78 */
79 OTHER(5, "OTHER", "OTHER");
80
81 /**
82 * The '<em><b>ZZ</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #ZZ
86 * @model
87 * @generated
88 * @ordered
89 */
90 public static final int ZZ_VALUE = 0;
91
92 /**
93 * The '<em><b>FF</b></em>' literal value.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @see #FF
97 * @model
98 * @generated
99 * @ordered
100 */
101 public static final int FF_VALUE = 1;
102
103 /**
104 * The '<em><b>BB</b></em>' literal value.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @see #BB
108 * @model
109 * @generated
110 * @ordered
111 */
112 public static final int BB_VALUE = 2;
113
114 /**
115 * The '<em><b>DD</b></em>' literal value.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @see #DD
119 * @model
120 * @generated
121 * @ordered
122 */
123 public static final int DD_VALUE = 3;
124
125 /**
126 * The '<em><b>NN</b></em>' literal value.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @see #NN
130 * @model
131 * @generated
132 * @ordered
133 */
134 public static final int NN_VALUE = 4;
135
136 /**
137 * The '<em><b>OTHER</b></em>' literal value.
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @see #OTHER
141 * @model
142 * @generated
143 * @ordered
144 */
145 public static final int OTHER_VALUE = 5;
146
147 /**
148 * An array of all the '<em><b>Country</b></em>' enumerators.
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 private static final Country[] VALUES_ARRAY =
154 new Country[] {
155 ZZ,
156 FF,
157 BB,
158 DD,
159 NN,
160 OTHER,
161 };
162
163 /**
164 * A public read-only list of all the '<em><b>Country</b></em>' enumerators.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 public static final List<Country> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
170
171 /**
172 * Returns the '<em><b>Country</b></em>' literal with the specified literal value.
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @param literal the literal.
176 * @return the matching enumerator or <code>null</code>.
177 * @generated
178 */
179 public static Country get(String literal) {
180 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
181 Country result = VALUES_ARRAY[i];
182 if (result.toString().equals(literal)) {
183 return result;
184 }
185 }
186 return null;
187 }
188
189 /**
190 * Returns the '<em><b>Country</b></em>' literal with the specified name.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @param name the name.
194 * @return the matching enumerator or <code>null</code>.
195 * @generated
196 */
197 public static Country getByName(String name) {
198 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
199 Country result = VALUES_ARRAY[i];
200 if (result.getName().equals(name)) {
201 return result;
202 }
203 }
204 return null;
205 }
206
207 /**
208 * Returns the '<em><b>Country</b></em>' literal with the specified integer value.
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @param value the integer value.
212 * @return the matching enumerator or <code>null</code>.
213 * @generated
214 */
215 public static Country get(int value) {
216 switch (value) {
217 case ZZ_VALUE: return ZZ;
218 case FF_VALUE: return FF;
219 case BB_VALUE: return BB;
220 case DD_VALUE: return DD;
221 case NN_VALUE: return NN;
222 case OTHER_VALUE: return OTHER;
223 }
224 return null;
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 private final int value;
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 private final String name;
240
241 /**
242 * <!-- begin-user-doc -->
243 * <!-- end-user-doc -->
244 * @generated
245 */
246 private final String literal;
247
248 /**
249 * Only this class can construct instances.
250 * <!-- begin-user-doc -->
251 * <!-- end-user-doc -->
252 * @generated
253 */
254 private Country(int value, String name, String literal) {
255 this.value = value;
256 this.name = name;
257 this.literal = literal;
258 }
259
260 /**
261 * <!-- begin-user-doc -->
262 * <!-- end-user-doc -->
263 * @generated
264 */
265 @Override
266 public int getValue() {
267 return value;
268 }
269
270 /**
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 */
275 @Override
276 public String getName() {
277 return name;
278 }
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 @Override
286 public String getLiteral() {
287 return literal;
288 }
289
290 /**
291 * Returns the literal value of the enumerator, which is its string representation.
292 * <!-- begin-user-doc -->
293 * <!-- end-user-doc -->
294 * @generated
295 */
296 @Override
297 public String toString() {
298 return literal;
299 }
300
301} //Country
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS.java
new file mode 100644
index 00000000..2c80c6eb
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS.java
@@ -0,0 +1,69 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>DS</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.DS#getMaximum_deductible_amount <em>Maximum deductible amount</em>}</li>
17 * <li>{@link Taxation.DS#getId3 <em>Id3</em>}</li>
18 * </ul>
19 *
20 * @see Taxation.TaxationPackage#getDS()
21 * @model
22 * @generated
23 */
24public interface DS extends EObject {
25 /**
26 * Returns the value of the '<em><b>Maximum deductible amount</b></em>' attribute.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @return the value of the '<em>Maximum deductible amount</em>' attribute.
30 * @see #setMaximum_deductible_amount(double)
31 * @see Taxation.TaxationPackage#getDS_Maximum_deductible_amount()
32 * @model required="true"
33 * @generated
34 */
35 double getMaximum_deductible_amount();
36
37 /**
38 * Sets the value of the '{@link Taxation.DS#getMaximum_deductible_amount <em>Maximum deductible amount</em>}' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @param value the new value of the '<em>Maximum deductible amount</em>' attribute.
42 * @see #getMaximum_deductible_amount()
43 * @generated
44 */
45 void setMaximum_deductible_amount(double value);
46
47 /**
48 * Returns the value of the '<em><b>Id3</b></em>' attribute.
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @return the value of the '<em>Id3</em>' attribute.
52 * @see #setId3(String)
53 * @see Taxation.TaxationPackage#getDS_Id3()
54 * @model id="true" required="true" ordered="false"
55 * @generated
56 */
57 String getId3();
58
59 /**
60 * Sets the value of the '{@link Taxation.DS#getId3 <em>Id3</em>}' attribute.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @param value the new value of the '<em>Id3</em>' attribute.
64 * @see #getId3()
65 * @generated
66 */
67 void setId3(String value);
68
69} // DS
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Donation.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Donation.java
new file mode 100644
index 00000000..b33315e5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Donation.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>DS for Donation</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getDS_for_Donation()
13 * @model
14 * @generated
15 */
16public interface DS_for_Donation extends DS {
17} // DS_for_Donation
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Health_and_Pension_Insurance.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Health_and_Pension_Insurance.java
new file mode 100644
index 00000000..75c8588c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Health_and_Pension_Insurance.java
@@ -0,0 +1,48 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>DS for Health and Pension Insurance</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.DS_for_Health_and_Pension_Insurance#getInsurance_category <em>Insurance category</em>}</li>
16 * </ul>
17 *
18 * @see Taxation.TaxationPackage#getDS_for_Health_and_Pension_Insurance()
19 * @model
20 * @generated
21 */
22public interface DS_for_Health_and_Pension_Insurance extends DS {
23 /**
24 * Returns the value of the '<em><b>Insurance category</b></em>' attribute.
25 * The literals are from the enumeration {@link Taxation.Category_of_Health_and_Pension_Insurances}.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Insurance category</em>' attribute.
29 * @see Taxation.Category_of_Health_and_Pension_Insurances
30 * @see #setInsurance_category(Category_of_Health_and_Pension_Insurances)
31 * @see Taxation.TaxationPackage#getDS_for_Health_and_Pension_Insurance_Insurance_category()
32 * @model required="true"
33 * @generated
34 */
35 Category_of_Health_and_Pension_Insurances getInsurance_category();
36
37 /**
38 * Sets the value of the '{@link Taxation.DS_for_Health_and_Pension_Insurance#getInsurance_category <em>Insurance category</em>}' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @param value the new value of the '<em>Insurance category</em>' attribute.
42 * @see Taxation.Category_of_Health_and_Pension_Insurances
43 * @see #getInsurance_category()
44 * @generated
45 */
46 void setInsurance_category(Category_of_Health_and_Pension_Insurances value);
47
48} // DS_for_Health_and_Pension_Insurance
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Interest_Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Interest_Expense.java
new file mode 100644
index 00000000..bed2eab8
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Interest_Expense.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>DS for Interest Expense</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getDS_for_Interest_Expense()
13 * @model
14 * @generated
15 */
16public interface DS_for_Interest_Expense extends DS {
17} // DS_for_Interest_Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Loss_Carryforward.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Loss_Carryforward.java
new file mode 100644
index 00000000..d39c4d7f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Loss_Carryforward.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>DS for Loss Carryforward</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getDS_for_Loss_Carryforward()
13 * @model
14 * @generated
15 */
16public interface DS_for_Loss_Carryforward extends DS {
17} // DS_for_Loss_Carryforward
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Permanent_Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Permanent_Expense.java
new file mode 100644
index 00000000..afc9441b
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Permanent_Expense.java
@@ -0,0 +1,48 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>DS for Permanent Expense</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.DS_for_Permanent_Expense#getPermanent_expense_category <em>Permanent expense category</em>}</li>
16 * </ul>
17 *
18 * @see Taxation.TaxationPackage#getDS_for_Permanent_Expense()
19 * @model
20 * @generated
21 */
22public interface DS_for_Permanent_Expense extends DS {
23 /**
24 * Returns the value of the '<em><b>Permanent expense category</b></em>' attribute.
25 * The literals are from the enumeration {@link Taxation.Category_of_Permanent_Expense}.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Permanent expense category</em>' attribute.
29 * @see Taxation.Category_of_Permanent_Expense
30 * @see #setPermanent_expense_category(Category_of_Permanent_Expense)
31 * @see Taxation.TaxationPackage#getDS_for_Permanent_Expense_Permanent_expense_category()
32 * @model required="true"
33 * @generated
34 */
35 Category_of_Permanent_Expense getPermanent_expense_category();
36
37 /**
38 * Sets the value of the '{@link Taxation.DS_for_Permanent_Expense#getPermanent_expense_category <em>Permanent expense category</em>}' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @param value the new value of the '<em>Permanent expense category</em>' attribute.
42 * @see Taxation.Category_of_Permanent_Expense
43 * @see #getPermanent_expense_category()
44 * @generated
45 */
46 void setPermanent_expense_category(Category_of_Permanent_Expense value);
47
48} // DS_for_Permanent_Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Private_Insurance_and_Plan.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Private_Insurance_and_Plan.java
new file mode 100644
index 00000000..c72def81
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/DS_for_Private_Insurance_and_Plan.java
@@ -0,0 +1,117 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>DS for Private Insurance and Plan</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.DS_for_Private_Insurance_and_Plan#getPrivate_insurance_and_plan_category <em>Private insurance and plan category</em>}</li>
16 * <li>{@link Taxation.DS_for_Private_Insurance_and_Plan#getIncrease_for_life_insurance <em>Increase for life insurance</em>}</li>
17 * <li>{@link Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_private_insurance <em>Maximum deductible amount for private insurance</em>}</li>
18 * <li>{@link Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_old_age_pension_plan <em>Maximum deductible amount for old age pension plan</em>}</li>
19 * </ul>
20 *
21 * @see Taxation.TaxationPackage#getDS_for_Private_Insurance_and_Plan()
22 * @model
23 * @generated
24 */
25public interface DS_for_Private_Insurance_and_Plan extends DS {
26 /**
27 * Returns the value of the '<em><b>Private insurance and plan category</b></em>' attribute.
28 * The literals are from the enumeration {@link Taxation.Category_of_Private_Insurance_and_Plan}.
29 * <!-- begin-user-doc -->
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Private insurance and plan category</em>' attribute.
32 * @see Taxation.Category_of_Private_Insurance_and_Plan
33 * @see #setPrivate_insurance_and_plan_category(Category_of_Private_Insurance_and_Plan)
34 * @see Taxation.TaxationPackage#getDS_for_Private_Insurance_and_Plan_Private_insurance_and_plan_category()
35 * @model required="true"
36 * @generated
37 */
38 Category_of_Private_Insurance_and_Plan getPrivate_insurance_and_plan_category();
39
40 /**
41 * Sets the value of the '{@link Taxation.DS_for_Private_Insurance_and_Plan#getPrivate_insurance_and_plan_category <em>Private insurance and plan category</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>Private insurance and plan category</em>' attribute.
45 * @see Taxation.Category_of_Private_Insurance_and_Plan
46 * @see #getPrivate_insurance_and_plan_category()
47 * @generated
48 */
49 void setPrivate_insurance_and_plan_category(Category_of_Private_Insurance_and_Plan value);
50
51 /**
52 * Returns the value of the '<em><b>Increase for life insurance</b></em>' attribute.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return the value of the '<em>Increase for life insurance</em>' attribute.
56 * @see #setIncrease_for_life_insurance(double)
57 * @see Taxation.TaxationPackage#getDS_for_Private_Insurance_and_Plan_Increase_for_life_insurance()
58 * @model required="true" derived="true"
59 * @generated
60 */
61 double getIncrease_for_life_insurance();
62
63 /**
64 * Sets the value of the '{@link Taxation.DS_for_Private_Insurance_and_Plan#getIncrease_for_life_insurance <em>Increase for life insurance</em>}' attribute.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @param value the new value of the '<em>Increase for life insurance</em>' attribute.
68 * @see #getIncrease_for_life_insurance()
69 * @generated
70 */
71 void setIncrease_for_life_insurance(double value);
72
73 /**
74 * Returns the value of the '<em><b>Maximum deductible amount for private insurance</b></em>' attribute.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @return the value of the '<em>Maximum deductible amount for private insurance</em>' attribute.
78 * @see #setMaximum_deductible_amount_for_private_insurance(double)
79 * @see Taxation.TaxationPackage#getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_private_insurance()
80 * @model required="true" derived="true"
81 * @generated
82 */
83 double getMaximum_deductible_amount_for_private_insurance();
84
85 /**
86 * Sets the value of the '{@link Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_private_insurance <em>Maximum deductible amount for private insurance</em>}' attribute.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @param value the new value of the '<em>Maximum deductible amount for private insurance</em>' attribute.
90 * @see #getMaximum_deductible_amount_for_private_insurance()
91 * @generated
92 */
93 void setMaximum_deductible_amount_for_private_insurance(double value);
94
95 /**
96 * Returns the value of the '<em><b>Maximum deductible amount for old age pension plan</b></em>' attribute.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @return the value of the '<em>Maximum deductible amount for old age pension plan</em>' attribute.
100 * @see #setMaximum_deductible_amount_for_old_age_pension_plan(double)
101 * @see Taxation.TaxationPackage#getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_old_age_pension_plan()
102 * @model required="true" derived="true"
103 * @generated
104 */
105 double getMaximum_deductible_amount_for_old_age_pension_plan();
106
107 /**
108 * Sets the value of the '{@link Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_old_age_pension_plan <em>Maximum deductible amount for old age pension plan</em>}' attribute.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @param value the new value of the '<em>Maximum deductible amount for old age pension plan</em>' attribute.
112 * @see #getMaximum_deductible_amount_for_old_age_pension_plan()
113 * @generated
114 */
115 void setMaximum_deductible_amount_for_old_age_pension_plan(double value);
116
117} // DS_for_Private_Insurance_and_Plan
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent.java
new file mode 100644
index 00000000..f21e9d9a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent.java
@@ -0,0 +1,188 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Dependent</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Dependent#getDependent_type <em>Dependent type</em>}</li>
17 * <li>{@link Taxation.Dependent#getResponsible_person <em>Responsible person</em>}</li>
18 * <li>{@link Taxation.Dependent#isContinued_studies <em>Continued studies</em>}</li>
19 * <li>{@link Taxation.Dependent#getAllowances <em>Allowances</em>}</li>
20 * <li>{@link Taxation.Dependent#getHousehold <em>Household</em>}</li>
21 * <li>{@link Taxation.Dependent#getFrom_agent <em>From agent</em>}</li>
22 * <li>{@link Taxation.Dependent#getExpense <em>Expense</em>}</li>
23 * </ul>
24 *
25 * @see Taxation.TaxationPackage#getDependent()
26 * @model
27 * @generated
28 */
29public interface Dependent extends Physical_Person {
30 /**
31 * Returns the value of the '<em><b>Dependent type</b></em>' attribute.
32 * The literals are from the enumeration {@link Taxation.Dependent_Type}.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Dependent type</em>' attribute.
36 * @see Taxation.Dependent_Type
37 * @see #setDependent_type(Dependent_Type)
38 * @see Taxation.TaxationPackage#getDependent_Dependent_type()
39 * @model required="true"
40 * @generated
41 */
42 Dependent_Type getDependent_type();
43
44 /**
45 * Sets the value of the '{@link Taxation.Dependent#getDependent_type <em>Dependent type</em>}' attribute.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @param value the new value of the '<em>Dependent type</em>' attribute.
49 * @see Taxation.Dependent_Type
50 * @see #getDependent_type()
51 * @generated
52 */
53 void setDependent_type(Dependent_Type value);
54
55 /**
56 * Returns the value of the '<em><b>Responsible person</b></em>' container reference.
57 * It is bidirectional and its opposite is '{@link Taxation.Tax_Payer#getDependents <em>Dependents</em>}'.
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @return the value of the '<em>Responsible person</em>' container reference.
61 * @see #setResponsible_person(Tax_Payer)
62 * @see Taxation.TaxationPackage#getDependent_Responsible_person()
63 * @see Taxation.Tax_Payer#getDependents
64 * @model opposite="dependents" transient="false"
65 * @generated
66 */
67 Tax_Payer getResponsible_person();
68
69 /**
70 * Sets the value of the '{@link Taxation.Dependent#getResponsible_person <em>Responsible person</em>}' container reference.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @param value the new value of the '<em>Responsible person</em>' container reference.
74 * @see #getResponsible_person()
75 * @generated
76 */
77 void setResponsible_person(Tax_Payer value);
78
79 /**
80 * Returns the value of the '<em><b>Continued studies</b></em>' attribute.
81 * The default value is <code>"false"</code>.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @return the value of the '<em>Continued studies</em>' attribute.
85 * @see #setContinued_studies(boolean)
86 * @see Taxation.TaxationPackage#getDependent_Continued_studies()
87 * @model default="false" required="true"
88 * @generated
89 */
90 boolean isContinued_studies();
91
92 /**
93 * Sets the value of the '{@link Taxation.Dependent#isContinued_studies <em>Continued studies</em>}' attribute.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @param value the new value of the '<em>Continued studies</em>' attribute.
97 * @see #isContinued_studies()
98 * @generated
99 */
100 void setContinued_studies(boolean value);
101
102 /**
103 * Returns the value of the '<em><b>Allowances</b></em>' containment reference.
104 * It is bidirectional and its opposite is '{@link Taxation.External_Allowance#getPerson <em>Person</em>}'.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @return the value of the '<em>Allowances</em>' containment reference.
108 * @see #setAllowances(External_Allowance)
109 * @see Taxation.TaxationPackage#getDependent_Allowances()
110 * @see Taxation.External_Allowance#getPerson
111 * @model opposite="person" containment="true" ordered="false"
112 * @generated
113 */
114 External_Allowance getAllowances();
115
116 /**
117 * Sets the value of the '{@link Taxation.Dependent#getAllowances <em>Allowances</em>}' containment reference.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @param value the new value of the '<em>Allowances</em>' containment reference.
121 * @see #getAllowances()
122 * @generated
123 */
124 void setAllowances(External_Allowance value);
125
126 /**
127 * Returns the value of the '<em><b>Household</b></em>' container reference.
128 * It is bidirectional and its opposite is '{@link Taxation.Household#getChildren <em>Children</em>}'.
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @return the value of the '<em>Household</em>' container reference.
132 * @see #setHousehold(Household)
133 * @see Taxation.TaxationPackage#getDependent_Household()
134 * @see Taxation.Household#getChildren
135 * @model opposite="children" transient="false" ordered="false"
136 * @generated
137 */
138 Household getHousehold();
139
140 /**
141 * Sets the value of the '{@link Taxation.Dependent#getHousehold <em>Household</em>}' container reference.
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @param value the new value of the '<em>Household</em>' container reference.
145 * @see #getHousehold()
146 * @generated
147 */
148 void setHousehold(Household value);
149
150 /**
151 * Returns the value of the '<em><b>From agent</b></em>' reference.
152 * It is bidirectional and its opposite is '{@link Taxation.FromAgent#getDependent <em>Dependent</em>}'.
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @return the value of the '<em>From agent</em>' reference.
156 * @see #setFrom_agent(FromAgent)
157 * @see Taxation.TaxationPackage#getDependent_From_agent()
158 * @see Taxation.FromAgent#getDependent
159 * @model opposite="dependent" ordered="false"
160 * @generated
161 */
162 FromAgent getFrom_agent();
163
164 /**
165 * Sets the value of the '{@link Taxation.Dependent#getFrom_agent <em>From agent</em>}' reference.
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @param value the new value of the '<em>From agent</em>' reference.
169 * @see #getFrom_agent()
170 * @generated
171 */
172 void setFrom_agent(FromAgent value);
173
174 /**
175 * Returns the value of the '<em><b>Expense</b></em>' reference list.
176 * The list contents are of type {@link Taxation.Expense}.
177 * It is bidirectional and its opposite is '{@link Taxation.Expense#getDependent <em>Dependent</em>}'.
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @return the value of the '<em>Expense</em>' reference list.
181 * @see Taxation.TaxationPackage#getDependent_Expense()
182 * @see Taxation.Expense#getDependent
183 * @model opposite="dependent" ordered="false"
184 * @generated
185 */
186 EList<Expense> getExpense();
187
188} // Dependent
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent_Type.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent_Type.java
new file mode 100644
index 00000000..40232e82
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Dependent_Type.java
@@ -0,0 +1,278 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Dependent Type</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getDependent_Type()
17 * @model
18 * @generated
19 */
20public enum Dependent_Type implements Enumerator {
21 /**
22 * The '<em><b>CHILD</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #CHILD_VALUE
26 * @generated
27 * @ordered
28 */
29 CHILD(0, "CHILD", "CHILD"),
30
31 /**
32 * The '<em><b>SPOUSE</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #SPOUSE_VALUE
36 * @generated
37 * @ordered
38 */
39 SPOUSE(1, "SPOUSE", "SPOUSE"),
40
41 /**
42 * The '<em><b>RELATIVE</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #RELATIVE_VALUE
46 * @generated
47 * @ordered
48 */
49 RELATIVE(2, "RELATIVE", "RELATIVE"),
50
51 /**
52 * The '<em><b>OTHER FAMILY MEMBER</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #OTHER_FAMILY_MEMBER_VALUE
56 * @generated
57 * @ordered
58 */
59 OTHER_FAMILY_MEMBER(3, "OTHER_FAMILY_MEMBER", "OTHER_FAMILY_MEMBER"),
60
61 /**
62 * The '<em><b>NOT OWN CHILD</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #NOT_OWN_CHILD_VALUE
66 * @generated
67 * @ordered
68 */
69 NOT_OWN_CHILD(4, "NOT_OWN_CHILD", "NOT_OWN_CHILD");
70
71 /**
72 * The '<em><b>CHILD</b></em>' literal value.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #CHILD
76 * @model
77 * @generated
78 * @ordered
79 */
80 public static final int CHILD_VALUE = 0;
81
82 /**
83 * The '<em><b>SPOUSE</b></em>' literal value.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @see #SPOUSE
87 * @model
88 * @generated
89 * @ordered
90 */
91 public static final int SPOUSE_VALUE = 1;
92
93 /**
94 * The '<em><b>RELATIVE</b></em>' literal value.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #RELATIVE
98 * @model
99 * @generated
100 * @ordered
101 */
102 public static final int RELATIVE_VALUE = 2;
103
104 /**
105 * The '<em><b>OTHER FAMILY MEMBER</b></em>' literal value.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @see #OTHER_FAMILY_MEMBER
109 * @model
110 * @generated
111 * @ordered
112 */
113 public static final int OTHER_FAMILY_MEMBER_VALUE = 3;
114
115 /**
116 * The '<em><b>NOT OWN CHILD</b></em>' literal value.
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @see #NOT_OWN_CHILD
120 * @model
121 * @generated
122 * @ordered
123 */
124 public static final int NOT_OWN_CHILD_VALUE = 4;
125
126 /**
127 * An array of all the '<em><b>Dependent Type</b></em>' enumerators.
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 */
132 private static final Dependent_Type[] VALUES_ARRAY =
133 new Dependent_Type[] {
134 CHILD,
135 SPOUSE,
136 RELATIVE,
137 OTHER_FAMILY_MEMBER,
138 NOT_OWN_CHILD,
139 };
140
141 /**
142 * A public read-only list of all the '<em><b>Dependent Type</b></em>' enumerators.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 public static final List<Dependent_Type> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
148
149 /**
150 * Returns the '<em><b>Dependent Type</b></em>' literal with the specified literal value.
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @param literal the literal.
154 * @return the matching enumerator or <code>null</code>.
155 * @generated
156 */
157 public static Dependent_Type get(String literal) {
158 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
159 Dependent_Type result = VALUES_ARRAY[i];
160 if (result.toString().equals(literal)) {
161 return result;
162 }
163 }
164 return null;
165 }
166
167 /**
168 * Returns the '<em><b>Dependent Type</b></em>' literal with the specified name.
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @param name the name.
172 * @return the matching enumerator or <code>null</code>.
173 * @generated
174 */
175 public static Dependent_Type getByName(String name) {
176 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
177 Dependent_Type result = VALUES_ARRAY[i];
178 if (result.getName().equals(name)) {
179 return result;
180 }
181 }
182 return null;
183 }
184
185 /**
186 * Returns the '<em><b>Dependent Type</b></em>' literal with the specified integer value.
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @param value the integer value.
190 * @return the matching enumerator or <code>null</code>.
191 * @generated
192 */
193 public static Dependent_Type get(int value) {
194 switch (value) {
195 case CHILD_VALUE: return CHILD;
196 case SPOUSE_VALUE: return SPOUSE;
197 case RELATIVE_VALUE: return RELATIVE;
198 case OTHER_FAMILY_MEMBER_VALUE: return OTHER_FAMILY_MEMBER;
199 case NOT_OWN_CHILD_VALUE: return NOT_OWN_CHILD;
200 }
201 return null;
202 }
203
204 /**
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @generated
208 */
209 private final int value;
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 private final String name;
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 private final String literal;
224
225 /**
226 * Only this class can construct instances.
227 * <!-- begin-user-doc -->
228 * <!-- end-user-doc -->
229 * @generated
230 */
231 private Dependent_Type(int value, String name, String literal) {
232 this.value = value;
233 this.name = name;
234 this.literal = literal;
235 }
236
237 /**
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 */
242 @Override
243 public int getValue() {
244 return value;
245 }
246
247 /**
248 * <!-- begin-user-doc -->
249 * <!-- end-user-doc -->
250 * @generated
251 */
252 @Override
253 public String getName() {
254 return name;
255 }
256
257 /**
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 */
262 @Override
263 public String getLiteral() {
264 return literal;
265 }
266
267 /**
268 * Returns the literal value of the enumerator, which is its string representation.
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @generated
272 */
273 @Override
274 public String toString() {
275 return literal;
276 }
277
278} //Dependent_Type
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Disability_Types.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Disability_Types.java
new file mode 100644
index 00000000..fc7fd273
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Disability_Types.java
@@ -0,0 +1,347 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Disability Types</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getDisability_Types()
17 * @model
18 * @generated
19 */
20public enum Disability_Types implements Enumerator {
21 /**
22 * The '<em><b>Beug</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #BEUG_VALUE
26 * @generated
27 * @ordered
28 */
29 BEUG(0, "beug", "beug"),
30
31 /**
32 * The '<em><b>NONE</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #NONE_VALUE
36 * @generated
37 * @ordered
38 */
39 NONE(1, "NONE", "NONE"),
40
41 /**
42 * The '<em><b>A</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #A_VALUE
46 * @generated
47 * @ordered
48 */
49 A(2, "A", "A"),
50
51 /**
52 * The '<em><b>B</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #B_VALUE
56 * @generated
57 * @ordered
58 */
59 B(3, "B", "B"),
60
61 /**
62 * The '<em><b>C</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #C_VALUE
66 * @generated
67 * @ordered
68 */
69 C(4, "C", "C"),
70
71 /**
72 * The '<em><b>D</b></em>' literal object.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #D_VALUE
76 * @generated
77 * @ordered
78 */
79 D(5, "D", "D"),
80
81 /**
82 * The '<em><b>E</b></em>' literal object.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #E_VALUE
86 * @generated
87 * @ordered
88 */
89 E(6, "E", "E"),
90
91 /**
92 * The '<em><b>OTHER</b></em>' literal object.
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @see #OTHER_VALUE
96 * @generated
97 * @ordered
98 */
99 OTHER(7, "OTHER", "OTHER");
100
101 /**
102 * The '<em><b>Beug</b></em>' literal value.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @see #BEUG
106 * @model name="beug"
107 * @generated
108 * @ordered
109 */
110 public static final int BEUG_VALUE = 0;
111
112 /**
113 * The '<em><b>NONE</b></em>' literal value.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @see #NONE
117 * @model
118 * @generated
119 * @ordered
120 */
121 public static final int NONE_VALUE = 1;
122
123 /**
124 * The '<em><b>A</b></em>' literal value.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @see #A
128 * @model
129 * @generated
130 * @ordered
131 */
132 public static final int A_VALUE = 2;
133
134 /**
135 * The '<em><b>B</b></em>' literal value.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @see #B
139 * @model
140 * @generated
141 * @ordered
142 */
143 public static final int B_VALUE = 3;
144
145 /**
146 * The '<em><b>C</b></em>' literal value.
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @see #C
150 * @model
151 * @generated
152 * @ordered
153 */
154 public static final int C_VALUE = 4;
155
156 /**
157 * The '<em><b>D</b></em>' literal value.
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @see #D
161 * @model
162 * @generated
163 * @ordered
164 */
165 public static final int D_VALUE = 5;
166
167 /**
168 * The '<em><b>E</b></em>' literal value.
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @see #E
172 * @model
173 * @generated
174 * @ordered
175 */
176 public static final int E_VALUE = 6;
177
178 /**
179 * The '<em><b>OTHER</b></em>' literal value.
180 * <!-- begin-user-doc -->
181 * <!-- end-user-doc -->
182 * @see #OTHER
183 * @model
184 * @generated
185 * @ordered
186 */
187 public static final int OTHER_VALUE = 7;
188
189 /**
190 * An array of all the '<em><b>Disability Types</b></em>' enumerators.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 private static final Disability_Types[] VALUES_ARRAY =
196 new Disability_Types[] {
197 BEUG,
198 NONE,
199 A,
200 B,
201 C,
202 D,
203 E,
204 OTHER,
205 };
206
207 /**
208 * A public read-only list of all the '<em><b>Disability Types</b></em>' enumerators.
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @generated
212 */
213 public static final List<Disability_Types> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
214
215 /**
216 * Returns the '<em><b>Disability Types</b></em>' literal with the specified literal value.
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @param literal the literal.
220 * @return the matching enumerator or <code>null</code>.
221 * @generated
222 */
223 public static Disability_Types get(String literal) {
224 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
225 Disability_Types result = VALUES_ARRAY[i];
226 if (result.toString().equals(literal)) {
227 return result;
228 }
229 }
230 return null;
231 }
232
233 /**
234 * Returns the '<em><b>Disability Types</b></em>' literal with the specified name.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @param name the name.
238 * @return the matching enumerator or <code>null</code>.
239 * @generated
240 */
241 public static Disability_Types getByName(String name) {
242 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
243 Disability_Types result = VALUES_ARRAY[i];
244 if (result.getName().equals(name)) {
245 return result;
246 }
247 }
248 return null;
249 }
250
251 /**
252 * Returns the '<em><b>Disability Types</b></em>' literal with the specified integer value.
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @param value the integer value.
256 * @return the matching enumerator or <code>null</code>.
257 * @generated
258 */
259 public static Disability_Types get(int value) {
260 switch (value) {
261 case BEUG_VALUE: return BEUG;
262 case NONE_VALUE: return NONE;
263 case A_VALUE: return A;
264 case B_VALUE: return B;
265 case C_VALUE: return C;
266 case D_VALUE: return D;
267 case E_VALUE: return E;
268 case OTHER_VALUE: return OTHER;
269 }
270 return null;
271 }
272
273 /**
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @generated
277 */
278 private final int value;
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 private final String name;
286
287 /**
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 private final String literal;
293
294 /**
295 * Only this class can construct instances.
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @generated
299 */
300 private Disability_Types(int value, String name, String literal) {
301 this.value = value;
302 this.name = name;
303 this.literal = literal;
304 }
305
306 /**
307 * <!-- begin-user-doc -->
308 * <!-- end-user-doc -->
309 * @generated
310 */
311 @Override
312 public int getValue() {
313 return value;
314 }
315
316 /**
317 * <!-- begin-user-doc -->
318 * <!-- end-user-doc -->
319 * @generated
320 */
321 @Override
322 public String getName() {
323 return name;
324 }
325
326 /**
327 * <!-- begin-user-doc -->
328 * <!-- end-user-doc -->
329 * @generated
330 */
331 @Override
332 public String getLiteral() {
333 return literal;
334 }
335
336 /**
337 * Returns the literal value of the enumerator, which is its string representation.
338 * <!-- begin-user-doc -->
339 * <!-- end-user-doc -->
340 * @generated
341 */
342 @Override
343 public String toString() {
344 return literal;
345 }
346
347} //Disability_Types
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Donation.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Donation.java
new file mode 100644
index 00000000..343238d9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Donation.java
@@ -0,0 +1,92 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Donation</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Donation#getBeneficiary1 <em>Beneficiary1</em>}</li>
16 * <li>{@link Taxation.Donation#isIs_beneficiary_eligible <em>Is beneficiary eligible</em>}</li>
17 * <li>{@link Taxation.Donation#isIs_donation_reported <em>Is donation reported</em>}</li>
18 * </ul>
19 *
20 * @see Taxation.TaxationPackage#getDonation()
21 * @model
22 * @generated
23 */
24public interface Donation extends Special_Expense_DS {
25 /**
26 * Returns the value of the '<em><b>Beneficiary1</b></em>' attribute.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @return the value of the '<em>Beneficiary1</em>' attribute.
30 * @see #setBeneficiary1(String)
31 * @see Taxation.TaxationPackage#getDonation_Beneficiary1()
32 * @model required="true"
33 * @generated
34 */
35 String getBeneficiary1();
36
37 /**
38 * Sets the value of the '{@link Taxation.Donation#getBeneficiary1 <em>Beneficiary1</em>}' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @param value the new value of the '<em>Beneficiary1</em>' attribute.
42 * @see #getBeneficiary1()
43 * @generated
44 */
45 void setBeneficiary1(String value);
46
47 /**
48 * Returns the value of the '<em><b>Is beneficiary eligible</b></em>' attribute.
49 * The default value is <code>"false"</code>.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @return the value of the '<em>Is beneficiary eligible</em>' attribute.
53 * @see #setIs_beneficiary_eligible(boolean)
54 * @see Taxation.TaxationPackage#getDonation_Is_beneficiary_eligible()
55 * @model default="false" required="true" derived="true"
56 * @generated
57 */
58 boolean isIs_beneficiary_eligible();
59
60 /**
61 * Sets the value of the '{@link Taxation.Donation#isIs_beneficiary_eligible <em>Is beneficiary eligible</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @param value the new value of the '<em>Is beneficiary eligible</em>' attribute.
65 * @see #isIs_beneficiary_eligible()
66 * @generated
67 */
68 void setIs_beneficiary_eligible(boolean value);
69
70 /**
71 * Returns the value of the '<em><b>Is donation reported</b></em>' attribute.
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @return the value of the '<em>Is donation reported</em>' attribute.
75 * @see #setIs_donation_reported(boolean)
76 * @see Taxation.TaxationPackage#getDonation_Is_donation_reported()
77 * @model required="true"
78 * @generated
79 */
80 boolean isIs_donation_reported();
81
82 /**
83 * Sets the value of the '{@link Taxation.Donation#isIs_donation_reported <em>Is donation reported</em>}' attribute.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @param value the new value of the '<em>Is donation reported</em>' attribute.
87 * @see #isIs_donation_reported()
88 * @generated
89 */
90 void setIs_donation_reported(boolean value);
91
92} // Donation
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Employment_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Employment_Income.java
new file mode 100644
index 00000000..4ab85ac1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Employment_Income.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Employment Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getEmployment_Income()
13 * @model
14 * @generated
15 */
16public interface Employment_Income extends Income_Type {
17} // Employment_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense.java
new file mode 100644
index 00000000..8d650d83
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense.java
@@ -0,0 +1,196 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Expense</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Expense#getDeclared_amount <em>Declared amount</em>}</li>
17 * <li>{@link Taxation.Expense#getExpense_purpose <em>Expense purpose</em>}</li>
18 * <li>{@link Taxation.Expense#getDependent <em>Dependent</em>}</li>
19 * <li>{@link Taxation.Expense#getFrom_agent <em>From agent</em>}</li>
20 * <li>{@link Taxation.Expense#getIncome <em>Income</em>}</li>
21 * <li>{@link Taxation.Expense#getId4 <em>Id4</em>}</li>
22 * <li>{@link Taxation.Expense#getBeneficiary <em>Beneficiary</em>}</li>
23 * </ul>
24 *
25 * @see Taxation.TaxationPackage#getExpense()
26 * @model
27 * @generated
28 */
29public interface Expense extends EObject {
30 /**
31 * Returns the value of the '<em><b>Declared amount</b></em>' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Declared amount</em>' attribute.
35 * @see #setDeclared_amount(double)
36 * @see Taxation.TaxationPackage#getExpense_Declared_amount()
37 * @model required="true"
38 * @generated
39 */
40 double getDeclared_amount();
41
42 /**
43 * Sets the value of the '{@link Taxation.Expense#getDeclared_amount <em>Declared amount</em>}' attribute.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Declared amount</em>' attribute.
47 * @see #getDeclared_amount()
48 * @generated
49 */
50 void setDeclared_amount(double value);
51
52 /**
53 * Returns the value of the '<em><b>Expense purpose</b></em>' attribute.
54 * The default value is <code>"OTHER"</code>.
55 * The literals are from the enumeration {@link Taxation.Expense_Purpose}.
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @return the value of the '<em>Expense purpose</em>' attribute.
59 * @see Taxation.Expense_Purpose
60 * @see #setExpense_purpose(Expense_Purpose)
61 * @see Taxation.TaxationPackage#getExpense_Expense_purpose()
62 * @model default="OTHER" required="true"
63 * @generated
64 */
65 Expense_Purpose getExpense_purpose();
66
67 /**
68 * Sets the value of the '{@link Taxation.Expense#getExpense_purpose <em>Expense purpose</em>}' attribute.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @param value the new value of the '<em>Expense purpose</em>' attribute.
72 * @see Taxation.Expense_Purpose
73 * @see #getExpense_purpose()
74 * @generated
75 */
76 void setExpense_purpose(Expense_Purpose value);
77
78 /**
79 * Returns the value of the '<em><b>Dependent</b></em>' reference.
80 * It is bidirectional and its opposite is '{@link Taxation.Dependent#getExpense <em>Expense</em>}'.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @return the value of the '<em>Dependent</em>' reference.
84 * @see #setDependent(Dependent)
85 * @see Taxation.TaxationPackage#getExpense_Dependent()
86 * @see Taxation.Dependent#getExpense
87 * @model opposite="expense"
88 * @generated
89 */
90 Dependent getDependent();
91
92 /**
93 * Sets the value of the '{@link Taxation.Expense#getDependent <em>Dependent</em>}' reference.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @param value the new value of the '<em>Dependent</em>' reference.
97 * @see #getDependent()
98 * @generated
99 */
100 void setDependent(Dependent value);
101
102 /**
103 * Returns the value of the '<em><b>From agent</b></em>' reference.
104 * It is bidirectional and its opposite is '{@link Taxation.FromAgent#getExpense <em>Expense</em>}'.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @return the value of the '<em>From agent</em>' reference.
108 * @see #setFrom_agent(FromAgent)
109 * @see Taxation.TaxationPackage#getExpense_From_agent()
110 * @see Taxation.FromAgent#getExpense
111 * @model opposite="expense" ordered="false"
112 * @generated
113 */
114 FromAgent getFrom_agent();
115
116 /**
117 * Sets the value of the '{@link Taxation.Expense#getFrom_agent <em>From agent</em>}' reference.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @param value the new value of the '<em>From agent</em>' reference.
121 * @see #getFrom_agent()
122 * @generated
123 */
124 void setFrom_agent(FromAgent value);
125
126 /**
127 * Returns the value of the '<em><b>Income</b></em>' container reference.
128 * It is bidirectional and its opposite is '{@link Taxation.Income#getExpenses <em>Expenses</em>}'.
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @return the value of the '<em>Income</em>' container reference.
132 * @see #setIncome(Income)
133 * @see Taxation.TaxationPackage#getExpense_Income()
134 * @see Taxation.Income#getExpenses
135 * @model opposite="expenses" required="true" transient="false"
136 * @generated
137 */
138 Income getIncome();
139
140 /**
141 * Sets the value of the '{@link Taxation.Expense#getIncome <em>Income</em>}' container reference.
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @param value the new value of the '<em>Income</em>' container reference.
145 * @see #getIncome()
146 * @generated
147 */
148 void setIncome(Income value);
149
150 /**
151 * Returns the value of the '<em><b>Id4</b></em>' attribute.
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @return the value of the '<em>Id4</em>' attribute.
155 * @see #setId4(String)
156 * @see Taxation.TaxationPackage#getExpense_Id4()
157 * @model id="true" required="true" ordered="false"
158 * @generated
159 */
160 String getId4();
161
162 /**
163 * Sets the value of the '{@link Taxation.Expense#getId4 <em>Id4</em>}' attribute.
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @param value the new value of the '<em>Id4</em>' attribute.
167 * @see #getId4()
168 * @generated
169 */
170 void setId4(String value);
171
172 /**
173 * Returns the value of the '<em><b>Beneficiary</b></em>' reference.
174 * It is bidirectional and its opposite is '{@link Taxation.Physical_Person#getExpenses <em>Expenses</em>}'.
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @return the value of the '<em>Beneficiary</em>' reference.
178 * @see #setBeneficiary(Physical_Person)
179 * @see Taxation.TaxationPackage#getExpense_Beneficiary()
180 * @see Taxation.Physical_Person#getExpenses
181 * @model opposite="expenses" ordered="false"
182 * @generated
183 */
184 Physical_Person getBeneficiary();
185
186 /**
187 * Sets the value of the '{@link Taxation.Expense#getBeneficiary <em>Beneficiary</em>}' reference.
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @param value the new value of the '<em>Beneficiary</em>' reference.
191 * @see #getBeneficiary()
192 * @generated
193 */
194 void setBeneficiary(Physical_Person value);
195
196} // Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense_Purpose.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense_Purpose.java
new file mode 100644
index 00000000..84ab9ef1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Expense_Purpose.java
@@ -0,0 +1,301 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Expense Purpose</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getExpense_Purpose()
17 * @model
18 * @generated
19 */
20public enum Expense_Purpose implements Enumerator {
21 /**
22 * The '<em><b>HOUSE CARE</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #HOUSE_CARE_VALUE
26 * @generated
27 * @ordered
28 */
29 HOUSE_CARE(0, "HOUSE_CARE", "HOUSE_CARE"),
30
31 /**
32 * The '<em><b>CHILD CARE</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #CHILD_CARE_VALUE
36 * @generated
37 * @ordered
38 */
39 CHILD_CARE(1, "CHILD_CARE", "CHILD_CARE"),
40
41 /**
42 * The '<em><b>DEPENDENCE CARE</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #DEPENDENCE_CARE_VALUE
46 * @generated
47 * @ordered
48 */
49 DEPENDENCE_CARE(2, "DEPENDENCE_CARE", "DEPENDENCE_CARE"),
50
51 /**
52 * The '<em><b>OTHER</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #OTHER_VALUE
56 * @generated
57 * @ordered
58 */
59 OTHER(3, "OTHER", "OTHER"),
60
61 /**
62 * The '<em><b>ALIMONY</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #ALIMONY_VALUE
66 * @generated
67 * @ordered
68 */
69 ALIMONY(4, "ALIMONY", "ALIMONY"),
70
71 /**
72 * The '<em><b>RECURRENT DEPT</b></em>' literal object.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #RECURRENT_DEPT_VALUE
76 * @generated
77 * @ordered
78 */
79 RECURRENT_DEPT(5, "RECURRENT_DEPT", "RECURRENT_DEPT");
80
81 /**
82 * The '<em><b>HOUSE CARE</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #HOUSE_CARE
86 * @model
87 * @generated
88 * @ordered
89 */
90 public static final int HOUSE_CARE_VALUE = 0;
91
92 /**
93 * The '<em><b>CHILD CARE</b></em>' literal value.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @see #CHILD_CARE
97 * @model
98 * @generated
99 * @ordered
100 */
101 public static final int CHILD_CARE_VALUE = 1;
102
103 /**
104 * The '<em><b>DEPENDENCE CARE</b></em>' literal value.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @see #DEPENDENCE_CARE
108 * @model
109 * @generated
110 * @ordered
111 */
112 public static final int DEPENDENCE_CARE_VALUE = 2;
113
114 /**
115 * The '<em><b>OTHER</b></em>' literal value.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @see #OTHER
119 * @model
120 * @generated
121 * @ordered
122 */
123 public static final int OTHER_VALUE = 3;
124
125 /**
126 * The '<em><b>ALIMONY</b></em>' literal value.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @see #ALIMONY
130 * @model
131 * @generated
132 * @ordered
133 */
134 public static final int ALIMONY_VALUE = 4;
135
136 /**
137 * The '<em><b>RECURRENT DEPT</b></em>' literal value.
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @see #RECURRENT_DEPT
141 * @model
142 * @generated
143 * @ordered
144 */
145 public static final int RECURRENT_DEPT_VALUE = 5;
146
147 /**
148 * An array of all the '<em><b>Expense Purpose</b></em>' enumerators.
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 private static final Expense_Purpose[] VALUES_ARRAY =
154 new Expense_Purpose[] {
155 HOUSE_CARE,
156 CHILD_CARE,
157 DEPENDENCE_CARE,
158 OTHER,
159 ALIMONY,
160 RECURRENT_DEPT,
161 };
162
163 /**
164 * A public read-only list of all the '<em><b>Expense Purpose</b></em>' enumerators.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 public static final List<Expense_Purpose> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
170
171 /**
172 * Returns the '<em><b>Expense Purpose</b></em>' literal with the specified literal value.
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @param literal the literal.
176 * @return the matching enumerator or <code>null</code>.
177 * @generated
178 */
179 public static Expense_Purpose get(String literal) {
180 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
181 Expense_Purpose result = VALUES_ARRAY[i];
182 if (result.toString().equals(literal)) {
183 return result;
184 }
185 }
186 return null;
187 }
188
189 /**
190 * Returns the '<em><b>Expense Purpose</b></em>' literal with the specified name.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @param name the name.
194 * @return the matching enumerator or <code>null</code>.
195 * @generated
196 */
197 public static Expense_Purpose getByName(String name) {
198 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
199 Expense_Purpose result = VALUES_ARRAY[i];
200 if (result.getName().equals(name)) {
201 return result;
202 }
203 }
204 return null;
205 }
206
207 /**
208 * Returns the '<em><b>Expense Purpose</b></em>' literal with the specified integer value.
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @param value the integer value.
212 * @return the matching enumerator or <code>null</code>.
213 * @generated
214 */
215 public static Expense_Purpose get(int value) {
216 switch (value) {
217 case HOUSE_CARE_VALUE: return HOUSE_CARE;
218 case CHILD_CARE_VALUE: return CHILD_CARE;
219 case DEPENDENCE_CARE_VALUE: return DEPENDENCE_CARE;
220 case OTHER_VALUE: return OTHER;
221 case ALIMONY_VALUE: return ALIMONY;
222 case RECURRENT_DEPT_VALUE: return RECURRENT_DEPT;
223 }
224 return null;
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 private final int value;
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 private final String name;
240
241 /**
242 * <!-- begin-user-doc -->
243 * <!-- end-user-doc -->
244 * @generated
245 */
246 private final String literal;
247
248 /**
249 * Only this class can construct instances.
250 * <!-- begin-user-doc -->
251 * <!-- end-user-doc -->
252 * @generated
253 */
254 private Expense_Purpose(int value, String name, String literal) {
255 this.value = value;
256 this.name = name;
257 this.literal = literal;
258 }
259
260 /**
261 * <!-- begin-user-doc -->
262 * <!-- end-user-doc -->
263 * @generated
264 */
265 @Override
266 public int getValue() {
267 return value;
268 }
269
270 /**
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 */
275 @Override
276 public String getName() {
277 return name;
278 }
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 @Override
286 public String getLiteral() {
287 return literal;
288 }
289
290 /**
291 * Returns the literal value of the enumerator, which is its string representation.
292 * <!-- begin-user-doc -->
293 * <!-- end-user-doc -->
294 * @generated
295 */
296 @Override
297 public String toString() {
298 return literal;
299 }
300
301} //Expense_Purpose
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/External_Allowance.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/External_Allowance.java
new file mode 100644
index 00000000..625efe59
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/External_Allowance.java
@@ -0,0 +1,189 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>External Allowance</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.External_Allowance#getAmount <em>Amount</em>}</li>
17 * <li>{@link Taxation.External_Allowance#getGrantor <em>Grantor</em>}</li>
18 * <li>{@link Taxation.External_Allowance#getStarting_year <em>Starting year</em>}</li>
19 * <li>{@link Taxation.External_Allowance#getEnding_year <em>Ending year</em>}</li>
20 * <li>{@link Taxation.External_Allowance#getReciver <em>Reciver</em>}</li>
21 * <li>{@link Taxation.External_Allowance#getId5 <em>Id5</em>}</li>
22 * <li>{@link Taxation.External_Allowance#getPerson <em>Person</em>}</li>
23 * </ul>
24 *
25 * @see Taxation.TaxationPackage#getExternal_Allowance()
26 * @model
27 * @generated
28 */
29public interface External_Allowance extends EObject {
30 /**
31 * Returns the value of the '<em><b>Amount</b></em>' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Amount</em>' attribute.
35 * @see #setAmount(double)
36 * @see Taxation.TaxationPackage#getExternal_Allowance_Amount()
37 * @model required="true"
38 * @generated
39 */
40 double getAmount();
41
42 /**
43 * Sets the value of the '{@link Taxation.External_Allowance#getAmount <em>Amount</em>}' attribute.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Amount</em>' attribute.
47 * @see #getAmount()
48 * @generated
49 */
50 void setAmount(double value);
51
52 /**
53 * Returns the value of the '<em><b>Grantor</b></em>' attribute.
54 * The literals are from the enumeration {@link Taxation.Grantor}.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @return the value of the '<em>Grantor</em>' attribute.
58 * @see Taxation.Grantor
59 * @see #setGrantor(Grantor)
60 * @see Taxation.TaxationPackage#getExternal_Allowance_Grantor()
61 * @model required="true"
62 * @generated
63 */
64 Grantor getGrantor();
65
66 /**
67 * Sets the value of the '{@link Taxation.External_Allowance#getGrantor <em>Grantor</em>}' attribute.
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @param value the new value of the '<em>Grantor</em>' attribute.
71 * @see Taxation.Grantor
72 * @see #getGrantor()
73 * @generated
74 */
75 void setGrantor(Grantor value);
76
77 /**
78 * Returns the value of the '<em><b>Starting year</b></em>' attribute.
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @return the value of the '<em>Starting year</em>' attribute.
82 * @see #setStarting_year(int)
83 * @see Taxation.TaxationPackage#getExternal_Allowance_Starting_year()
84 * @model required="true" ordered="false"
85 * @generated
86 */
87 int getStarting_year();
88
89 /**
90 * Sets the value of the '{@link Taxation.External_Allowance#getStarting_year <em>Starting year</em>}' attribute.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @param value the new value of the '<em>Starting year</em>' attribute.
94 * @see #getStarting_year()
95 * @generated
96 */
97 void setStarting_year(int value);
98
99 /**
100 * Returns the value of the '<em><b>Ending year</b></em>' attribute.
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @return the value of the '<em>Ending year</em>' attribute.
104 * @see #setEnding_year(int)
105 * @see Taxation.TaxationPackage#getExternal_Allowance_Ending_year()
106 * @model required="true" ordered="false"
107 * @generated
108 */
109 int getEnding_year();
110
111 /**
112 * Sets the value of the '{@link Taxation.External_Allowance#getEnding_year <em>Ending year</em>}' attribute.
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @param value the new value of the '<em>Ending year</em>' attribute.
116 * @see #getEnding_year()
117 * @generated
118 */
119 void setEnding_year(int value);
120
121 /**
122 * Returns the value of the '<em><b>Reciver</b></em>' reference.
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @return the value of the '<em>Reciver</em>' reference.
126 * @see #setReciver(Physical_Person)
127 * @see Taxation.TaxationPackage#getExternal_Allowance_Reciver()
128 * @model required="true" ordered="false"
129 * @generated
130 */
131 Physical_Person getReciver();
132
133 /**
134 * Sets the value of the '{@link Taxation.External_Allowance#getReciver <em>Reciver</em>}' reference.
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @param value the new value of the '<em>Reciver</em>' reference.
138 * @see #getReciver()
139 * @generated
140 */
141 void setReciver(Physical_Person value);
142
143 /**
144 * Returns the value of the '<em><b>Id5</b></em>' attribute.
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @return the value of the '<em>Id5</em>' attribute.
148 * @see #setId5(String)
149 * @see Taxation.TaxationPackage#getExternal_Allowance_Id5()
150 * @model id="true" required="true" ordered="false"
151 * @generated
152 */
153 String getId5();
154
155 /**
156 * Sets the value of the '{@link Taxation.External_Allowance#getId5 <em>Id5</em>}' attribute.
157 * <!-- begin-user-doc -->
158 * <!-- end-user-doc -->
159 * @param value the new value of the '<em>Id5</em>' attribute.
160 * @see #getId5()
161 * @generated
162 */
163 void setId5(String value);
164
165 /**
166 * Returns the value of the '<em><b>Person</b></em>' container reference.
167 * It is bidirectional and its opposite is '{@link Taxation.Dependent#getAllowances <em>Allowances</em>}'.
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @return the value of the '<em>Person</em>' container reference.
171 * @see #setPerson(Dependent)
172 * @see Taxation.TaxationPackage#getExternal_Allowance_Person()
173 * @see Taxation.Dependent#getAllowances
174 * @model opposite="allowances" required="true" transient="false" ordered="false"
175 * @generated
176 */
177 Dependent getPerson();
178
179 /**
180 * Sets the value of the '{@link Taxation.External_Allowance#getPerson <em>Person</em>}' container reference.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @param value the new value of the '<em>Person</em>' container reference.
184 * @see #getPerson()
185 * @generated
186 */
187 void setPerson(Dependent value);
188
189} // External_Allowance
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Extraordinary_Expense_CE.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Extraordinary_Expense_CE.java
new file mode 100644
index 00000000..d377da58
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Extraordinary_Expense_CE.java
@@ -0,0 +1,71 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Extraordinary Expense CE</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Extraordinary_Expense_CE#getThresholded_deduction_percentage <em>Thresholded deduction percentage</em>}</li>
16 * <li>{@link Taxation.Extraordinary_Expense_CE#getCe_type <em>Ce type</em>}</li>
17 * </ul>
18 *
19 * @see Taxation.TaxationPackage#getExtraordinary_Expense_CE()
20 * @model
21 * @generated
22 */
23public interface Extraordinary_Expense_CE extends Expense {
24 /**
25 * Returns the value of the '<em><b>Thresholded deduction percentage</b></em>' attribute.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Thresholded deduction percentage</em>' attribute.
29 * @see #setThresholded_deduction_percentage(double)
30 * @see Taxation.TaxationPackage#getExtraordinary_Expense_CE_Thresholded_deduction_percentage()
31 * @model required="true"
32 * @generated
33 */
34 double getThresholded_deduction_percentage();
35
36 /**
37 * Sets the value of the '{@link Taxation.Extraordinary_Expense_CE#getThresholded_deduction_percentage <em>Thresholded deduction percentage</em>}' attribute.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @param value the new value of the '<em>Thresholded deduction percentage</em>' attribute.
41 * @see #getThresholded_deduction_percentage()
42 * @generated
43 */
44 void setThresholded_deduction_percentage(double value);
45
46 /**
47 * Returns the value of the '<em><b>Ce type</b></em>' attribute.
48 * The literals are from the enumeration {@link Taxation.CE_Type}.
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @return the value of the '<em>Ce type</em>' attribute.
52 * @see Taxation.CE_Type
53 * @see #setCe_type(CE_Type)
54 * @see Taxation.TaxationPackage#getExtraordinary_Expense_CE_Ce_type()
55 * @model required="true"
56 * @generated
57 */
58 CE_Type getCe_type();
59
60 /**
61 * Sets the value of the '{@link Taxation.Extraordinary_Expense_CE#getCe_type <em>Ce type</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @param value the new value of the '<em>Ce type</em>' attribute.
65 * @see Taxation.CE_Type
66 * @see #getCe_type()
67 * @generated
68 */
69 void setCe_type(CE_Type value);
70
71} // Extraordinary_Expense_CE
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FD.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FD.java
new file mode 100644
index 00000000..0c74a256
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FD.java
@@ -0,0 +1,68 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>FD</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.FD#getDistance_declared_in_january <em>Distance declared in january</em>}</li>
16 * <li>{@link Taxation.FD#getCalculated_distance <em>Calculated distance</em>}</li>
17 * </ul>
18 *
19 * @see Taxation.TaxationPackage#getFD()
20 * @model
21 * @generated
22 */
23public interface FD extends Professional_Expenses_Deduction {
24 /**
25 * Returns the value of the '<em><b>Distance declared in january</b></em>' attribute.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Distance declared in january</em>' attribute.
29 * @see #setDistance_declared_in_january(double)
30 * @see Taxation.TaxationPackage#getFD_Distance_declared_in_january()
31 * @model required="true"
32 * @generated
33 */
34 double getDistance_declared_in_january();
35
36 /**
37 * Sets the value of the '{@link Taxation.FD#getDistance_declared_in_january <em>Distance declared in january</em>}' attribute.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @param value the new value of the '<em>Distance declared in january</em>' attribute.
41 * @see #getDistance_declared_in_january()
42 * @generated
43 */
44 void setDistance_declared_in_january(double value);
45
46 /**
47 * Returns the value of the '<em><b>Calculated distance</b></em>' attribute.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @return the value of the '<em>Calculated distance</em>' attribute.
51 * @see #setCalculated_distance(double)
52 * @see Taxation.TaxationPackage#getFD_Calculated_distance()
53 * @model required="true" derived="true"
54 * @generated
55 */
56 double getCalculated_distance();
57
58 /**
59 * Sets the value of the '{@link Taxation.FD#getCalculated_distance <em>Calculated distance</em>}' attribute.
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @param value the new value of the '<em>Calculated distance</em>' attribute.
63 * @see #getCalculated_distance()
64 * @generated
65 */
66 void setCalculated_distance(double value);
67
68} // FD
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FO.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FO.java
new file mode 100644
index 00000000..e403cfa2
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FO.java
@@ -0,0 +1,48 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>FO</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.FO#getRate_type_for_FO <em>Rate type for FO</em>}</li>
16 * </ul>
17 *
18 * @see Taxation.TaxationPackage#getFO()
19 * @model
20 * @generated
21 */
22public interface FO extends Professional_Expenses_Deduction {
23 /**
24 * Returns the value of the '<em><b>Rate type for FO</b></em>' attribute.
25 * The literals are from the enumeration {@link Taxation.Type_of_Rate}.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Rate type for FO</em>' attribute.
29 * @see Taxation.Type_of_Rate
30 * @see #setRate_type_for_FO(Type_of_Rate)
31 * @see Taxation.TaxationPackage#getFO_Rate_type_for_FO()
32 * @model required="true" derived="true"
33 * @generated
34 */
35 Type_of_Rate getRate_type_for_FO();
36
37 /**
38 * Sets the value of the '{@link Taxation.FO#getRate_type_for_FO <em>Rate type for FO</em>}' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @param value the new value of the '<em>Rate type for FO</em>' attribute.
42 * @see Taxation.Type_of_Rate
43 * @see #getRate_type_for_FO()
44 * @generated
45 */
46 void setRate_type_for_FO(Type_of_Rate value);
47
48} // FO
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Fiscal_Address.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Fiscal_Address.java
new file mode 100644
index 00000000..7dd05386
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Fiscal_Address.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Fiscal Address</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getFiscal_Address()
13 * @model
14 * @generated
15 */
16public interface Fiscal_Address extends Address {
17} // Fiscal_Address
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Foreign_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Foreign_Income.java
new file mode 100644
index 00000000..023b28d9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Foreign_Income.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Foreign Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getForeign_Income()
13 * @model
14 * @generated
15 */
16public interface Foreign_Income extends Income {
17} // Foreign_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromAgent.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromAgent.java
new file mode 100644
index 00000000..c409cee0
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromAgent.java
@@ -0,0 +1,144 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>From Agent</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.FromAgent#getTaxPayer <em>Tax Payer</em>}</li>
17 * <li>{@link Taxation.FromAgent#isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care <em>Is dependent eligible for CE Not In Houshold Children Care</em>}</li>
18 * <li>{@link Taxation.FromAgent#getExpense <em>Expense</em>}</li>
19 * <li>{@link Taxation.FromAgent#isIs_eligible_debt <em>Is eligible debt</em>}</li>
20 * <li>{@link Taxation.FromAgent#getDependent <em>Dependent</em>}</li>
21 * </ul>
22 *
23 * @see Taxation.TaxationPackage#getFromAgent()
24 * @model
25 * @generated
26 */
27public interface FromAgent extends EObject {
28 /**
29 * Returns the value of the '<em><b>Tax Payer</b></em>' container reference.
30 * It is bidirectional and its opposite is '{@link Taxation.Tax_Payer#getFrom_agent <em>From agent</em>}'.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Tax Payer</em>' container reference.
34 * @see #setTaxPayer(Tax_Payer)
35 * @see Taxation.TaxationPackage#getFromAgent_TaxPayer()
36 * @see Taxation.Tax_Payer#getFrom_agent
37 * @model opposite="from_agent" required="true" transient="false"
38 * @generated
39 */
40 Tax_Payer getTaxPayer();
41
42 /**
43 * Sets the value of the '{@link Taxation.FromAgent#getTaxPayer <em>Tax Payer</em>}' container reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Tax Payer</em>' container reference.
47 * @see #getTaxPayer()
48 * @generated
49 */
50 void setTaxPayer(Tax_Payer value);
51
52 /**
53 * Returns the value of the '<em><b>Is dependent eligible for CE Not In Houshold Children Care</b></em>' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @return the value of the '<em>Is dependent eligible for CE Not In Houshold Children Care</em>' attribute.
57 * @see #setIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care(boolean)
58 * @see Taxation.TaxationPackage#getFromAgent_Is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care()
59 * @model required="true" ordered="false"
60 * @generated
61 */
62 boolean isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care();
63
64 /**
65 * Sets the value of the '{@link Taxation.FromAgent#isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care <em>Is dependent eligible for CE Not In Houshold Children Care</em>}' attribute.
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @param value the new value of the '<em>Is dependent eligible for CE Not In Houshold Children Care</em>' attribute.
69 * @see #isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care()
70 * @generated
71 */
72 void setIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care(boolean value);
73
74 /**
75 * Returns the value of the '<em><b>Expense</b></em>' reference.
76 * It is bidirectional and its opposite is '{@link Taxation.Expense#getFrom_agent <em>From agent</em>}'.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @return the value of the '<em>Expense</em>' reference.
80 * @see #setExpense(Expense)
81 * @see Taxation.TaxationPackage#getFromAgent_Expense()
82 * @see Taxation.Expense#getFrom_agent
83 * @model opposite="from_agent" ordered="false"
84 * @generated
85 */
86 Expense getExpense();
87
88 /**
89 * Sets the value of the '{@link Taxation.FromAgent#getExpense <em>Expense</em>}' reference.
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @param value the new value of the '<em>Expense</em>' reference.
93 * @see #getExpense()
94 * @generated
95 */
96 void setExpense(Expense value);
97
98 /**
99 * Returns the value of the '<em><b>Is eligible debt</b></em>' attribute.
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @return the value of the '<em>Is eligible debt</em>' attribute.
103 * @see #setIs_eligible_debt(boolean)
104 * @see Taxation.TaxationPackage#getFromAgent_Is_eligible_debt()
105 * @model required="true" ordered="false"
106 * @generated
107 */
108 boolean isIs_eligible_debt();
109
110 /**
111 * Sets the value of the '{@link Taxation.FromAgent#isIs_eligible_debt <em>Is eligible debt</em>}' attribute.
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @param value the new value of the '<em>Is eligible debt</em>' attribute.
115 * @see #isIs_eligible_debt()
116 * @generated
117 */
118 void setIs_eligible_debt(boolean value);
119
120 /**
121 * Returns the value of the '<em><b>Dependent</b></em>' reference.
122 * It is bidirectional and its opposite is '{@link Taxation.Dependent#getFrom_agent <em>From agent</em>}'.
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @return the value of the '<em>Dependent</em>' reference.
126 * @see #setDependent(Dependent)
127 * @see Taxation.TaxationPackage#getFromAgent_Dependent()
128 * @see Taxation.Dependent#getFrom_agent
129 * @model opposite="from_agent" ordered="false"
130 * @generated
131 */
132 Dependent getDependent();
133
134 /**
135 * Sets the value of the '{@link Taxation.FromAgent#getDependent <em>Dependent</em>}' reference.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @param value the new value of the '<em>Dependent</em>' reference.
139 * @see #getDependent()
140 * @generated
141 */
142 void setDependent(Dependent value);
143
144} // FromAgent
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromLaw.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromLaw.java
new file mode 100644
index 00000000..0e5cc98d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/FromLaw.java
@@ -0,0 +1,71 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>From Law</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.FromLaw#getId <em>Id</em>}</li>
17 * <li>{@link Taxation.FromLaw#getTaxPayer <em>Tax Payer</em>}</li>
18 * </ul>
19 *
20 * @see Taxation.TaxationPackage#getFromLaw()
21 * @model
22 * @generated
23 */
24public interface FromLaw extends EObject {
25 /**
26 * Returns the value of the '<em><b>Id</b></em>' attribute.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @return the value of the '<em>Id</em>' attribute.
30 * @see #setId(String)
31 * @see Taxation.TaxationPackage#getFromLaw_Id()
32 * @model id="true" required="true" ordered="false"
33 * @generated
34 */
35 String getId();
36
37 /**
38 * Sets the value of the '{@link Taxation.FromLaw#getId <em>Id</em>}' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @param value the new value of the '<em>Id</em>' attribute.
42 * @see #getId()
43 * @generated
44 */
45 void setId(String value);
46
47 /**
48 * Returns the value of the '<em><b>Tax Payer</b></em>' container reference.
49 * It is bidirectional and its opposite is '{@link Taxation.Tax_Payer#getFrom_law <em>From law</em>}'.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @return the value of the '<em>Tax Payer</em>' container reference.
53 * @see #setTaxPayer(Tax_Payer)
54 * @see Taxation.TaxationPackage#getFromLaw_TaxPayer()
55 * @see Taxation.Tax_Payer#getFrom_law
56 * @model opposite="from_law" required="true" transient="false"
57 * @generated
58 */
59 Tax_Payer getTaxPayer();
60
61 /**
62 * Sets the value of the '{@link Taxation.FromLaw#getTaxPayer <em>Tax Payer</em>}' container reference.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @param value the new value of the '<em>Tax Payer</em>' container reference.
66 * @see #getTaxPayer()
67 * @generated
68 */
69 void setTaxPayer(Tax_Payer value);
70
71} // FromLaw
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Grantor.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Grantor.java
new file mode 100644
index 00000000..0a9c45c9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Grantor.java
@@ -0,0 +1,301 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Grantor</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getGrantor()
17 * @model
18 * @generated
19 */
20public enum Grantor implements Enumerator {
21 /**
22 * The '<em><b>WWW</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #WWW_VALUE
26 * @generated
27 * @ordered
28 */
29 WWW(0, "WWW", "WWW"),
30
31 /**
32 * The '<em><b>Employer</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #EMPLOYER_VALUE
36 * @generated
37 * @ordered
38 */
39 EMPLOYER(1, "Employer", "Employer"),
40
41 /**
42 * The '<em><b>MMM</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #MMM_VALUE
46 * @generated
47 * @ordered
48 */
49 MMM(2, "MMM", "MMM"),
50
51 /**
52 * The '<em><b>UUU</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #UUU_VALUE
56 * @generated
57 * @ordered
58 */
59 UUU(3, "UUU", "UUU"),
60
61 /**
62 * The '<em><b>YYY</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #YYY_VALUE
66 * @generated
67 * @ordered
68 */
69 YYY(4, "YYY", "YYY"),
70
71 /**
72 * The '<em><b>OOO</b></em>' literal object.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #OOO_VALUE
76 * @generated
77 * @ordered
78 */
79 OOO(5, "OOO", "OOO");
80
81 /**
82 * The '<em><b>WWW</b></em>' literal value.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #WWW
86 * @model
87 * @generated
88 * @ordered
89 */
90 public static final int WWW_VALUE = 0;
91
92 /**
93 * The '<em><b>Employer</b></em>' literal value.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @see #EMPLOYER
97 * @model name="Employer"
98 * @generated
99 * @ordered
100 */
101 public static final int EMPLOYER_VALUE = 1;
102
103 /**
104 * The '<em><b>MMM</b></em>' literal value.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @see #MMM
108 * @model
109 * @generated
110 * @ordered
111 */
112 public static final int MMM_VALUE = 2;
113
114 /**
115 * The '<em><b>UUU</b></em>' literal value.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @see #UUU
119 * @model
120 * @generated
121 * @ordered
122 */
123 public static final int UUU_VALUE = 3;
124
125 /**
126 * The '<em><b>YYY</b></em>' literal value.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @see #YYY
130 * @model
131 * @generated
132 * @ordered
133 */
134 public static final int YYY_VALUE = 4;
135
136 /**
137 * The '<em><b>OOO</b></em>' literal value.
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @see #OOO
141 * @model
142 * @generated
143 * @ordered
144 */
145 public static final int OOO_VALUE = 5;
146
147 /**
148 * An array of all the '<em><b>Grantor</b></em>' enumerators.
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 private static final Grantor[] VALUES_ARRAY =
154 new Grantor[] {
155 WWW,
156 EMPLOYER,
157 MMM,
158 UUU,
159 YYY,
160 OOO,
161 };
162
163 /**
164 * A public read-only list of all the '<em><b>Grantor</b></em>' enumerators.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 public static final List<Grantor> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
170
171 /**
172 * Returns the '<em><b>Grantor</b></em>' literal with the specified literal value.
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @param literal the literal.
176 * @return the matching enumerator or <code>null</code>.
177 * @generated
178 */
179 public static Grantor get(String literal) {
180 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
181 Grantor result = VALUES_ARRAY[i];
182 if (result.toString().equals(literal)) {
183 return result;
184 }
185 }
186 return null;
187 }
188
189 /**
190 * Returns the '<em><b>Grantor</b></em>' literal with the specified name.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @param name the name.
194 * @return the matching enumerator or <code>null</code>.
195 * @generated
196 */
197 public static Grantor getByName(String name) {
198 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
199 Grantor result = VALUES_ARRAY[i];
200 if (result.getName().equals(name)) {
201 return result;
202 }
203 }
204 return null;
205 }
206
207 /**
208 * Returns the '<em><b>Grantor</b></em>' literal with the specified integer value.
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @param value the integer value.
212 * @return the matching enumerator or <code>null</code>.
213 * @generated
214 */
215 public static Grantor get(int value) {
216 switch (value) {
217 case WWW_VALUE: return WWW;
218 case EMPLOYER_VALUE: return EMPLOYER;
219 case MMM_VALUE: return MMM;
220 case UUU_VALUE: return UUU;
221 case YYY_VALUE: return YYY;
222 case OOO_VALUE: return OOO;
223 }
224 return null;
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 private final int value;
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 private final String name;
240
241 /**
242 * <!-- begin-user-doc -->
243 * <!-- end-user-doc -->
244 * @generated
245 */
246 private final String literal;
247
248 /**
249 * Only this class can construct instances.
250 * <!-- begin-user-doc -->
251 * <!-- end-user-doc -->
252 * @generated
253 */
254 private Grantor(int value, String name, String literal) {
255 this.value = value;
256 this.name = name;
257 this.literal = literal;
258 }
259
260 /**
261 * <!-- begin-user-doc -->
262 * <!-- end-user-doc -->
263 * @generated
264 */
265 @Override
266 public int getValue() {
267 return value;
268 }
269
270 /**
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 */
275 @Override
276 public String getName() {
277 return name;
278 }
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 @Override
286 public String getLiteral() {
287 return literal;
288 }
289
290 /**
291 * Returns the literal value of the enumerator, which is its string representation.
292 * <!-- begin-user-doc -->
293 * <!-- end-user-doc -->
294 * @generated
295 */
296 @Override
297 public String toString() {
298 return literal;
299 }
300
301} //Grantor
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Habitual_Address.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Habitual_Address.java
new file mode 100644
index 00000000..45e9b1c9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Habitual_Address.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Habitual Address</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getHabitual_Address()
13 * @model
14 * @generated
15 */
16public interface Habitual_Address extends Address {
17} // Habitual_Address
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Health_and_Pension_Insurance.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Health_and_Pension_Insurance.java
new file mode 100644
index 00000000..f23a6a91
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Health_and_Pension_Insurance.java
@@ -0,0 +1,72 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Health and Pension Insurance</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Health_and_Pension_Insurance#getCategory <em>Category</em>}</li>
16 * <li>{@link Taxation.Health_and_Pension_Insurance#isIs_related_to_additional_salary <em>Is related to additional salary</em>}</li>
17 * </ul>
18 *
19 * @see Taxation.TaxationPackage#getHealth_and_Pension_Insurance()
20 * @model
21 * @generated
22 */
23public interface Health_and_Pension_Insurance extends Special_Expense_DS {
24 /**
25 * Returns the value of the '<em><b>Category</b></em>' attribute.
26 * The literals are from the enumeration {@link Taxation.Category_of_Health_and_Pension_Insurances}.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @return the value of the '<em>Category</em>' attribute.
30 * @see Taxation.Category_of_Health_and_Pension_Insurances
31 * @see #setCategory(Category_of_Health_and_Pension_Insurances)
32 * @see Taxation.TaxationPackage#getHealth_and_Pension_Insurance_Category()
33 * @model required="true"
34 * @generated
35 */
36 Category_of_Health_and_Pension_Insurances getCategory();
37
38 /**
39 * Sets the value of the '{@link Taxation.Health_and_Pension_Insurance#getCategory <em>Category</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @param value the new value of the '<em>Category</em>' attribute.
43 * @see Taxation.Category_of_Health_and_Pension_Insurances
44 * @see #getCategory()
45 * @generated
46 */
47 void setCategory(Category_of_Health_and_Pension_Insurances value);
48
49 /**
50 * Returns the value of the '<em><b>Is related to additional salary</b></em>' attribute.
51 * The default value is <code>"false"</code>.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @return the value of the '<em>Is related to additional salary</em>' attribute.
55 * @see #setIs_related_to_additional_salary(boolean)
56 * @see Taxation.TaxationPackage#getHealth_and_Pension_Insurance_Is_related_to_additional_salary()
57 * @model default="false" required="true"
58 * @generated
59 */
60 boolean isIs_related_to_additional_salary();
61
62 /**
63 * Sets the value of the '{@link Taxation.Health_and_Pension_Insurance#isIs_related_to_additional_salary <em>Is related to additional salary</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @param value the new value of the '<em>Is related to additional salary</em>' attribute.
67 * @see #isIs_related_to_additional_salary()
68 * @generated
69 */
70 void setIs_related_to_additional_salary(boolean value);
71
72} // Health_and_Pension_Insurance
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Household.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Household.java
new file mode 100644
index 00000000..5aaed441
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Household.java
@@ -0,0 +1,86 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Household</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Household#getParents <em>Parents</em>}</li>
17 * <li>{@link Taxation.Household#getId1 <em>Id1</em>}</li>
18 * <li>{@link Taxation.Household#getChildren <em>Children</em>}</li>
19 * </ul>
20 *
21 * @see Taxation.TaxationPackage#getHousehold()
22 * @model
23 * @generated
24 */
25public interface Household extends Tax_Case {
26 /**
27 * Returns the value of the '<em><b>Parents</b></em>' containment reference.
28 * It is bidirectional and its opposite is '{@link Taxation.Legal_Union_Record#getHousehold <em>Household</em>}'.
29 * <!-- begin-user-doc -->
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Parents</em>' containment reference.
32 * @see #setParents(Legal_Union_Record)
33 * @see Taxation.TaxationPackage#getHousehold_Parents()
34 * @see Taxation.Legal_Union_Record#getHousehold
35 * @model opposite="household" containment="true" required="true" ordered="false"
36 * @generated
37 */
38 Legal_Union_Record getParents();
39
40 /**
41 * Sets the value of the '{@link Taxation.Household#getParents <em>Parents</em>}' containment reference.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>Parents</em>' containment reference.
45 * @see #getParents()
46 * @generated
47 */
48 void setParents(Legal_Union_Record value);
49
50 /**
51 * Returns the value of the '<em><b>Id1</b></em>' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @return the value of the '<em>Id1</em>' attribute.
55 * @see #setId1(String)
56 * @see Taxation.TaxationPackage#getHousehold_Id1()
57 * @model id="true" required="true" ordered="false"
58 * @generated
59 */
60 String getId1();
61
62 /**
63 * Sets the value of the '{@link Taxation.Household#getId1 <em>Id1</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @param value the new value of the '<em>Id1</em>' attribute.
67 * @see #getId1()
68 * @generated
69 */
70 void setId1(String value);
71
72 /**
73 * Returns the value of the '<em><b>Children</b></em>' containment reference list.
74 * The list contents are of type {@link Taxation.Dependent}.
75 * It is bidirectional and its opposite is '{@link Taxation.Dependent#getHousehold <em>Household</em>}'.
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @return the value of the '<em>Children</em>' containment reference list.
79 * @see Taxation.TaxationPackage#getHousehold_Children()
80 * @see Taxation.Dependent#getHousehold
81 * @model opposite="household" containment="true" ordered="false"
82 * @generated
83 */
84 EList<Dependent> getChildren();
85
86} // Household
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income.java
new file mode 100644
index 00000000..3e68e1ac
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income.java
@@ -0,0 +1,271 @@
1/**
2 */
3package Taxation;
4
5import java.util.Date;
6
7import org.eclipse.emf.common.util.EList;
8
9import org.eclipse.emf.ecore.EObject;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the model object '<em><b>Income</b></em>'.
14 * <!-- end-user-doc -->
15 *
16 * <p>
17 * The following features are supported:
18 * </p>
19 * <ul>
20 * <li>{@link Taxation.Income#getIncome_amount <em>Income amount</em>}</li>
21 * <li>{@link Taxation.Income#getIncome_type <em>Income type</em>}</li>
22 * <li>{@link Taxation.Income#getStart_date_within_taxation_year <em>Start date within taxation year</em>}</li>
23 * <li>{@link Taxation.Income#getStart_date_of_contract <em>Start date of contract</em>}</li>
24 * <li>{@link Taxation.Income#getEnd_date_within_taxation_year <em>End date within taxation year</em>}</li>
25 * <li>{@link Taxation.Income#getTax_card <em>Tax card</em>}</li>
26 * <li>{@link Taxation.Income#getTax_liability <em>Tax liability</em>}</li>
27 * <li>{@link Taxation.Income#getTaxPayer <em>Tax Payer</em>}</li>
28 * <li>{@link Taxation.Income#getDetails <em>Details</em>}</li>
29 * <li>{@link Taxation.Income#getNum <em>Num</em>}</li>
30 * <li>{@link Taxation.Income#getExpenses <em>Expenses</em>}</li>
31 * </ul>
32 *
33 * @see Taxation.TaxationPackage#getIncome()
34 * @model abstract="true"
35 * @generated
36 */
37public interface Income extends EObject {
38 /**
39 * Returns the value of the '<em><b>Income amount</b></em>' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @return the value of the '<em>Income amount</em>' attribute.
43 * @see #setIncome_amount(double)
44 * @see Taxation.TaxationPackage#getIncome_Income_amount()
45 * @model unique="false" required="true" ordered="false"
46 * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='let non_null_amounts:OrderedSet(Income_Detail)=self.details-&gt;select(det:Income_Detail|det.amount&gt;0)-&gt;asOrderedSet() in\nnon_null_amounts-&gt;collect(amount)-&gt;min()'"
47 * @generated
48 */
49 double getIncome_amount();
50
51 /**
52 * Sets the value of the '{@link Taxation.Income#getIncome_amount <em>Income amount</em>}' attribute.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @param value the new value of the '<em>Income amount</em>' attribute.
56 * @see #getIncome_amount()
57 * @generated
58 */
59 void setIncome_amount(double value);
60
61 /**
62 * Returns the value of the '<em><b>Income type</b></em>' containment reference.
63 * It is bidirectional and its opposite is '{@link Taxation.Income_Type#getIncome <em>Income</em>}'.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @return the value of the '<em>Income type</em>' containment reference.
67 * @see #setIncome_type(Income_Type)
68 * @see Taxation.TaxationPackage#getIncome_Income_type()
69 * @see Taxation.Income_Type#getIncome
70 * @model opposite="income" containment="true" required="true"
71 * @generated
72 */
73 Income_Type getIncome_type();
74
75 /**
76 * Sets the value of the '{@link Taxation.Income#getIncome_type <em>Income type</em>}' containment reference.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @param value the new value of the '<em>Income type</em>' containment reference.
80 * @see #getIncome_type()
81 * @generated
82 */
83 void setIncome_type(Income_Type value);
84
85 /**
86 * Returns the value of the '<em><b>Start date within taxation year</b></em>' attribute.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @return the value of the '<em>Start date within taxation year</em>' attribute.
90 * @see #setStart_date_within_taxation_year(Date)
91 * @see Taxation.TaxationPackage#getIncome_Start_date_within_taxation_year()
92 * @model unique="false" required="true" ordered="false"
93 * @generated
94 */
95 Date getStart_date_within_taxation_year();
96
97 /**
98 * Sets the value of the '{@link Taxation.Income#getStart_date_within_taxation_year <em>Start date within taxation year</em>}' attribute.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @param value the new value of the '<em>Start date within taxation year</em>' attribute.
102 * @see #getStart_date_within_taxation_year()
103 * @generated
104 */
105 void setStart_date_within_taxation_year(Date value);
106
107 /**
108 * Returns the value of the '<em><b>Start date of contract</b></em>' attribute.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @return the value of the '<em>Start date of contract</em>' attribute.
112 * @see #setStart_date_of_contract(Date)
113 * @see Taxation.TaxationPackage#getIncome_Start_date_of_contract()
114 * @model unique="false" required="true" ordered="false"
115 * @generated
116 */
117 Date getStart_date_of_contract();
118
119 /**
120 * Sets the value of the '{@link Taxation.Income#getStart_date_of_contract <em>Start date of contract</em>}' attribute.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @param value the new value of the '<em>Start date of contract</em>' attribute.
124 * @see #getStart_date_of_contract()
125 * @generated
126 */
127 void setStart_date_of_contract(Date value);
128
129 /**
130 * Returns the value of the '<em><b>End date within taxation year</b></em>' attribute.
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @return the value of the '<em>End date within taxation year</em>' attribute.
134 * @see #setEnd_date_within_taxation_year(Date)
135 * @see Taxation.TaxationPackage#getIncome_End_date_within_taxation_year()
136 * @model unique="false" required="true" ordered="false"
137 * @generated
138 */
139 Date getEnd_date_within_taxation_year();
140
141 /**
142 * Sets the value of the '{@link Taxation.Income#getEnd_date_within_taxation_year <em>End date within taxation year</em>}' attribute.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @param value the new value of the '<em>End date within taxation year</em>' attribute.
146 * @see #getEnd_date_within_taxation_year()
147 * @generated
148 */
149 void setEnd_date_within_taxation_year(Date value);
150
151 /**
152 * Returns the value of the '<em><b>Tax card</b></em>' containment reference.
153 * It is bidirectional and its opposite is '{@link Taxation.Tax_Card#getIncome <em>Income</em>}'.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @return the value of the '<em>Tax card</em>' containment reference.
157 * @see #setTax_card(Tax_Card)
158 * @see Taxation.TaxationPackage#getIncome_Tax_card()
159 * @see Taxation.Tax_Card#getIncome
160 * @model opposite="income" containment="true"
161 * @generated
162 */
163 Tax_Card getTax_card();
164
165 /**
166 * Sets the value of the '{@link Taxation.Income#getTax_card <em>Tax card</em>}' containment reference.
167 * <!-- begin-user-doc -->
168 * <!-- end-user-doc -->
169 * @param value the new value of the '<em>Tax card</em>' containment reference.
170 * @see #getTax_card()
171 * @generated
172 */
173 void setTax_card(Tax_Card value);
174
175 /**
176 * Returns the value of the '<em><b>Tax liability</b></em>' attribute.
177 * <!-- begin-user-doc -->
178 * <!-- end-user-doc -->
179 * @return the value of the '<em>Tax liability</em>' attribute.
180 * @see #setTax_liability(double)
181 * @see Taxation.TaxationPackage#getIncome_Tax_liability()
182 * @model required="true"
183 * @generated
184 */
185 double getTax_liability();
186
187 /**
188 * Sets the value of the '{@link Taxation.Income#getTax_liability <em>Tax liability</em>}' attribute.
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @param value the new value of the '<em>Tax liability</em>' attribute.
192 * @see #getTax_liability()
193 * @generated
194 */
195 void setTax_liability(double value);
196
197 /**
198 * Returns the value of the '<em><b>Tax Payer</b></em>' container reference.
199 * It is bidirectional and its opposite is '{@link Taxation.Tax_Payer#getIncomes <em>Incomes</em>}'.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @return the value of the '<em>Tax Payer</em>' container reference.
203 * @see #setTaxPayer(Tax_Payer)
204 * @see Taxation.TaxationPackage#getIncome_TaxPayer()
205 * @see Taxation.Tax_Payer#getIncomes
206 * @model opposite="incomes" required="true" transient="false" ordered="false"
207 * @generated
208 */
209 Tax_Payer getTaxPayer();
210
211 /**
212 * Sets the value of the '{@link Taxation.Income#getTaxPayer <em>Tax Payer</em>}' container reference.
213 * <!-- begin-user-doc -->
214 * <!-- end-user-doc -->
215 * @param value the new value of the '<em>Tax Payer</em>' container reference.
216 * @see #getTaxPayer()
217 * @generated
218 */
219 void setTaxPayer(Tax_Payer value);
220
221 /**
222 * Returns the value of the '<em><b>Details</b></em>' containment reference list.
223 * The list contents are of type {@link Taxation.Income_Detail}.
224 * It is bidirectional and its opposite is '{@link Taxation.Income_Detail#getIncome <em>Income</em>}'.
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @return the value of the '<em>Details</em>' containment reference list.
228 * @see Taxation.TaxationPackage#getIncome_Details()
229 * @see Taxation.Income_Detail#getIncome
230 * @model opposite="income" containment="true" lower="12" upper="12"
231 * @generated
232 */
233 EList<Income_Detail> getDetails();
234
235 /**
236 * Returns the value of the '<em><b>Num</b></em>' attribute.
237 * <!-- begin-user-doc -->
238 * <!-- end-user-doc -->
239 * @return the value of the '<em>Num</em>' attribute.
240 * @see #setNum(int)
241 * @see Taxation.TaxationPackage#getIncome_Num()
242 * @model id="true" required="true" ordered="false"
243 * @generated
244 */
245 int getNum();
246
247 /**
248 * Sets the value of the '{@link Taxation.Income#getNum <em>Num</em>}' attribute.
249 * <!-- begin-user-doc -->
250 * <!-- end-user-doc -->
251 * @param value the new value of the '<em>Num</em>' attribute.
252 * @see #getNum()
253 * @generated
254 */
255 void setNum(int value);
256
257 /**
258 * Returns the value of the '<em><b>Expenses</b></em>' containment reference list.
259 * The list contents are of type {@link Taxation.Expense}.
260 * It is bidirectional and its opposite is '{@link Taxation.Expense#getIncome <em>Income</em>}'.
261 * <!-- begin-user-doc -->
262 * <!-- end-user-doc -->
263 * @return the value of the '<em>Expenses</em>' containment reference list.
264 * @see Taxation.TaxationPackage#getIncome_Expenses()
265 * @see Taxation.Expense#getIncome
266 * @model opposite="income" containment="true" ordered="false"
267 * @generated
268 */
269 EList<Expense> getExpenses();
270
271} // Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Detail.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Detail.java
new file mode 100644
index 00000000..1613b281
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Detail.java
@@ -0,0 +1,186 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Income Detail</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Income_Detail#getAmount <em>Amount</em>}</li>
17 * <li>{@link Taxation.Income_Detail#isIs_worked <em>Is worked</em>}</li>
18 * <li>{@link Taxation.Income_Detail#getDistance <em>Distance</em>}</li>
19 * <li>{@link Taxation.Income_Detail#getWorked_days <em>Worked days</em>}</li>
20 * <li>{@link Taxation.Income_Detail#isIs_contributing_CNS <em>Is contributing CNS</em>}</li>
21 * <li>{@link Taxation.Income_Detail#getId5 <em>Id5</em>}</li>
22 * <li>{@link Taxation.Income_Detail#getIncome <em>Income</em>}</li>
23 * </ul>
24 *
25 * @see Taxation.TaxationPackage#getIncome_Detail()
26 * @model
27 * @generated
28 */
29public interface Income_Detail extends EObject {
30 /**
31 * Returns the value of the '<em><b>Amount</b></em>' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @return the value of the '<em>Amount</em>' attribute.
35 * @see #setAmount(double)
36 * @see Taxation.TaxationPackage#getIncome_Detail_Amount()
37 * @model required="true"
38 * @generated
39 */
40 double getAmount();
41
42 /**
43 * Sets the value of the '{@link Taxation.Income_Detail#getAmount <em>Amount</em>}' attribute.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @param value the new value of the '<em>Amount</em>' attribute.
47 * @see #getAmount()
48 * @generated
49 */
50 void setAmount(double value);
51
52 /**
53 * Returns the value of the '<em><b>Is worked</b></em>' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @return the value of the '<em>Is worked</em>' attribute.
57 * @see #setIs_worked(boolean)
58 * @see Taxation.TaxationPackage#getIncome_Detail_Is_worked()
59 * @model required="true"
60 * @generated
61 */
62 boolean isIs_worked();
63
64 /**
65 * Sets the value of the '{@link Taxation.Income_Detail#isIs_worked <em>Is worked</em>}' attribute.
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @param value the new value of the '<em>Is worked</em>' attribute.
69 * @see #isIs_worked()
70 * @generated
71 */
72 void setIs_worked(boolean value);
73
74 /**
75 * Returns the value of the '<em><b>Distance</b></em>' attribute.
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @return the value of the '<em>Distance</em>' attribute.
79 * @see #setDistance(double)
80 * @see Taxation.TaxationPackage#getIncome_Detail_Distance()
81 * @model required="true"
82 * @generated
83 */
84 double getDistance();
85
86 /**
87 * Sets the value of the '{@link Taxation.Income_Detail#getDistance <em>Distance</em>}' attribute.
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @param value the new value of the '<em>Distance</em>' attribute.
91 * @see #getDistance()
92 * @generated
93 */
94 void setDistance(double value);
95
96 /**
97 * Returns the value of the '<em><b>Worked days</b></em>' attribute.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @return the value of the '<em>Worked days</em>' attribute.
101 * @see #setWorked_days(int)
102 * @see Taxation.TaxationPackage#getIncome_Detail_Worked_days()
103 * @model required="true"
104 * @generated
105 */
106 int getWorked_days();
107
108 /**
109 * Sets the value of the '{@link Taxation.Income_Detail#getWorked_days <em>Worked days</em>}' attribute.
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @param value the new value of the '<em>Worked days</em>' attribute.
113 * @see #getWorked_days()
114 * @generated
115 */
116 void setWorked_days(int value);
117
118 /**
119 * Returns the value of the '<em><b>Is contributing CNS</b></em>' attribute.
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @return the value of the '<em>Is contributing CNS</em>' attribute.
123 * @see #setIs_contributing_CNS(boolean)
124 * @see Taxation.TaxationPackage#getIncome_Detail_Is_contributing_CNS()
125 * @model required="true" ordered="false"
126 * @generated
127 */
128 boolean isIs_contributing_CNS();
129
130 /**
131 * Sets the value of the '{@link Taxation.Income_Detail#isIs_contributing_CNS <em>Is contributing CNS</em>}' attribute.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @param value the new value of the '<em>Is contributing CNS</em>' attribute.
135 * @see #isIs_contributing_CNS()
136 * @generated
137 */
138 void setIs_contributing_CNS(boolean value);
139
140 /**
141 * Returns the value of the '<em><b>Id5</b></em>' attribute.
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @return the value of the '<em>Id5</em>' attribute.
145 * @see #setId5(String)
146 * @see Taxation.TaxationPackage#getIncome_Detail_Id5()
147 * @model id="true" required="true" ordered="false"
148 * @generated
149 */
150 String getId5();
151
152 /**
153 * Sets the value of the '{@link Taxation.Income_Detail#getId5 <em>Id5</em>}' attribute.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @param value the new value of the '<em>Id5</em>' attribute.
157 * @see #getId5()
158 * @generated
159 */
160 void setId5(String value);
161
162 /**
163 * Returns the value of the '<em><b>Income</b></em>' container reference.
164 * It is bidirectional and its opposite is '{@link Taxation.Income#getDetails <em>Details</em>}'.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @return the value of the '<em>Income</em>' container reference.
168 * @see #setIncome(Income)
169 * @see Taxation.TaxationPackage#getIncome_Detail_Income()
170 * @see Taxation.Income#getDetails
171 * @model opposite="details" required="true" transient="false"
172 * @generated
173 */
174 Income getIncome();
175
176 /**
177 * Sets the value of the '{@link Taxation.Income_Detail#getIncome <em>Income</em>}' container reference.
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @param value the new value of the '<em>Income</em>' container reference.
181 * @see #getIncome()
182 * @generated
183 */
184 void setIncome(Income value);
185
186} // Income_Detail
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax.java
new file mode 100644
index 00000000..b78b7c88
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax.java
@@ -0,0 +1,115 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Income Tax</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Income_Tax#getTaxPayer <em>Tax Payer</em>}</li>
17 * <li>{@link Taxation.Income_Tax#getTax_amount <em>Tax amount</em>}</li>
18 * <li>{@link Taxation.Income_Tax#getTax_year <em>Tax year</em>}</li>
19 * <li>{@link Taxation.Income_Tax#getId6 <em>Id6</em>}</li>
20 * </ul>
21 *
22 * @see Taxation.TaxationPackage#getIncome_Tax()
23 * @model
24 * @generated
25 */
26public interface Income_Tax extends EObject {
27 /**
28 * Returns the value of the '<em><b>Tax Payer</b></em>' reference.
29 * <!-- begin-user-doc -->
30 * <!-- end-user-doc -->
31 * @return the value of the '<em>Tax Payer</em>' reference.
32 * @see #setTaxPayer(Tax_Payer)
33 * @see Taxation.TaxationPackage#getIncome_Tax_TaxPayer()
34 * @model required="true"
35 * @generated
36 */
37 Tax_Payer getTaxPayer();
38
39 /**
40 * Sets the value of the '{@link Taxation.Income_Tax#getTaxPayer <em>Tax Payer</em>}' reference.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Tax Payer</em>' reference.
44 * @see #getTaxPayer()
45 * @generated
46 */
47 void setTaxPayer(Tax_Payer value);
48
49 /**
50 * Returns the value of the '<em><b>Tax amount</b></em>' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @return the value of the '<em>Tax amount</em>' attribute.
54 * @see #setTax_amount(double)
55 * @see Taxation.TaxationPackage#getIncome_Tax_Tax_amount()
56 * @model required="true"
57 * @generated
58 */
59 double getTax_amount();
60
61 /**
62 * Sets the value of the '{@link Taxation.Income_Tax#getTax_amount <em>Tax amount</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @param value the new value of the '<em>Tax amount</em>' attribute.
66 * @see #getTax_amount()
67 * @generated
68 */
69 void setTax_amount(double value);
70
71 /**
72 * Returns the value of the '<em><b>Tax year</b></em>' attribute.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @return the value of the '<em>Tax year</em>' attribute.
76 * @see #setTax_year(int)
77 * @see Taxation.TaxationPackage#getIncome_Tax_Tax_year()
78 * @model required="true"
79 * @generated
80 */
81 int getTax_year();
82
83 /**
84 * Sets the value of the '{@link Taxation.Income_Tax#getTax_year <em>Tax year</em>}' attribute.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @param value the new value of the '<em>Tax year</em>' attribute.
88 * @see #getTax_year()
89 * @generated
90 */
91 void setTax_year(int value);
92
93 /**
94 * Returns the value of the '<em><b>Id6</b></em>' attribute.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @return the value of the '<em>Id6</em>' attribute.
98 * @see #setId6(String)
99 * @see Taxation.TaxationPackage#getIncome_Tax_Id6()
100 * @model id="true" required="true" ordered="false"
101 * @generated
102 */
103 String getId6();
104
105 /**
106 * Sets the value of the '{@link Taxation.Income_Tax#getId6 <em>Id6</em>}' attribute.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param value the new value of the '<em>Id6</em>' attribute.
110 * @see #getId6()
111 * @generated
112 */
113 void setId6(String value);
114
115} // Income_Tax
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax_Credit.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax_Credit.java
new file mode 100644
index 00000000..69ee9ed2
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Tax_Credit.java
@@ -0,0 +1,215 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Income Tax Credit</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Income_Tax_Credit#getGrantedBy <em>Granted By</em>}</li>
17 * <li>{@link Taxation.Income_Tax_Credit#getTaxPayer <em>Tax Payer</em>}</li>
18 * <li>{@link Taxation.Income_Tax_Credit#getTax_year <em>Tax year</em>}</li>
19 * <li>{@link Taxation.Income_Tax_Credit#getYearly <em>Yearly</em>}</li>
20 * <li>{@link Taxation.Income_Tax_Credit#getMonthly <em>Monthly</em>}</li>
21 * <li>{@link Taxation.Income_Tax_Credit#getDaily <em>Daily</em>}</li>
22 * <li>{@link Taxation.Income_Tax_Credit#getId7 <em>Id7</em>}</li>
23 * <li>{@link Taxation.Income_Tax_Credit#getTaxation_Frame <em>Taxation Frame</em>}</li>
24 * </ul>
25 *
26 * @see Taxation.TaxationPackage#getIncome_Tax_Credit()
27 * @model
28 * @generated
29 */
30public interface Income_Tax_Credit extends EObject {
31 /**
32 * Returns the value of the '<em><b>Granted By</b></em>' attribute.
33 * The literals are from the enumeration {@link Taxation.Grantor}.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @return the value of the '<em>Granted By</em>' attribute.
37 * @see Taxation.Grantor
38 * @see #setGrantedBy(Grantor)
39 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_GrantedBy()
40 * @model required="true"
41 * @generated
42 */
43 Grantor getGrantedBy();
44
45 /**
46 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getGrantedBy <em>Granted By</em>}' attribute.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @param value the new value of the '<em>Granted By</em>' attribute.
50 * @see Taxation.Grantor
51 * @see #getGrantedBy()
52 * @generated
53 */
54 void setGrantedBy(Grantor value);
55
56 /**
57 * Returns the value of the '<em><b>Tax Payer</b></em>' reference.
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @return the value of the '<em>Tax Payer</em>' reference.
61 * @see #setTaxPayer(Tax_Payer)
62 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_TaxPayer()
63 * @model
64 * @generated
65 */
66 Tax_Payer getTaxPayer();
67
68 /**
69 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getTaxPayer <em>Tax Payer</em>}' reference.
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @param value the new value of the '<em>Tax Payer</em>' reference.
73 * @see #getTaxPayer()
74 * @generated
75 */
76 void setTaxPayer(Tax_Payer value);
77
78 /**
79 * Returns the value of the '<em><b>Tax year</b></em>' attribute.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return the value of the '<em>Tax year</em>' attribute.
83 * @see #setTax_year(int)
84 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_Tax_year()
85 * @model required="true"
86 * @generated
87 */
88 int getTax_year();
89
90 /**
91 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getTax_year <em>Tax year</em>}' attribute.
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @param value the new value of the '<em>Tax year</em>' attribute.
95 * @see #getTax_year()
96 * @generated
97 */
98 void setTax_year(int value);
99
100 /**
101 * Returns the value of the '<em><b>Yearly</b></em>' attribute.
102 * The default value is <code>"300.0"</code>.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @return the value of the '<em>Yearly</em>' attribute.
106 * @see #setYearly(double)
107 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_Yearly()
108 * @model default="300.0" required="true"
109 * @generated
110 */
111 double getYearly();
112
113 /**
114 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getYearly <em>Yearly</em>}' attribute.
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @param value the new value of the '<em>Yearly</em>' attribute.
118 * @see #getYearly()
119 * @generated
120 */
121 void setYearly(double value);
122
123 /**
124 * Returns the value of the '<em><b>Monthly</b></em>' attribute.
125 * The default value is <code>"25.0"</code>.
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @return the value of the '<em>Monthly</em>' attribute.
129 * @see #setMonthly(double)
130 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_Monthly()
131 * @model default="25.0" required="true"
132 * @generated
133 */
134 double getMonthly();
135
136 /**
137 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getMonthly <em>Monthly</em>}' attribute.
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @param value the new value of the '<em>Monthly</em>' attribute.
141 * @see #getMonthly()
142 * @generated
143 */
144 void setMonthly(double value);
145
146 /**
147 * Returns the value of the '<em><b>Daily</b></em>' attribute.
148 * The default value is <code>"1.0"</code>.
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @return the value of the '<em>Daily</em>' attribute.
152 * @see #setDaily(double)
153 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_Daily()
154 * @model default="1.0" required="true"
155 * @generated
156 */
157 double getDaily();
158
159 /**
160 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getDaily <em>Daily</em>}' attribute.
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @param value the new value of the '<em>Daily</em>' attribute.
164 * @see #getDaily()
165 * @generated
166 */
167 void setDaily(double value);
168
169 /**
170 * Returns the value of the '<em><b>Id7</b></em>' attribute.
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @return the value of the '<em>Id7</em>' attribute.
174 * @see #setId7(String)
175 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_Id7()
176 * @model id="true" required="true" ordered="false"
177 * @generated
178 */
179 String getId7();
180
181 /**
182 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getId7 <em>Id7</em>}' attribute.
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @param value the new value of the '<em>Id7</em>' attribute.
186 * @see #getId7()
187 * @generated
188 */
189 void setId7(String value);
190
191 /**
192 * Returns the value of the '<em><b>Taxation Frame</b></em>' reference.
193 * It is bidirectional and its opposite is '{@link Taxation.Tax_Card#getIncome_Tax_Credit <em>Income Tax Credit</em>}'.
194 * <!-- begin-user-doc -->
195 * <!-- end-user-doc -->
196 * @return the value of the '<em>Taxation Frame</em>' reference.
197 * @see #setTaxation_Frame(Tax_Card)
198 * @see Taxation.TaxationPackage#getIncome_Tax_Credit_Taxation_Frame()
199 * @see Taxation.Tax_Card#getIncome_Tax_Credit
200 * @model opposite="income_Tax_Credit"
201 * @generated
202 */
203 Tax_Card getTaxation_Frame();
204
205 /**
206 * Sets the value of the '{@link Taxation.Income_Tax_Credit#getTaxation_Frame <em>Taxation Frame</em>}' reference.
207 * <!-- begin-user-doc -->
208 * <!-- end-user-doc -->
209 * @param value the new value of the '<em>Taxation Frame</em>' reference.
210 * @see #getTaxation_Frame()
211 * @generated
212 */
213 void setTaxation_Frame(Tax_Card value);
214
215} // Income_Tax_Credit
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Type.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Type.java
new file mode 100644
index 00000000..3d7d03b1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Income_Type.java
@@ -0,0 +1,95 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Income Type</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Income_Type#isSubjectToWithholdingTax <em>Subject To Withholding Tax</em>}</li>
17 * <li>{@link Taxation.Income_Type#getId8 <em>Id8</em>}</li>
18 * <li>{@link Taxation.Income_Type#getIncome <em>Income</em>}</li>
19 * </ul>
20 *
21 * @see Taxation.TaxationPackage#getIncome_Type()
22 * @model abstract="true"
23 * @generated
24 */
25public interface Income_Type extends EObject {
26 /**
27 * Returns the value of the '<em><b>Subject To Withholding Tax</b></em>' attribute.
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @return the value of the '<em>Subject To Withholding Tax</em>' attribute.
31 * @see #setSubjectToWithholdingTax(boolean)
32 * @see Taxation.TaxationPackage#getIncome_Type_SubjectToWithholdingTax()
33 * @model required="true" derived="true"
34 * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='\n\t\t\t\tself.income.tax_card-&gt;notEmpty()\n\t\t\t\t'"
35 * @generated
36 */
37 boolean isSubjectToWithholdingTax();
38
39 /**
40 * Sets the value of the '{@link Taxation.Income_Type#isSubjectToWithholdingTax <em>Subject To Withholding Tax</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @param value the new value of the '<em>Subject To Withholding Tax</em>' attribute.
44 * @see #isSubjectToWithholdingTax()
45 * @generated
46 */
47 void setSubjectToWithholdingTax(boolean value);
48
49 /**
50 * Returns the value of the '<em><b>Id8</b></em>' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @return the value of the '<em>Id8</em>' attribute.
54 * @see #setId8(String)
55 * @see Taxation.TaxationPackage#getIncome_Type_Id8()
56 * @model id="true" required="true" ordered="false"
57 * @generated
58 */
59 String getId8();
60
61 /**
62 * Sets the value of the '{@link Taxation.Income_Type#getId8 <em>Id8</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @param value the new value of the '<em>Id8</em>' attribute.
66 * @see #getId8()
67 * @generated
68 */
69 void setId8(String value);
70
71 /**
72 * Returns the value of the '<em><b>Income</b></em>' container reference.
73 * It is bidirectional and its opposite is '{@link Taxation.Income#getIncome_type <em>Income type</em>}'.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @return the value of the '<em>Income</em>' container reference.
77 * @see #setIncome(Income)
78 * @see Taxation.TaxationPackage#getIncome_Type_Income()
79 * @see Taxation.Income#getIncome_type
80 * @model opposite="income_type" required="true" transient="false"
81 * @generated
82 */
83 Income getIncome();
84
85 /**
86 * Sets the value of the '{@link Taxation.Income_Type#getIncome <em>Income</em>}' container reference.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @param value the new value of the '<em>Income</em>' container reference.
90 * @see #getIncome()
91 * @generated
92 */
93 void setIncome(Income value);
94
95} // Income_Type
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Interest_Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Interest_Expense.java
new file mode 100644
index 00000000..fc0e1f1f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Interest_Expense.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Interest Expense</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getInterest_Expense()
13 * @model
14 * @generated
15 */
16public interface Interest_Expense extends Special_Expense_DS {
17} // Interest_Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Job_Activity.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Job_Activity.java
new file mode 100644
index 00000000..aee76b1b
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Job_Activity.java
@@ -0,0 +1,232 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Job Activity</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getJob_Activity()
17 * @model
18 * @generated
19 */
20public enum Job_Activity implements Enumerator {
21 /**
22 * The '<em><b>Salary</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #SALARY_VALUE
26 * @generated
27 * @ordered
28 */
29 SALARY(0, "Salary", "Salary"),
30
31 /**
32 * The '<em><b>Pension</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #PENSION_VALUE
36 * @generated
37 * @ordered
38 */
39 PENSION(1, "Pension", "Pension"),
40
41 /**
42 * The '<em><b>Annuity</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #ANNUITY_VALUE
46 * @generated
47 * @ordered
48 */
49 ANNUITY(2, "Annuity", "Annuity");
50
51 /**
52 * The '<em><b>Salary</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #SALARY
56 * @model name="Salary"
57 * @generated
58 * @ordered
59 */
60 public static final int SALARY_VALUE = 0;
61
62 /**
63 * The '<em><b>Pension</b></em>' literal value.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #PENSION
67 * @model name="Pension"
68 * @generated
69 * @ordered
70 */
71 public static final int PENSION_VALUE = 1;
72
73 /**
74 * The '<em><b>Annuity</b></em>' literal value.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #ANNUITY
78 * @model name="Annuity"
79 * @generated
80 * @ordered
81 */
82 public static final int ANNUITY_VALUE = 2;
83
84 /**
85 * An array of all the '<em><b>Job Activity</b></em>' enumerators.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 private static final Job_Activity[] VALUES_ARRAY =
91 new Job_Activity[] {
92 SALARY,
93 PENSION,
94 ANNUITY,
95 };
96
97 /**
98 * A public read-only list of all the '<em><b>Job Activity</b></em>' enumerators.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 public static final List<Job_Activity> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
104
105 /**
106 * Returns the '<em><b>Job Activity</b></em>' literal with the specified literal value.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param literal the literal.
110 * @return the matching enumerator or <code>null</code>.
111 * @generated
112 */
113 public static Job_Activity get(String literal) {
114 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
115 Job_Activity result = VALUES_ARRAY[i];
116 if (result.toString().equals(literal)) {
117 return result;
118 }
119 }
120 return null;
121 }
122
123 /**
124 * Returns the '<em><b>Job Activity</b></em>' literal with the specified name.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @param name the name.
128 * @return the matching enumerator or <code>null</code>.
129 * @generated
130 */
131 public static Job_Activity getByName(String name) {
132 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
133 Job_Activity result = VALUES_ARRAY[i];
134 if (result.getName().equals(name)) {
135 return result;
136 }
137 }
138 return null;
139 }
140
141 /**
142 * Returns the '<em><b>Job Activity</b></em>' literal with the specified integer value.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @param value the integer value.
146 * @return the matching enumerator or <code>null</code>.
147 * @generated
148 */
149 public static Job_Activity get(int value) {
150 switch (value) {
151 case SALARY_VALUE: return SALARY;
152 case PENSION_VALUE: return PENSION;
153 case ANNUITY_VALUE: return ANNUITY;
154 }
155 return null;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 private final int value;
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 private final String name;
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 private final String literal;
178
179 /**
180 * Only this class can construct instances.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 private Job_Activity(int value, String name, String literal) {
186 this.value = value;
187 this.name = name;
188 this.literal = literal;
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public int getValue() {
198 return value;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public String getName() {
208 return name;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getLiteral() {
218 return literal;
219 }
220
221 /**
222 * Returns the literal value of the enumerator, which is its string representation.
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public String toString() {
229 return literal;
230 }
231
232} //Job_Activity
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Record.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Record.java
new file mode 100644
index 00000000..47a5d766
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Record.java
@@ -0,0 +1,221 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Legal Union Record</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link Taxation.Legal_Union_Record#getStart_year <em>Start year</em>}</li>
19 * <li>{@link Taxation.Legal_Union_Record#getEnd_year <em>End year</em>}</li>
20 * <li>{@link Taxation.Legal_Union_Record#getSeparation_cause <em>Separation cause</em>}</li>
21 * <li>{@link Taxation.Legal_Union_Record#getIndividual_A <em>Individual A</em>}</li>
22 * <li>{@link Taxation.Legal_Union_Record#getIndividual_B <em>Individual B</em>}</li>
23 * <li>{@link Taxation.Legal_Union_Record#getProperties <em>Properties</em>}</li>
24 * <li>{@link Taxation.Legal_Union_Record#isMutual_agreement <em>Mutual agreement</em>}</li>
25 * <li>{@link Taxation.Legal_Union_Record#getId9 <em>Id9</em>}</li>
26 * <li>{@link Taxation.Legal_Union_Record#getHousehold <em>Household</em>}</li>
27 * </ul>
28 *
29 * @see Taxation.TaxationPackage#getLegal_Union_Record()
30 * @model abstract="true"
31 * @generated
32 */
33public interface Legal_Union_Record extends EObject {
34 /**
35 * Returns the value of the '<em><b>Start year</b></em>' attribute.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @return the value of the '<em>Start year</em>' attribute.
39 * @see #setStart_year(int)
40 * @see Taxation.TaxationPackage#getLegal_Union_Record_Start_year()
41 * @model required="true"
42 * @generated
43 */
44 int getStart_year();
45
46 /**
47 * Sets the value of the '{@link Taxation.Legal_Union_Record#getStart_year <em>Start year</em>}' attribute.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param value the new value of the '<em>Start year</em>' attribute.
51 * @see #getStart_year()
52 * @generated
53 */
54 void setStart_year(int value);
55
56 /**
57 * Returns the value of the '<em><b>End year</b></em>' attribute.
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @return the value of the '<em>End year</em>' attribute.
61 * @see #setEnd_year(int)
62 * @see Taxation.TaxationPackage#getLegal_Union_Record_End_year()
63 * @model required="true"
64 * @generated
65 */
66 int getEnd_year();
67
68 /**
69 * Sets the value of the '{@link Taxation.Legal_Union_Record#getEnd_year <em>End year</em>}' attribute.
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @param value the new value of the '<em>End year</em>' attribute.
73 * @see #getEnd_year()
74 * @generated
75 */
76 void setEnd_year(int value);
77
78 /**
79 * Returns the value of the '<em><b>Separation cause</b></em>' attribute.
80 * The literals are from the enumeration {@link Taxation.Separation_Causes}.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @return the value of the '<em>Separation cause</em>' attribute.
84 * @see Taxation.Separation_Causes
85 * @see #setSeparation_cause(Separation_Causes)
86 * @see Taxation.TaxationPackage#getLegal_Union_Record_Separation_cause()
87 * @model required="true" ordered="false"
88 * @generated
89 */
90 Separation_Causes getSeparation_cause();
91
92 /**
93 * Sets the value of the '{@link Taxation.Legal_Union_Record#getSeparation_cause <em>Separation cause</em>}' attribute.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @param value the new value of the '<em>Separation cause</em>' attribute.
97 * @see Taxation.Separation_Causes
98 * @see #getSeparation_cause()
99 * @generated
100 */
101 void setSeparation_cause(Separation_Causes value);
102
103 /**
104 * Returns the value of the '<em><b>Individual A</b></em>' containment reference.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @return the value of the '<em>Individual A</em>' containment reference.
108 * @see #setIndividual_A(Physical_Person)
109 * @see Taxation.TaxationPackage#getLegal_Union_Record_Individual_A()
110 * @model containment="true" required="true" ordered="false"
111 * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='legal_union_A'"
112 * @generated
113 */
114 Physical_Person getIndividual_A();
115
116 /**
117 * Sets the value of the '{@link Taxation.Legal_Union_Record#getIndividual_A <em>Individual A</em>}' containment reference.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @param value the new value of the '<em>Individual A</em>' containment reference.
121 * @see #getIndividual_A()
122 * @generated
123 */
124 void setIndividual_A(Physical_Person value);
125
126 /**
127 * Returns the value of the '<em><b>Individual B</b></em>' containment reference list.
128 * The list contents are of type {@link Taxation.Physical_Person}.
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @return the value of the '<em>Individual B</em>' containment reference list.
132 * @see Taxation.TaxationPackage#getLegal_Union_Record_Individual_B()
133 * @model containment="true" required="true" ordered="false"
134 * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='legal_union_B'"
135 * @generated
136 */
137 EList<Physical_Person> getIndividual_B();
138
139 /**
140 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
141 * The list contents are of type {@link Taxation.Tax_Property}.
142 * It is bidirectional and its opposite is '{@link Taxation.Tax_Property#getUnion_record <em>Union record</em>}'.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @return the value of the '<em>Properties</em>' containment reference list.
146 * @see Taxation.TaxationPackage#getLegal_Union_Record_Properties()
147 * @see Taxation.Tax_Property#getUnion_record
148 * @model opposite="union_record" containment="true" required="true" ordered="false"
149 * @generated
150 */
151 EList<Tax_Property> getProperties();
152
153 /**
154 * Returns the value of the '<em><b>Mutual agreement</b></em>' attribute.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @return the value of the '<em>Mutual agreement</em>' attribute.
158 * @see #setMutual_agreement(boolean)
159 * @see Taxation.TaxationPackage#getLegal_Union_Record_Mutual_agreement()
160 * @model required="true" ordered="false"
161 * @generated
162 */
163 boolean isMutual_agreement();
164
165 /**
166 * Sets the value of the '{@link Taxation.Legal_Union_Record#isMutual_agreement <em>Mutual agreement</em>}' attribute.
167 * <!-- begin-user-doc -->
168 * <!-- end-user-doc -->
169 * @param value the new value of the '<em>Mutual agreement</em>' attribute.
170 * @see #isMutual_agreement()
171 * @generated
172 */
173 void setMutual_agreement(boolean value);
174
175 /**
176 * Returns the value of the '<em><b>Id9</b></em>' attribute.
177 * <!-- begin-user-doc -->
178 * <!-- end-user-doc -->
179 * @return the value of the '<em>Id9</em>' attribute.
180 * @see #setId9(String)
181 * @see Taxation.TaxationPackage#getLegal_Union_Record_Id9()
182 * @model id="true" required="true" ordered="false"
183 * @generated
184 */
185 String getId9();
186
187 /**
188 * Sets the value of the '{@link Taxation.Legal_Union_Record#getId9 <em>Id9</em>}' attribute.
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @param value the new value of the '<em>Id9</em>' attribute.
192 * @see #getId9()
193 * @generated
194 */
195 void setId9(String value);
196
197 /**
198 * Returns the value of the '<em><b>Household</b></em>' container reference.
199 * It is bidirectional and its opposite is '{@link Taxation.Household#getParents <em>Parents</em>}'.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @return the value of the '<em>Household</em>' container reference.
203 * @see #setHousehold(Household)
204 * @see Taxation.TaxationPackage#getLegal_Union_Record_Household()
205 * @see Taxation.Household#getParents
206 * @model opposite="parents" required="true" transient="false" ordered="false"
207 * @generated
208 */
209 Household getHousehold();
210
211 /**
212 * Sets the value of the '{@link Taxation.Legal_Union_Record#getHousehold <em>Household</em>}' container reference.
213 * <!-- begin-user-doc -->
214 * <!-- end-user-doc -->
215 * @param value the new value of the '<em>Household</em>' container reference.
216 * @see #getHousehold()
217 * @generated
218 */
219 void setHousehold(Household value);
220
221} // Legal_Union_Record
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Types.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Types.java
new file mode 100644
index 00000000..3f613efa
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Legal_Union_Types.java
@@ -0,0 +1,232 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Legal Union Types</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getLegal_Union_Types()
17 * @model
18 * @generated
19 */
20public enum Legal_Union_Types implements Enumerator {
21 /**
22 * The '<em><b>MARIAGE</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #MARIAGE_VALUE
26 * @generated
27 * @ordered
28 */
29 MARIAGE(0, "MARIAGE", "MARIAGE"),
30
31 /**
32 * The '<em><b>PARTNERSHIP</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #PARTNERSHIP_VALUE
36 * @generated
37 * @ordered
38 */
39 PARTNERSHIP(1, "PARTNERSHIP", "PARTNERSHIP"),
40
41 /**
42 * The '<em><b>OTHER</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #OTHER_VALUE
46 * @generated
47 * @ordered
48 */
49 OTHER(2, "OTHER", "OTHER");
50
51 /**
52 * The '<em><b>MARIAGE</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #MARIAGE
56 * @model
57 * @generated
58 * @ordered
59 */
60 public static final int MARIAGE_VALUE = 0;
61
62 /**
63 * The '<em><b>PARTNERSHIP</b></em>' literal value.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #PARTNERSHIP
67 * @model
68 * @generated
69 * @ordered
70 */
71 public static final int PARTNERSHIP_VALUE = 1;
72
73 /**
74 * The '<em><b>OTHER</b></em>' literal value.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #OTHER
78 * @model
79 * @generated
80 * @ordered
81 */
82 public static final int OTHER_VALUE = 2;
83
84 /**
85 * An array of all the '<em><b>Legal Union Types</b></em>' enumerators.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 private static final Legal_Union_Types[] VALUES_ARRAY =
91 new Legal_Union_Types[] {
92 MARIAGE,
93 PARTNERSHIP,
94 OTHER,
95 };
96
97 /**
98 * A public read-only list of all the '<em><b>Legal Union Types</b></em>' enumerators.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 public static final List<Legal_Union_Types> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
104
105 /**
106 * Returns the '<em><b>Legal Union Types</b></em>' literal with the specified literal value.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param literal the literal.
110 * @return the matching enumerator or <code>null</code>.
111 * @generated
112 */
113 public static Legal_Union_Types get(String literal) {
114 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
115 Legal_Union_Types result = VALUES_ARRAY[i];
116 if (result.toString().equals(literal)) {
117 return result;
118 }
119 }
120 return null;
121 }
122
123 /**
124 * Returns the '<em><b>Legal Union Types</b></em>' literal with the specified name.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @param name the name.
128 * @return the matching enumerator or <code>null</code>.
129 * @generated
130 */
131 public static Legal_Union_Types getByName(String name) {
132 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
133 Legal_Union_Types result = VALUES_ARRAY[i];
134 if (result.getName().equals(name)) {
135 return result;
136 }
137 }
138 return null;
139 }
140
141 /**
142 * Returns the '<em><b>Legal Union Types</b></em>' literal with the specified integer value.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @param value the integer value.
146 * @return the matching enumerator or <code>null</code>.
147 * @generated
148 */
149 public static Legal_Union_Types get(int value) {
150 switch (value) {
151 case MARIAGE_VALUE: return MARIAGE;
152 case PARTNERSHIP_VALUE: return PARTNERSHIP;
153 case OTHER_VALUE: return OTHER;
154 }
155 return null;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 private final int value;
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 private final String name;
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 private final String literal;
178
179 /**
180 * Only this class can construct instances.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 private Legal_Union_Types(int value, String name, String literal) {
186 this.value = value;
187 this.name = name;
188 this.literal = literal;
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public int getValue() {
198 return value;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public String getName() {
208 return name;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getLiteral() {
218 return literal;
219 }
220
221 /**
222 * Returns the literal value of the enumerator, which is its string representation.
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public String toString() {
229 return literal;
230 }
231
232} //Legal_Union_Types
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Local_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Local_Income.java
new file mode 100644
index 00000000..c01ecef5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Local_Income.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Local Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getLocal_Income()
13 * @model
14 * @generated
15 */
16public interface Local_Income extends Income {
17} // Local_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Loss_Carryforward.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Loss_Carryforward.java
new file mode 100644
index 00000000..e2ecfb38
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Loss_Carryforward.java
@@ -0,0 +1,116 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Loss Carryforward</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Loss_Carryforward#isRegular_accountability <em>Regular accountability</em>}</li>
16 * <li>{@link Taxation.Loss_Carryforward#isCompensation_by_other_means <em>Compensation by other means</em>}</li>
17 * <li>{@link Taxation.Loss_Carryforward#isTax_payer_has_inherited_business_ownership <em>Tax payer has inherited business ownership</em>}</li>
18 * <li>{@link Taxation.Loss_Carryforward#isTax_payer_has_been_partner_in_business <em>Tax payer has been partner in business</em>}</li>
19 * </ul>
20 *
21 * @see Taxation.TaxationPackage#getLoss_Carryforward()
22 * @model
23 * @generated
24 */
25public interface Loss_Carryforward extends Special_Expense_DS {
26 /**
27 * Returns the value of the '<em><b>Regular accountability</b></em>' attribute.
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @return the value of the '<em>Regular accountability</em>' attribute.
31 * @see #setRegular_accountability(boolean)
32 * @see Taxation.TaxationPackage#getLoss_Carryforward_Regular_accountability()
33 * @model required="true" derived="true"
34 * @generated
35 */
36 boolean isRegular_accountability();
37
38 /**
39 * Sets the value of the '{@link Taxation.Loss_Carryforward#isRegular_accountability <em>Regular accountability</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @param value the new value of the '<em>Regular accountability</em>' attribute.
43 * @see #isRegular_accountability()
44 * @generated
45 */
46 void setRegular_accountability(boolean value);
47
48 /**
49 * Returns the value of the '<em><b>Compensation by other means</b></em>' attribute.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @return the value of the '<em>Compensation by other means</em>' attribute.
53 * @see #setCompensation_by_other_means(boolean)
54 * @see Taxation.TaxationPackage#getLoss_Carryforward_Compensation_by_other_means()
55 * @model required="true" derived="true"
56 * @generated
57 */
58 boolean isCompensation_by_other_means();
59
60 /**
61 * Sets the value of the '{@link Taxation.Loss_Carryforward#isCompensation_by_other_means <em>Compensation by other means</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @param value the new value of the '<em>Compensation by other means</em>' attribute.
65 * @see #isCompensation_by_other_means()
66 * @generated
67 */
68 void setCompensation_by_other_means(boolean value);
69
70 /**
71 * Returns the value of the '<em><b>Tax payer has inherited business ownership</b></em>' attribute.
72 * The default value is <code>"false"</code>.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @return the value of the '<em>Tax payer has inherited business ownership</em>' attribute.
76 * @see #setTax_payer_has_inherited_business_ownership(boolean)
77 * @see Taxation.TaxationPackage#getLoss_Carryforward_Tax_payer_has_inherited_business_ownership()
78 * @model default="false" required="true" derived="true"
79 * @generated
80 */
81 boolean isTax_payer_has_inherited_business_ownership();
82
83 /**
84 * Sets the value of the '{@link Taxation.Loss_Carryforward#isTax_payer_has_inherited_business_ownership <em>Tax payer has inherited business ownership</em>}' attribute.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @param value the new value of the '<em>Tax payer has inherited business ownership</em>' attribute.
88 * @see #isTax_payer_has_inherited_business_ownership()
89 * @generated
90 */
91 void setTax_payer_has_inherited_business_ownership(boolean value);
92
93 /**
94 * Returns the value of the '<em><b>Tax payer has been partner in business</b></em>' attribute.
95 * The default value is <code>"true"</code>.
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @return the value of the '<em>Tax payer has been partner in business</em>' attribute.
99 * @see #setTax_payer_has_been_partner_in_business(boolean)
100 * @see Taxation.TaxationPackage#getLoss_Carryforward_Tax_payer_has_been_partner_in_business()
101 * @model default="true" required="true" derived="true"
102 * @generated
103 */
104 boolean isTax_payer_has_been_partner_in_business();
105
106 /**
107 * Sets the value of the '{@link Taxation.Loss_Carryforward#isTax_payer_has_been_partner_in_business <em>Tax payer has been partner in business</em>}' attribute.
108 * <!-- begin-user-doc -->
109 * <!-- end-user-doc -->
110 * @param value the new value of the '<em>Tax payer has been partner in business</em>' attribute.
111 * @see #isTax_payer_has_been_partner_in_business()
112 * @generated
113 */
114 void setTax_payer_has_been_partner_in_business(boolean value);
115
116} // Loss_Carryforward
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Marriage_Record.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Marriage_Record.java
new file mode 100644
index 00000000..66a1ab40
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Marriage_Record.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Marriage Record</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getMarriage_Record()
13 * @model
14 * @generated
15 */
16public interface Marriage_Record extends Legal_Union_Record {
17} // Marriage_Record
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Miscellaneous_Expense_FO.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Miscellaneous_Expense_FO.java
new file mode 100644
index 00000000..84186946
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Miscellaneous_Expense_FO.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Miscellaneous Expense FO</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getMiscellaneous_Expense_FO()
13 * @model
14 * @generated
15 */
16public interface Miscellaneous_Expense_FO extends Professional_Expense {
17} // Miscellaneous_Expense_FO
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Non_Resident_Tax_Payer.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Non_Resident_Tax_Payer.java
new file mode 100644
index 00000000..30df70bb
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Non_Resident_Tax_Payer.java
@@ -0,0 +1,46 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Non Resident Tax Payer</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Non_Resident_Tax_Payer#isIs_assimilated_to_resident <em>Is assimilated to resident</em>}</li>
16 * </ul>
17 *
18 * @see Taxation.TaxationPackage#getNon_Resident_Tax_Payer()
19 * @model
20 * @generated
21 */
22public interface Non_Resident_Tax_Payer extends Tax_Payer {
23 /**
24 * Returns the value of the '<em><b>Is assimilated to resident</b></em>' attribute.
25 * The default value is <code>"false"</code>.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Is assimilated to resident</em>' attribute.
29 * @see #setIs_assimilated_to_resident(boolean)
30 * @see Taxation.TaxationPackage#getNon_Resident_Tax_Payer_Is_assimilated_to_resident()
31 * @model default="false" required="true"
32 * @generated
33 */
34 boolean isIs_assimilated_to_resident();
35
36 /**
37 * Sets the value of the '{@link Taxation.Non_Resident_Tax_Payer#isIs_assimilated_to_resident <em>Is assimilated to resident</em>}' attribute.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @param value the new value of the '<em>Is assimilated to resident</em>' attribute.
41 * @see #isIs_assimilated_to_resident()
42 * @generated
43 */
44 void setIs_assimilated_to_resident(boolean value);
45
46} // Non_Resident_Tax_Payer
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Partnership_Record.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Partnership_Record.java
new file mode 100644
index 00000000..4f1344f5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Partnership_Record.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Partnership Record</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getPartnership_Record()
13 * @model
14 * @generated
15 */
16public interface Partnership_Record extends Legal_Union_Record {
17} // Partnership_Record
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Pensions_and_Annuities_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Pensions_and_Annuities_Income.java
new file mode 100644
index 00000000..67c6bcc6
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Pensions_and_Annuities_Income.java
@@ -0,0 +1,46 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Pensions and Annuities Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Pensions_and_Annuities_Income#isOccasional_payement <em>Occasional payement</em>}</li>
16 * </ul>
17 *
18 * @see Taxation.TaxationPackage#getPensions_and_Annuities_Income()
19 * @model
20 * @generated
21 */
22public interface Pensions_and_Annuities_Income extends Income_Type {
23 /**
24 * Returns the value of the '<em><b>Occasional payement</b></em>' attribute.
25 * The default value is <code>"false"</code>.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Occasional payement</em>' attribute.
29 * @see #setOccasional_payement(boolean)
30 * @see Taxation.TaxationPackage#getPensions_and_Annuities_Income_Occasional_payement()
31 * @model default="false"
32 * @generated
33 */
34 boolean isOccasional_payement();
35
36 /**
37 * Sets the value of the '{@link Taxation.Pensions_and_Annuities_Income#isOccasional_payement <em>Occasional payement</em>}' attribute.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @param value the new value of the '<em>Occasional payement</em>' attribute.
41 * @see #isOccasional_payement()
42 * @generated
43 */
44 void setOccasional_payement(boolean value);
45
46} // Pensions_and_Annuities_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Permanent_Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Permanent_Expense.java
new file mode 100644
index 00000000..1e8d885b
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Permanent_Expense.java
@@ -0,0 +1,72 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Permanent Expense</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Permanent_Expense#getCategory <em>Category</em>}</li>
16 * <li>{@link Taxation.Permanent_Expense#isIs_eligible_for_deduction <em>Is eligible for deduction</em>}</li>
17 * </ul>
18 *
19 * @see Taxation.TaxationPackage#getPermanent_Expense()
20 * @model
21 * @generated
22 */
23public interface Permanent_Expense extends Special_Expense_DS {
24 /**
25 * Returns the value of the '<em><b>Category</b></em>' attribute.
26 * The literals are from the enumeration {@link Taxation.Category_of_Permanent_Expense}.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @return the value of the '<em>Category</em>' attribute.
30 * @see Taxation.Category_of_Permanent_Expense
31 * @see #setCategory(Category_of_Permanent_Expense)
32 * @see Taxation.TaxationPackage#getPermanent_Expense_Category()
33 * @model required="true"
34 * @generated
35 */
36 Category_of_Permanent_Expense getCategory();
37
38 /**
39 * Sets the value of the '{@link Taxation.Permanent_Expense#getCategory <em>Category</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @param value the new value of the '<em>Category</em>' attribute.
43 * @see Taxation.Category_of_Permanent_Expense
44 * @see #getCategory()
45 * @generated
46 */
47 void setCategory(Category_of_Permanent_Expense value);
48
49 /**
50 * Returns the value of the '<em><b>Is eligible for deduction</b></em>' attribute.
51 * The default value is <code>"false"</code>.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @return the value of the '<em>Is eligible for deduction</em>' attribute.
55 * @see #setIs_eligible_for_deduction(boolean)
56 * @see Taxation.TaxationPackage#getPermanent_Expense_Is_eligible_for_deduction()
57 * @model default="false" required="true" derived="true"
58 * @generated
59 */
60 boolean isIs_eligible_for_deduction();
61
62 /**
63 * Sets the value of the '{@link Taxation.Permanent_Expense#isIs_eligible_for_deduction <em>Is eligible for deduction</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @param value the new value of the '<em>Is eligible for deduction</em>' attribute.
67 * @see #isIs_eligible_for_deduction()
68 * @generated
69 */
70 void setIs_eligible_for_deduction(boolean value);
71
72} // Permanent_Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Physical_Person.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Physical_Person.java
new file mode 100644
index 00000000..02144134
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Physical_Person.java
@@ -0,0 +1,278 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Physical Person</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link Taxation.Physical_Person#isIs_assisting_spouse <em>Is assisting spouse</em>}</li>
19 * <li>{@link Taxation.Physical_Person#getSSNo <em>SS No</em>}</li>
20 * <li>{@link Taxation.Physical_Person#getAddresses <em>Addresses</em>}</li>
21 * <li>{@link Taxation.Physical_Person#getBirth_year <em>Birth year</em>}</li>
22 * <li>{@link Taxation.Physical_Person#getDisability_percentage <em>Disability percentage</em>}</li>
23 * <li>{@link Taxation.Physical_Person#getDisability_type <em>Disability type</em>}</li>
24 * <li>{@link Taxation.Physical_Person#isIs_affiliated_personnaly_to_social_security <em>Is affiliated personnaly to social security</em>}</li>
25 * <li>{@link Taxation.Physical_Person#getBirth_month <em>Birth month</em>}</li>
26 * <li>{@link Taxation.Physical_Person#getBirth_day <em>Birth day</em>}</li>
27 * <li>{@link Taxation.Physical_Person#getExpenses <em>Expenses</em>}</li>
28 * <li>{@link Taxation.Physical_Person#isIs_widower <em>Is widower</em>}</li>
29 * <li>{@link Taxation.Physical_Person#getOwns_Address <em>Owns Address</em>}</li>
30 * </ul>
31 *
32 * @see Taxation.TaxationPackage#getPhysical_Person()
33 * @model
34 * @generated
35 */
36public interface Physical_Person extends EObject {
37 /**
38 * Returns the value of the '<em><b>Is assisting spouse</b></em>' attribute.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @return the value of the '<em>Is assisting spouse</em>' attribute.
42 * @see #setIs_assisting_spouse(boolean)
43 * @see Taxation.TaxationPackage#getPhysical_Person_Is_assisting_spouse()
44 * @model required="true" derived="true"
45 * @generated
46 */
47 boolean isIs_assisting_spouse();
48
49 /**
50 * Sets the value of the '{@link Taxation.Physical_Person#isIs_assisting_spouse <em>Is assisting spouse</em>}' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @param value the new value of the '<em>Is assisting spouse</em>' attribute.
54 * @see #isIs_assisting_spouse()
55 * @generated
56 */
57 void setIs_assisting_spouse(boolean value);
58
59 /**
60 * Returns the value of the '<em><b>SS No</b></em>' attribute.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the value of the '<em>SS No</em>' attribute.
64 * @see #setSSNo(String)
65 * @see Taxation.TaxationPackage#getPhysical_Person_SSNo()
66 * @model id="true" required="true"
67 * @generated
68 */
69 String getSSNo();
70
71 /**
72 * Sets the value of the '{@link Taxation.Physical_Person#getSSNo <em>SS No</em>}' attribute.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @param value the new value of the '<em>SS No</em>' attribute.
76 * @see #getSSNo()
77 * @generated
78 */
79 void setSSNo(String value);
80
81 /**
82 * Returns the value of the '<em><b>Addresses</b></em>' reference list.
83 * The list contents are of type {@link Taxation.Address}.
84 * It is bidirectional and its opposite is '{@link Taxation.Address#getTaxPayer <em>Tax Payer</em>}'.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @return the value of the '<em>Addresses</em>' reference list.
88 * @see Taxation.TaxationPackage#getPhysical_Person_Addresses()
89 * @see Taxation.Address#getTaxPayer
90 * @model opposite="taxPayer" ordered="false"
91 * @generated
92 */
93 EList<Address> getAddresses();
94
95 /**
96 * Returns the value of the '<em><b>Birth year</b></em>' attribute.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @return the value of the '<em>Birth year</em>' attribute.
100 * @see #setBirth_year(int)
101 * @see Taxation.TaxationPackage#getPhysical_Person_Birth_year()
102 * @model unique="false" required="true" ordered="false"
103 * @generated
104 */
105 int getBirth_year();
106
107 /**
108 * Sets the value of the '{@link Taxation.Physical_Person#getBirth_year <em>Birth year</em>}' attribute.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @param value the new value of the '<em>Birth year</em>' attribute.
112 * @see #getBirth_year()
113 * @generated
114 */
115 void setBirth_year(int value);
116
117 /**
118 * Returns the value of the '<em><b>Disability percentage</b></em>' attribute.
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @return the value of the '<em>Disability percentage</em>' attribute.
122 * @see #setDisability_percentage(double)
123 * @see Taxation.TaxationPackage#getPhysical_Person_Disability_percentage()
124 * @model unique="false" required="true" ordered="false"
125 * @generated
126 */
127 double getDisability_percentage();
128
129 /**
130 * Sets the value of the '{@link Taxation.Physical_Person#getDisability_percentage <em>Disability percentage</em>}' attribute.
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @param value the new value of the '<em>Disability percentage</em>' attribute.
134 * @see #getDisability_percentage()
135 * @generated
136 */
137 void setDisability_percentage(double value);
138
139 /**
140 * Returns the value of the '<em><b>Disability type</b></em>' attribute.
141 * The literals are from the enumeration {@link Taxation.Disability_Types}.
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @return the value of the '<em>Disability type</em>' attribute.
145 * @see Taxation.Disability_Types
146 * @see #setDisability_type(Disability_Types)
147 * @see Taxation.TaxationPackage#getPhysical_Person_Disability_type()
148 * @model unique="false" required="true" ordered="false"
149 * @generated
150 */
151 Disability_Types getDisability_type();
152
153 /**
154 * Sets the value of the '{@link Taxation.Physical_Person#getDisability_type <em>Disability type</em>}' attribute.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @param value the new value of the '<em>Disability type</em>' attribute.
158 * @see Taxation.Disability_Types
159 * @see #getDisability_type()
160 * @generated
161 */
162 void setDisability_type(Disability_Types value);
163
164 /**
165 * Returns the value of the '<em><b>Is affiliated personnaly to social security</b></em>' attribute.
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @return the value of the '<em>Is affiliated personnaly to social security</em>' attribute.
169 * @see #setIs_affiliated_personnaly_to_social_security(boolean)
170 * @see Taxation.TaxationPackage#getPhysical_Person_Is_affiliated_personnaly_to_social_security()
171 * @model required="true" derived="true"
172 * @generated
173 */
174 boolean isIs_affiliated_personnaly_to_social_security();
175
176 /**
177 * Sets the value of the '{@link Taxation.Physical_Person#isIs_affiliated_personnaly_to_social_security <em>Is affiliated personnaly to social security</em>}' attribute.
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @param value the new value of the '<em>Is affiliated personnaly to social security</em>' attribute.
181 * @see #isIs_affiliated_personnaly_to_social_security()
182 * @generated
183 */
184 void setIs_affiliated_personnaly_to_social_security(boolean value);
185
186 /**
187 * Returns the value of the '<em><b>Birth month</b></em>' attribute.
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @return the value of the '<em>Birth month</em>' attribute.
191 * @see #setBirth_month(int)
192 * @see Taxation.TaxationPackage#getPhysical_Person_Birth_month()
193 * @model unique="false" required="true" ordered="false"
194 * @generated
195 */
196 int getBirth_month();
197
198 /**
199 * Sets the value of the '{@link Taxation.Physical_Person#getBirth_month <em>Birth month</em>}' attribute.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @param value the new value of the '<em>Birth month</em>' attribute.
203 * @see #getBirth_month()
204 * @generated
205 */
206 void setBirth_month(int value);
207
208 /**
209 * Returns the value of the '<em><b>Birth day</b></em>' attribute.
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @return the value of the '<em>Birth day</em>' attribute.
213 * @see #setBirth_day(int)
214 * @see Taxation.TaxationPackage#getPhysical_Person_Birth_day()
215 * @model unique="false" required="true" ordered="false"
216 * @generated
217 */
218 int getBirth_day();
219
220 /**
221 * Sets the value of the '{@link Taxation.Physical_Person#getBirth_day <em>Birth day</em>}' attribute.
222 * <!-- begin-user-doc -->
223 * <!-- end-user-doc -->
224 * @param value the new value of the '<em>Birth day</em>' attribute.
225 * @see #getBirth_day()
226 * @generated
227 */
228 void setBirth_day(int value);
229
230 /**
231 * Returns the value of the '<em><b>Expenses</b></em>' reference list.
232 * The list contents are of type {@link Taxation.Expense}.
233 * It is bidirectional and its opposite is '{@link Taxation.Expense#getBeneficiary <em>Beneficiary</em>}'.
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @return the value of the '<em>Expenses</em>' reference list.
237 * @see Taxation.TaxationPackage#getPhysical_Person_Expenses()
238 * @see Taxation.Expense#getBeneficiary
239 * @model opposite="beneficiary" ordered="false"
240 * @generated
241 */
242 EList<Expense> getExpenses();
243
244 /**
245 * Returns the value of the '<em><b>Is widower</b></em>' attribute.
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @return the value of the '<em>Is widower</em>' attribute.
249 * @see #setIs_widower(boolean)
250 * @see Taxation.TaxationPackage#getPhysical_Person_Is_widower()
251 * @model required="true" ordered="false"
252 * @generated
253 */
254 boolean isIs_widower();
255
256 /**
257 * Sets the value of the '{@link Taxation.Physical_Person#isIs_widower <em>Is widower</em>}' attribute.
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @param value the new value of the '<em>Is widower</em>' attribute.
261 * @see #isIs_widower()
262 * @generated
263 */
264 void setIs_widower(boolean value);
265
266 /**
267 * Returns the value of the '<em><b>Owns Address</b></em>' containment reference list.
268 * The list contents are of type {@link Taxation.Address}.
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @return the value of the '<em>Owns Address</em>' containment reference list.
272 * @see Taxation.TaxationPackage#getPhysical_Person_Owns_Address()
273 * @model containment="true"
274 * @generated
275 */
276 EList<Address> getOwns_Address();
277
278} // Physical_Person
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Private_Insurance_and_Plan.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Private_Insurance_and_Plan.java
new file mode 100644
index 00000000..789099c5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Private_Insurance_and_Plan.java
@@ -0,0 +1,94 @@
1/**
2 */
3package Taxation;
4
5/**
6 * <!-- begin-user-doc -->
7 * A representation of the model object '<em><b>Private Insurance and Plan</b></em>'.
8 * <!-- end-user-doc -->
9 *
10 * <p>
11 * The following features are supported:
12 * </p>
13 * <ul>
14 * <li>{@link Taxation.Private_Insurance_and_Plan#getCategory <em>Category</em>}</li>
15 * <li>{@link Taxation.Private_Insurance_and_Plan#getDuration_of_contract <em>Duration of contract</em>}</li>
16 * <li>{@link Taxation.Private_Insurance_and_Plan#isIs_private_insurance_and_plan_eligible_for_deduction <em>Is private insurance and plan eligible for deduction</em>}</li>
17 * </ul>
18 *
19 * @see Taxation.TaxationPackage#getPrivate_Insurance_and_Plan()
20 * @model
21 * @generated
22 */
23public interface Private_Insurance_and_Plan extends Special_Expense_DS {
24 /**
25 * Returns the value of the '<em><b>Category</b></em>' attribute.
26 * The literals are from the enumeration {@link Taxation.Category_of_Private_Insurance_and_Plan}.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @return the value of the '<em>Category</em>' attribute.
30 * @see Taxation.Category_of_Private_Insurance_and_Plan
31 * @see #setCategory(Category_of_Private_Insurance_and_Plan)
32 * @see Taxation.TaxationPackage#getPrivate_Insurance_and_Plan_Category()
33 * @model required="true"
34 * @generated
35 */
36 Category_of_Private_Insurance_and_Plan getCategory();
37
38 /**
39 * Sets the value of the '{@link Taxation.Private_Insurance_and_Plan#getCategory <em>Category</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @param value the new value of the '<em>Category</em>' attribute.
43 * @see Taxation.Category_of_Private_Insurance_and_Plan
44 * @see #getCategory()
45 * @generated
46 */
47 void setCategory(Category_of_Private_Insurance_and_Plan value);
48
49 /**
50 * Returns the value of the '<em><b>Duration of contract</b></em>' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @return the value of the '<em>Duration of contract</em>' attribute.
54 * @see #setDuration_of_contract(int)
55 * @see Taxation.TaxationPackage#getPrivate_Insurance_and_Plan_Duration_of_contract()
56 * @model required="true"
57 * @generated
58 */
59 int getDuration_of_contract();
60
61 /**
62 * Sets the value of the '{@link Taxation.Private_Insurance_and_Plan#getDuration_of_contract <em>Duration of contract</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @param value the new value of the '<em>Duration of contract</em>' attribute.
66 * @see #getDuration_of_contract()
67 * @generated
68 */
69 void setDuration_of_contract(int value);
70
71 /**
72 * Returns the value of the '<em><b>Is private insurance and plan eligible for deduction</b></em>' attribute.
73 * The default value is <code>"false"</code>.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @return the value of the '<em>Is private insurance and plan eligible for deduction</em>' attribute.
77 * @see #setIs_private_insurance_and_plan_eligible_for_deduction(boolean)
78 * @see Taxation.TaxationPackage#getPrivate_Insurance_and_Plan_Is_private_insurance_and_plan_eligible_for_deduction()
79 * @model default="false" required="true" derived="true"
80 * @generated
81 */
82 boolean isIs_private_insurance_and_plan_eligible_for_deduction();
83
84 /**
85 * Sets the value of the '{@link Taxation.Private_Insurance_and_Plan#isIs_private_insurance_and_plan_eligible_for_deduction <em>Is private insurance and plan eligible for deduction</em>}' attribute.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @param value the new value of the '<em>Is private insurance and plan eligible for deduction</em>' attribute.
89 * @see #isIs_private_insurance_and_plan_eligible_for_deduction()
90 * @generated
91 */
92 void setIs_private_insurance_and_plan_eligible_for_deduction(boolean value);
93
94} // Private_Insurance_and_Plan
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expense.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expense.java
new file mode 100644
index 00000000..3dbffe88
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expense.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Professional Expense</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getProfessional_Expense()
13 * @model
14 * @generated
15 */
16public interface Professional_Expense extends Expense {
17} // Professional_Expense
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expenses_Deduction.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expenses_Deduction.java
new file mode 100644
index 00000000..cb994481
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Professional_Expenses_Deduction.java
@@ -0,0 +1,18 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Professional Expenses Deduction</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 *
13 * @see Taxation.TaxationPackage#getProfessional_Expenses_Deduction()
14 * @model
15 * @generated
16 */
17public interface Professional_Expenses_Deduction extends EObject {
18} // Professional_Expenses_Deduction
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Rentals_and_Leases_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Rentals_and_Leases_Income.java
new file mode 100644
index 00000000..00bcb2d0
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Rentals_and_Leases_Income.java
@@ -0,0 +1,46 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Rentals and Leases Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 * <p>
12 * The following features are supported:
13 * </p>
14 * <ul>
15 * <li>{@link Taxation.Rentals_and_Leases_Income#isIs_periodic <em>Is periodic</em>}</li>
16 * </ul>
17 *
18 * @see Taxation.TaxationPackage#getRentals_and_Leases_Income()
19 * @model
20 * @generated
21 */
22public interface Rentals_and_Leases_Income extends Income_Type {
23 /**
24 * Returns the value of the '<em><b>Is periodic</b></em>' attribute.
25 * The default value is <code>"true"</code>.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return the value of the '<em>Is periodic</em>' attribute.
29 * @see #setIs_periodic(boolean)
30 * @see Taxation.TaxationPackage#getRentals_and_Leases_Income_Is_periodic()
31 * @model default="true" required="true"
32 * @generated
33 */
34 boolean isIs_periodic();
35
36 /**
37 * Sets the value of the '{@link Taxation.Rentals_and_Leases_Income#isIs_periodic <em>Is periodic</em>}' attribute.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @param value the new value of the '<em>Is periodic</em>' attribute.
41 * @see #isIs_periodic()
42 * @generated
43 */
44 void setIs_periodic(boolean value);
45
46} // Rentals_and_Leases_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Resident_Tax_Payer.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Resident_Tax_Payer.java
new file mode 100644
index 00000000..6f529c32
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Resident_Tax_Payer.java
@@ -0,0 +1,18 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Resident Tax Payer</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getResident_Tax_Payer()
13 * @model
14 * @generated
15 */
16public interface Resident_Tax_Payer extends Tax_Payer {
17
18} // Resident_Tax_Payer
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Separation_Causes.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Separation_Causes.java
new file mode 100644
index 00000000..da0ff733
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Separation_Causes.java
@@ -0,0 +1,255 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Separation Causes</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getSeparation_Causes()
17 * @model
18 * @generated
19 */
20public enum Separation_Causes implements Enumerator {
21 /**
22 * The '<em><b>NONE</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #NONE_VALUE
26 * @generated
27 * @ordered
28 */
29 NONE(0, "NONE", "NONE"),
30
31 /**
32 * The '<em><b>DIVORCE</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #DIVORCE_VALUE
36 * @generated
37 * @ordered
38 */
39 DIVORCE(1, "DIVORCE", "DIVORCE"),
40
41 /**
42 * The '<em><b>SEPARATION DE FAIT</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #SEPARATION_DE_FAIT_VALUE
46 * @generated
47 * @ordered
48 */
49 SEPARATION_DE_FAIT(2, "SEPARATION_DE_FAIT", "SEPARATION_DE_FAIT"),
50
51 /**
52 * The '<em><b>SEPARATION BY COURT</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #SEPARATION_BY_COURT_VALUE
56 * @generated
57 * @ordered
58 */
59 SEPARATION_BY_COURT(3, "SEPARATION_BY_COURT", "SEPARATION_BY_COURT");
60
61 /**
62 * The '<em><b>NONE</b></em>' literal value.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #NONE
66 * @model
67 * @generated
68 * @ordered
69 */
70 public static final int NONE_VALUE = 0;
71
72 /**
73 * The '<em><b>DIVORCE</b></em>' literal value.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @see #DIVORCE
77 * @model
78 * @generated
79 * @ordered
80 */
81 public static final int DIVORCE_VALUE = 1;
82
83 /**
84 * The '<em><b>SEPARATION DE FAIT</b></em>' literal value.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @see #SEPARATION_DE_FAIT
88 * @model
89 * @generated
90 * @ordered
91 */
92 public static final int SEPARATION_DE_FAIT_VALUE = 2;
93
94 /**
95 * The '<em><b>SEPARATION BY COURT</b></em>' literal value.
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @see #SEPARATION_BY_COURT
99 * @model
100 * @generated
101 * @ordered
102 */
103 public static final int SEPARATION_BY_COURT_VALUE = 3;
104
105 /**
106 * An array of all the '<em><b>Separation Causes</b></em>' enumerators.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 private static final Separation_Causes[] VALUES_ARRAY =
112 new Separation_Causes[] {
113 NONE,
114 DIVORCE,
115 SEPARATION_DE_FAIT,
116 SEPARATION_BY_COURT,
117 };
118
119 /**
120 * A public read-only list of all the '<em><b>Separation Causes</b></em>' enumerators.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 public static final List<Separation_Causes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
126
127 /**
128 * Returns the '<em><b>Separation Causes</b></em>' literal with the specified literal value.
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @param literal the literal.
132 * @return the matching enumerator or <code>null</code>.
133 * @generated
134 */
135 public static Separation_Causes get(String literal) {
136 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
137 Separation_Causes result = VALUES_ARRAY[i];
138 if (result.toString().equals(literal)) {
139 return result;
140 }
141 }
142 return null;
143 }
144
145 /**
146 * Returns the '<em><b>Separation Causes</b></em>' literal with the specified name.
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @param name the name.
150 * @return the matching enumerator or <code>null</code>.
151 * @generated
152 */
153 public static Separation_Causes getByName(String name) {
154 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
155 Separation_Causes result = VALUES_ARRAY[i];
156 if (result.getName().equals(name)) {
157 return result;
158 }
159 }
160 return null;
161 }
162
163 /**
164 * Returns the '<em><b>Separation Causes</b></em>' literal with the specified integer value.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @param value the integer value.
168 * @return the matching enumerator or <code>null</code>.
169 * @generated
170 */
171 public static Separation_Causes get(int value) {
172 switch (value) {
173 case NONE_VALUE: return NONE;
174 case DIVORCE_VALUE: return DIVORCE;
175 case SEPARATION_DE_FAIT_VALUE: return SEPARATION_DE_FAIT;
176 case SEPARATION_BY_COURT_VALUE: return SEPARATION_BY_COURT;
177 }
178 return null;
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 private final int value;
187
188 /**
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 */
193 private final String name;
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 private final String literal;
201
202 /**
203 * Only this class can construct instances.
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 private Separation_Causes(int value, String name, String literal) {
209 this.value = value;
210 this.name = name;
211 this.literal = literal;
212 }
213
214 /**
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @generated
218 */
219 @Override
220 public int getValue() {
221 return value;
222 }
223
224 /**
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @generated
228 */
229 @Override
230 public String getName() {
231 return name;
232 }
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 @Override
240 public String getLiteral() {
241 return literal;
242 }
243
244 /**
245 * Returns the literal value of the enumerator, which is its string representation.
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 */
250 @Override
251 public String toString() {
252 return literal;
253 }
254
255} //Separation_Causes
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Special_Expense_DS.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Special_Expense_DS.java
new file mode 100644
index 00000000..0f53386f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Special_Expense_DS.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Special Expense DS</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getSpecial_Expense_DS()
13 * @model
14 * @generated
15 */
16public interface Special_Expense_DS extends Expense {
17} // Special_Expense_DS
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Spousal_Expense_AC.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Spousal_Expense_AC.java
new file mode 100644
index 00000000..07d9163a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Spousal_Expense_AC.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Spousal Expense AC</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getSpousal_Expense_AC()
13 * @model
14 * @generated
15 */
16public interface Spousal_Expense_AC extends Expense {
17} // Spousal_Expense_AC
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card.java
new file mode 100644
index 00000000..8bb5f622
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card.java
@@ -0,0 +1,885 @@
1/**
2 */
3package Taxation;
4
5import java.util.Date;
6
7import org.eclipse.emf.common.util.EList;
8
9import org.eclipse.emf.ecore.EObject;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the model object '<em><b>Tax Card</b></em>'.
14 * <!-- end-user-doc -->
15 *
16 * <p>
17 * The following features are supported:
18 * </p>
19 * <ul>
20 * <li>{@link Taxation.Tax_Card#getCard_identifier <em>Card identifier</em>}</li>
21 * <li>{@link Taxation.Tax_Card#getTax_card_type <em>Tax card type</em>}</li>
22 * <li>{@link Taxation.Tax_Card#getTax_office <em>Tax office</em>}</li>
23 * <li>{@link Taxation.Tax_Card#getValid_from_date <em>Valid from date</em>}</li>
24 * <li>{@link Taxation.Tax_Card#getValid_until_date <em>Valid until date</em>}</li>
25 * <li>{@link Taxation.Tax_Card#getPercentage_of_witholding <em>Percentage of witholding</em>}</li>
26 * <li>{@link Taxation.Tax_Card#getTax_payers_name_surname <em>Tax payers name surname</em>}</li>
27 * <li>{@link Taxation.Tax_Card#getTax_payers_partner_name_surname <em>Tax payers partner name surname</em>}</li>
28 * <li>{@link Taxation.Tax_Card#getTax_payers_address <em>Tax payers address</em>}</li>
29 * <li>{@link Taxation.Tax_Card#getJobs_Employer_SSNo <em>Jobs Employer SS No</em>}</li>
30 * <li>{@link Taxation.Tax_Card#getJobs_employers_name <em>Jobs employers name</em>}</li>
31 * <li>{@link Taxation.Tax_Card#getJobs_activity_type <em>Jobs activity type</em>}</li>
32 * <li>{@link Taxation.Tax_Card#getJobs_place_of_work <em>Jobs place of work</em>}</li>
33 * <li>{@link Taxation.Tax_Card#getDeduction_FD_daily <em>Deduction FD daily</em>}</li>
34 * <li>{@link Taxation.Tax_Card#getDeduction_FD_monthly <em>Deduction FD monthly</em>}</li>
35 * <li>{@link Taxation.Tax_Card#getDeduction_AC_daily <em>Deduction AC daily</em>}</li>
36 * <li>{@link Taxation.Tax_Card#getDeduction_AC_monthly <em>Deduction AC monthly</em>}</li>
37 * <li>{@link Taxation.Tax_Card#getDeduction_AC_yearly <em>Deduction AC yearly</em>}</li>
38 * <li>{@link Taxation.Tax_Card#getDeduction_CE_daily <em>Deduction CE daily</em>}</li>
39 * <li>{@link Taxation.Tax_Card#getDeduction_CE_monthly <em>Deduction CE monthly</em>}</li>
40 * <li>{@link Taxation.Tax_Card#getDeduction_CE_yearly <em>Deduction CE yearly</em>}</li>
41 * <li>{@link Taxation.Tax_Card#getDeduction_DS_daily <em>Deduction DS daily</em>}</li>
42 * <li>{@link Taxation.Tax_Card#getDeduction_DS_monthly <em>Deduction DS monthly</em>}</li>
43 * <li>{@link Taxation.Tax_Card#getDeduction_FO_daily <em>Deduction FO daily</em>}</li>
44 * <li>{@link Taxation.Tax_Card#getDeduction_FO_monthly <em>Deduction FO monthly</em>}</li>
45 * <li>{@link Taxation.Tax_Card#getDeduction_FO_yearly <em>Deduction FO yearly</em>}</li>
46 * <li>{@link Taxation.Tax_Card#getCredit_CIS_daily <em>Credit CIS daily</em>}</li>
47 * <li>{@link Taxation.Tax_Card#getCredit_CIS_monthly <em>Credit CIS monthly</em>}</li>
48 * <li>{@link Taxation.Tax_Card#getCredit_CIM_daily <em>Credit CIM daily</em>}</li>
49 * <li>{@link Taxation.Tax_Card#isValidity <em>Validity</em>}</li>
50 * <li>{@link Taxation.Tax_Card#getIncome_Tax_Credit <em>Income Tax Credit</em>}</li>
51 * <li>{@link Taxation.Tax_Card#getPrevious <em>Previous</em>}</li>
52 * <li>{@link Taxation.Tax_Card#getCurrent_tax_card <em>Current tax card</em>}</li>
53 * <li>{@link Taxation.Tax_Card#getCredit_CIM_yearly <em>Credit CIM yearly</em>}</li>
54 * <li>{@link Taxation.Tax_Card#getDeduction_DS_Alimony_yearly <em>Deduction DS Alimony yearly</em>}</li>
55 * <li>{@link Taxation.Tax_Card#getDeduction_DS_Debt_yearly <em>Deduction DS Debt yearly</em>}</li>
56 * <li>{@link Taxation.Tax_Card#getIncome <em>Income</em>}</li>
57 * </ul>
58 *
59 * @see Taxation.TaxationPackage#getTax_Card()
60 * @model
61 * @generated
62 */
63public interface Tax_Card extends EObject {
64 /**
65 * Returns the value of the '<em><b>Card identifier</b></em>' attribute.
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @return the value of the '<em>Card identifier</em>' attribute.
69 * @see #setCard_identifier(String)
70 * @see Taxation.TaxationPackage#getTax_Card_Card_identifier()
71 * @model id="true"
72 * @generated
73 */
74 String getCard_identifier();
75
76 /**
77 * Sets the value of the '{@link Taxation.Tax_Card#getCard_identifier <em>Card identifier</em>}' attribute.
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @param value the new value of the '<em>Card identifier</em>' attribute.
81 * @see #getCard_identifier()
82 * @generated
83 */
84 void setCard_identifier(String value);
85
86 /**
87 * Returns the value of the '<em><b>Tax card type</b></em>' attribute.
88 * The literals are from the enumeration {@link Taxation.Tax_Card_Type}.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return the value of the '<em>Tax card type</em>' attribute.
92 * @see Taxation.Tax_Card_Type
93 * @see #setTax_card_type(Tax_Card_Type)
94 * @see Taxation.TaxationPackage#getTax_Card_Tax_card_type()
95 * @model required="true" derived="true"
96 * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='if(self.income.taxPayer.incomes-&gt;size()=1) then \nTax_Card_Type::Principal\n\telse\n\t\tlet all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes-&gt;select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount-&gt;max())-&gt;asOrderedSet() in\n\t\tlet bigest_income:Income= all_incomes-&gt;first() in\n\t\t\t if(bigest_income=self.income) then\n\t\t\t \t Tax_Card_Type::Principal\n\t\t\t else\n\t\t\t\t\tTax_Card_Type::Additional\n\t\t\t\tendif\nendif\n\t\t\t\t'"
97 * @generated
98 */
99 Tax_Card_Type getTax_card_type();
100
101 /**
102 * Sets the value of the '{@link Taxation.Tax_Card#getTax_card_type <em>Tax card type</em>}' attribute.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @param value the new value of the '<em>Tax card type</em>' attribute.
106 * @see Taxation.Tax_Card_Type
107 * @see #getTax_card_type()
108 * @generated
109 */
110 void setTax_card_type(Tax_Card_Type value);
111
112 /**
113 * Returns the value of the '<em><b>Tax office</b></em>' attribute.
114 * The literals are from the enumeration {@link Taxation.Tax_Office}.
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @return the value of the '<em>Tax office</em>' attribute.
118 * @see Taxation.Tax_Office
119 * @see #setTax_office(Tax_Office)
120 * @see Taxation.TaxationPackage#getTax_Card_Tax_office()
121 * @model required="true"
122 * @generated
123 */
124 Tax_Office getTax_office();
125
126 /**
127 * Sets the value of the '{@link Taxation.Tax_Card#getTax_office <em>Tax office</em>}' attribute.
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @param value the new value of the '<em>Tax office</em>' attribute.
131 * @see Taxation.Tax_Office
132 * @see #getTax_office()
133 * @generated
134 */
135 void setTax_office(Tax_Office value);
136
137 /**
138 * Returns the value of the '<em><b>Valid from date</b></em>' attribute.
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @return the value of the '<em>Valid from date</em>' attribute.
142 * @see #setValid_from_date(Date)
143 * @see Taxation.TaxationPackage#getTax_Card_Valid_from_date()
144 * @model unique="false" required="true" ordered="false"
145 * @generated
146 */
147 Date getValid_from_date();
148
149 /**
150 * Sets the value of the '{@link Taxation.Tax_Card#getValid_from_date <em>Valid from date</em>}' attribute.
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @param value the new value of the '<em>Valid from date</em>' attribute.
154 * @see #getValid_from_date()
155 * @generated
156 */
157 void setValid_from_date(Date value);
158
159 /**
160 * Returns the value of the '<em><b>Valid until date</b></em>' attribute.
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @return the value of the '<em>Valid until date</em>' attribute.
164 * @see #setValid_until_date(Date)
165 * @see Taxation.TaxationPackage#getTax_Card_Valid_until_date()
166 * @model unique="false" required="true" ordered="false"
167 * @generated
168 */
169 Date getValid_until_date();
170
171 /**
172 * Sets the value of the '{@link Taxation.Tax_Card#getValid_until_date <em>Valid until date</em>}' attribute.
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @param value the new value of the '<em>Valid until date</em>' attribute.
176 * @see #getValid_until_date()
177 * @generated
178 */
179 void setValid_until_date(Date value);
180
181 /**
182 * Returns the value of the '<em><b>Percentage of witholding</b></em>' attribute.
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @return the value of the '<em>Percentage of witholding</em>' attribute.
186 * @see #setPercentage_of_witholding(double)
187 * @see Taxation.TaxationPackage#getTax_Card_Percentage_of_witholding()
188 * @model required="true"
189 * @generated
190 */
191 double getPercentage_of_witholding();
192
193 /**
194 * Sets the value of the '{@link Taxation.Tax_Card#getPercentage_of_witholding <em>Percentage of witholding</em>}' attribute.
195 * <!-- begin-user-doc -->
196 * <!-- end-user-doc -->
197 * @param value the new value of the '<em>Percentage of witholding</em>' attribute.
198 * @see #getPercentage_of_witholding()
199 * @generated
200 */
201 void setPercentage_of_witholding(double value);
202
203 /**
204 * Returns the value of the '<em><b>Tax payers name surname</b></em>' attribute list.
205 * The list contents are of type {@link java.lang.String}.
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @return the value of the '<em>Tax payers name surname</em>' attribute list.
209 * @see Taxation.TaxationPackage#getTax_Card_Tax_payers_name_surname()
210 * @model ordered="false"
211 * @generated
212 */
213 EList<String> getTax_payers_name_surname();
214
215 /**
216 * Returns the value of the '<em><b>Tax payers partner name surname</b></em>' attribute list.
217 * The list contents are of type {@link java.lang.String}.
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @return the value of the '<em>Tax payers partner name surname</em>' attribute list.
221 * @see Taxation.TaxationPackage#getTax_Card_Tax_payers_partner_name_surname()
222 * @model ordered="false"
223 * @generated
224 */
225 EList<String> getTax_payers_partner_name_surname();
226
227 /**
228 * Returns the value of the '<em><b>Tax payers address</b></em>' reference.
229 * <!-- begin-user-doc -->
230 * <!-- end-user-doc -->
231 * @return the value of the '<em>Tax payers address</em>' reference.
232 * @see #setTax_payers_address(Address)
233 * @see Taxation.TaxationPackage#getTax_Card_Tax_payers_address()
234 * @model
235 * @generated
236 */
237 Address getTax_payers_address();
238
239 /**
240 * Sets the value of the '{@link Taxation.Tax_Card#getTax_payers_address <em>Tax payers address</em>}' reference.
241 * <!-- begin-user-doc -->
242 * <!-- end-user-doc -->
243 * @param value the new value of the '<em>Tax payers address</em>' reference.
244 * @see #getTax_payers_address()
245 * @generated
246 */
247 void setTax_payers_address(Address value);
248
249 /**
250 * Returns the value of the '<em><b>Jobs Employer SS No</b></em>' attribute.
251 * <!-- begin-user-doc -->
252 * <!-- end-user-doc -->
253 * @return the value of the '<em>Jobs Employer SS No</em>' attribute.
254 * @see #setJobs_Employer_SSNo(String)
255 * @see Taxation.TaxationPackage#getTax_Card_Jobs_Employer_SSNo()
256 * @model unique="false" ordered="false"
257 * @generated
258 */
259 String getJobs_Employer_SSNo();
260
261 /**
262 * Sets the value of the '{@link Taxation.Tax_Card#getJobs_Employer_SSNo <em>Jobs Employer SS No</em>}' attribute.
263 * <!-- begin-user-doc -->
264 * <!-- end-user-doc -->
265 * @param value the new value of the '<em>Jobs Employer SS No</em>' attribute.
266 * @see #getJobs_Employer_SSNo()
267 * @generated
268 */
269 void setJobs_Employer_SSNo(String value);
270
271 /**
272 * Returns the value of the '<em><b>Jobs employers name</b></em>' attribute.
273 * <!-- begin-user-doc -->
274 * <!-- end-user-doc -->
275 * @return the value of the '<em>Jobs employers name</em>' attribute.
276 * @see #setJobs_employers_name(String)
277 * @see Taxation.TaxationPackage#getTax_Card_Jobs_employers_name()
278 * @model unique="false" ordered="false"
279 * @generated
280 */
281 String getJobs_employers_name();
282
283 /**
284 * Sets the value of the '{@link Taxation.Tax_Card#getJobs_employers_name <em>Jobs employers name</em>}' attribute.
285 * <!-- begin-user-doc -->
286 * <!-- end-user-doc -->
287 * @param value the new value of the '<em>Jobs employers name</em>' attribute.
288 * @see #getJobs_employers_name()
289 * @generated
290 */
291 void setJobs_employers_name(String value);
292
293 /**
294 * Returns the value of the '<em><b>Jobs activity type</b></em>' attribute.
295 * The literals are from the enumeration {@link Taxation.Job_Activity}.
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @return the value of the '<em>Jobs activity type</em>' attribute.
299 * @see Taxation.Job_Activity
300 * @see #setJobs_activity_type(Job_Activity)
301 * @see Taxation.TaxationPackage#getTax_Card_Jobs_activity_type()
302 * @model required="true"
303 * @generated
304 */
305 Job_Activity getJobs_activity_type();
306
307 /**
308 * Sets the value of the '{@link Taxation.Tax_Card#getJobs_activity_type <em>Jobs activity type</em>}' attribute.
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @param value the new value of the '<em>Jobs activity type</em>' attribute.
312 * @see Taxation.Job_Activity
313 * @see #getJobs_activity_type()
314 * @generated
315 */
316 void setJobs_activity_type(Job_Activity value);
317
318 /**
319 * Returns the value of the '<em><b>Jobs place of work</b></em>' attribute.
320 * The literals are from the enumeration {@link Taxation.Town}.
321 * <!-- begin-user-doc -->
322 * <!-- end-user-doc -->
323 * @return the value of the '<em>Jobs place of work</em>' attribute.
324 * @see Taxation.Town
325 * @see #setJobs_place_of_work(Town)
326 * @see Taxation.TaxationPackage#getTax_Card_Jobs_place_of_work()
327 * @model required="true"
328 * @generated
329 */
330 Town getJobs_place_of_work();
331
332 /**
333 * Sets the value of the '{@link Taxation.Tax_Card#getJobs_place_of_work <em>Jobs place of work</em>}' attribute.
334 * <!-- begin-user-doc -->
335 * <!-- end-user-doc -->
336 * @param value the new value of the '<em>Jobs place of work</em>' attribute.
337 * @see Taxation.Town
338 * @see #getJobs_place_of_work()
339 * @generated
340 */
341 void setJobs_place_of_work(Town value);
342
343 /**
344 * Returns the value of the '<em><b>Deduction FD daily</b></em>' attribute.
345 * The default value is <code>"0.0"</code>.
346 * <!-- begin-user-doc -->
347 * <!-- end-user-doc -->
348 * @return the value of the '<em>Deduction FD daily</em>' attribute.
349 * @see #setDeduction_FD_daily(double)
350 * @see Taxation.TaxationPackage#getTax_Card_Deduction_FD_daily()
351 * @model default="0.0" unique="false" required="true" ordered="false"
352 * @generated
353 */
354 double getDeduction_FD_daily();
355
356 /**
357 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_FD_daily <em>Deduction FD daily</em>}' attribute.
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @param value the new value of the '<em>Deduction FD daily</em>' attribute.
361 * @see #getDeduction_FD_daily()
362 * @generated
363 */
364 void setDeduction_FD_daily(double value);
365
366 /**
367 * Returns the value of the '<em><b>Deduction FD monthly</b></em>' attribute.
368 * The default value is <code>"0.0"</code>.
369 * <!-- begin-user-doc -->
370 * <!-- end-user-doc -->
371 * @return the value of the '<em>Deduction FD monthly</em>' attribute.
372 * @see #setDeduction_FD_monthly(double)
373 * @see Taxation.TaxationPackage#getTax_Card_Deduction_FD_monthly()
374 * @model default="0.0" unique="false" required="true" ordered="false"
375 * @generated
376 */
377 double getDeduction_FD_monthly();
378
379 /**
380 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_FD_monthly <em>Deduction FD monthly</em>}' attribute.
381 * <!-- begin-user-doc -->
382 * <!-- end-user-doc -->
383 * @param value the new value of the '<em>Deduction FD monthly</em>' attribute.
384 * @see #getDeduction_FD_monthly()
385 * @generated
386 */
387 void setDeduction_FD_monthly(double value);
388
389 /**
390 * Returns the value of the '<em><b>Deduction AC daily</b></em>' attribute.
391 * The default value is <code>"0.0"</code>.
392 * <!-- begin-user-doc -->
393 * <!-- end-user-doc -->
394 * @return the value of the '<em>Deduction AC daily</em>' attribute.
395 * @see #setDeduction_AC_daily(double)
396 * @see Taxation.TaxationPackage#getTax_Card_Deduction_AC_daily()
397 * @model default="0.0" unique="false" required="true"
398 * @generated
399 */
400 double getDeduction_AC_daily();
401
402 /**
403 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_AC_daily <em>Deduction AC daily</em>}' attribute.
404 * <!-- begin-user-doc -->
405 * <!-- end-user-doc -->
406 * @param value the new value of the '<em>Deduction AC daily</em>' attribute.
407 * @see #getDeduction_AC_daily()
408 * @generated
409 */
410 void setDeduction_AC_daily(double value);
411
412 /**
413 * Returns the value of the '<em><b>Deduction AC monthly</b></em>' attribute.
414 * The default value is <code>"0.0"</code>.
415 * <!-- begin-user-doc -->
416 * <!-- end-user-doc -->
417 * @return the value of the '<em>Deduction AC monthly</em>' attribute.
418 * @see #setDeduction_AC_monthly(double)
419 * @see Taxation.TaxationPackage#getTax_Card_Deduction_AC_monthly()
420 * @model default="0.0" unique="false" required="true"
421 * @generated
422 */
423 double getDeduction_AC_monthly();
424
425 /**
426 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_AC_monthly <em>Deduction AC monthly</em>}' attribute.
427 * <!-- begin-user-doc -->
428 * <!-- end-user-doc -->
429 * @param value the new value of the '<em>Deduction AC monthly</em>' attribute.
430 * @see #getDeduction_AC_monthly()
431 * @generated
432 */
433 void setDeduction_AC_monthly(double value);
434
435 /**
436 * Returns the value of the '<em><b>Deduction AC yearly</b></em>' attribute.
437 * The default value is <code>"0.0"</code>.
438 * <!-- begin-user-doc -->
439 * <!-- end-user-doc -->
440 * @return the value of the '<em>Deduction AC yearly</em>' attribute.
441 * @see #setDeduction_AC_yearly(double)
442 * @see Taxation.TaxationPackage#getTax_Card_Deduction_AC_yearly()
443 * @model default="0.0" unique="false" required="true"
444 * @generated
445 */
446 double getDeduction_AC_yearly();
447
448 /**
449 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_AC_yearly <em>Deduction AC yearly</em>}' attribute.
450 * <!-- begin-user-doc -->
451 * <!-- end-user-doc -->
452 * @param value the new value of the '<em>Deduction AC yearly</em>' attribute.
453 * @see #getDeduction_AC_yearly()
454 * @generated
455 */
456 void setDeduction_AC_yearly(double value);
457
458 /**
459 * Returns the value of the '<em><b>Deduction CE daily</b></em>' attribute.
460 * The default value is <code>"0.0"</code>.
461 * <!-- begin-user-doc -->
462 * <!-- end-user-doc -->
463 * @return the value of the '<em>Deduction CE daily</em>' attribute.
464 * @see #setDeduction_CE_daily(double)
465 * @see Taxation.TaxationPackage#getTax_Card_Deduction_CE_daily()
466 * @model default="0.0" unique="false" required="true"
467 * @generated
468 */
469 double getDeduction_CE_daily();
470
471 /**
472 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_CE_daily <em>Deduction CE daily</em>}' attribute.
473 * <!-- begin-user-doc -->
474 * <!-- end-user-doc -->
475 * @param value the new value of the '<em>Deduction CE daily</em>' attribute.
476 * @see #getDeduction_CE_daily()
477 * @generated
478 */
479 void setDeduction_CE_daily(double value);
480
481 /**
482 * Returns the value of the '<em><b>Deduction CE monthly</b></em>' attribute.
483 * The default value is <code>"0.0"</code>.
484 * <!-- begin-user-doc -->
485 * <!-- end-user-doc -->
486 * @return the value of the '<em>Deduction CE monthly</em>' attribute.
487 * @see #setDeduction_CE_monthly(double)
488 * @see Taxation.TaxationPackage#getTax_Card_Deduction_CE_monthly()
489 * @model default="0.0" unique="false" required="true"
490 * @generated
491 */
492 double getDeduction_CE_monthly();
493
494 /**
495 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_CE_monthly <em>Deduction CE monthly</em>}' attribute.
496 * <!-- begin-user-doc -->
497 * <!-- end-user-doc -->
498 * @param value the new value of the '<em>Deduction CE monthly</em>' attribute.
499 * @see #getDeduction_CE_monthly()
500 * @generated
501 */
502 void setDeduction_CE_monthly(double value);
503
504 /**
505 * Returns the value of the '<em><b>Deduction CE yearly</b></em>' attribute.
506 * The default value is <code>"0.0"</code>.
507 * <!-- begin-user-doc -->
508 * <!-- end-user-doc -->
509 * @return the value of the '<em>Deduction CE yearly</em>' attribute.
510 * @see #setDeduction_CE_yearly(double)
511 * @see Taxation.TaxationPackage#getTax_Card_Deduction_CE_yearly()
512 * @model default="0.0" unique="false" required="true"
513 * @generated
514 */
515 double getDeduction_CE_yearly();
516
517 /**
518 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_CE_yearly <em>Deduction CE yearly</em>}' attribute.
519 * <!-- begin-user-doc -->
520 * <!-- end-user-doc -->
521 * @param value the new value of the '<em>Deduction CE yearly</em>' attribute.
522 * @see #getDeduction_CE_yearly()
523 * @generated
524 */
525 void setDeduction_CE_yearly(double value);
526
527 /**
528 * Returns the value of the '<em><b>Deduction DS daily</b></em>' attribute.
529 * The default value is <code>"0.0"</code>.
530 * <!-- begin-user-doc -->
531 * <!-- end-user-doc -->
532 * @return the value of the '<em>Deduction DS daily</em>' attribute.
533 * @see #setDeduction_DS_daily(double)
534 * @see Taxation.TaxationPackage#getTax_Card_Deduction_DS_daily()
535 * @model default="0.0" unique="false" required="true"
536 * @generated
537 */
538 double getDeduction_DS_daily();
539
540 /**
541 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_DS_daily <em>Deduction DS daily</em>}' attribute.
542 * <!-- begin-user-doc -->
543 * <!-- end-user-doc -->
544 * @param value the new value of the '<em>Deduction DS daily</em>' attribute.
545 * @see #getDeduction_DS_daily()
546 * @generated
547 */
548 void setDeduction_DS_daily(double value);
549
550 /**
551 * Returns the value of the '<em><b>Deduction DS monthly</b></em>' attribute.
552 * The default value is <code>"0.0"</code>.
553 * <!-- begin-user-doc -->
554 * <!-- end-user-doc -->
555 * @return the value of the '<em>Deduction DS monthly</em>' attribute.
556 * @see #setDeduction_DS_monthly(double)
557 * @see Taxation.TaxationPackage#getTax_Card_Deduction_DS_monthly()
558 * @model default="0.0" required="true"
559 * @generated
560 */
561 double getDeduction_DS_monthly();
562
563 /**
564 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_DS_monthly <em>Deduction DS monthly</em>}' attribute.
565 * <!-- begin-user-doc -->
566 * <!-- end-user-doc -->
567 * @param value the new value of the '<em>Deduction DS monthly</em>' attribute.
568 * @see #getDeduction_DS_monthly()
569 * @generated
570 */
571 void setDeduction_DS_monthly(double value);
572
573 /**
574 * Returns the value of the '<em><b>Deduction FO daily</b></em>' attribute.
575 * The default value is <code>"0.0"</code>.
576 * <!-- begin-user-doc -->
577 * <!-- end-user-doc -->
578 * @return the value of the '<em>Deduction FO daily</em>' attribute.
579 * @see #setDeduction_FO_daily(double)
580 * @see Taxation.TaxationPackage#getTax_Card_Deduction_FO_daily()
581 * @model default="0.0" unique="false" required="true"
582 * @generated
583 */
584 double getDeduction_FO_daily();
585
586 /**
587 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_FO_daily <em>Deduction FO daily</em>}' attribute.
588 * <!-- begin-user-doc -->
589 * <!-- end-user-doc -->
590 * @param value the new value of the '<em>Deduction FO daily</em>' attribute.
591 * @see #getDeduction_FO_daily()
592 * @generated
593 */
594 void setDeduction_FO_daily(double value);
595
596 /**
597 * Returns the value of the '<em><b>Deduction FO monthly</b></em>' attribute.
598 * The default value is <code>"0.0"</code>.
599 * <!-- begin-user-doc -->
600 * <!-- end-user-doc -->
601 * @return the value of the '<em>Deduction FO monthly</em>' attribute.
602 * @see #setDeduction_FO_monthly(double)
603 * @see Taxation.TaxationPackage#getTax_Card_Deduction_FO_monthly()
604 * @model default="0.0" unique="false" required="true"
605 * @generated
606 */
607 double getDeduction_FO_monthly();
608
609 /**
610 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_FO_monthly <em>Deduction FO monthly</em>}' attribute.
611 * <!-- begin-user-doc -->
612 * <!-- end-user-doc -->
613 * @param value the new value of the '<em>Deduction FO monthly</em>' attribute.
614 * @see #getDeduction_FO_monthly()
615 * @generated
616 */
617 void setDeduction_FO_monthly(double value);
618
619 /**
620 * Returns the value of the '<em><b>Deduction FO yearly</b></em>' attribute.
621 * The default value is <code>"0.0"</code>.
622 * <!-- begin-user-doc -->
623 * <!-- end-user-doc -->
624 * @return the value of the '<em>Deduction FO yearly</em>' attribute.
625 * @see #setDeduction_FO_yearly(double)
626 * @see Taxation.TaxationPackage#getTax_Card_Deduction_FO_yearly()
627 * @model default="0.0" unique="false" required="true"
628 * @generated
629 */
630 double getDeduction_FO_yearly();
631
632 /**
633 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_FO_yearly <em>Deduction FO yearly</em>}' attribute.
634 * <!-- begin-user-doc -->
635 * <!-- end-user-doc -->
636 * @param value the new value of the '<em>Deduction FO yearly</em>' attribute.
637 * @see #getDeduction_FO_yearly()
638 * @generated
639 */
640 void setDeduction_FO_yearly(double value);
641
642 /**
643 * Returns the value of the '<em><b>Credit CIS daily</b></em>' attribute.
644 * The default value is <code>"0.0"</code>.
645 * <!-- begin-user-doc -->
646 * <!-- end-user-doc -->
647 * @return the value of the '<em>Credit CIS daily</em>' attribute.
648 * @see #setCredit_CIS_daily(double)
649 * @see Taxation.TaxationPackage#getTax_Card_Credit_CIS_daily()
650 * @model default="0.0" unique="false" required="true"
651 * @generated
652 */
653 double getCredit_CIS_daily();
654
655 /**
656 * Sets the value of the '{@link Taxation.Tax_Card#getCredit_CIS_daily <em>Credit CIS daily</em>}' attribute.
657 * <!-- begin-user-doc -->
658 * <!-- end-user-doc -->
659 * @param value the new value of the '<em>Credit CIS daily</em>' attribute.
660 * @see #getCredit_CIS_daily()
661 * @generated
662 */
663 void setCredit_CIS_daily(double value);
664
665 /**
666 * Returns the value of the '<em><b>Credit CIS monthly</b></em>' attribute.
667 * The default value is <code>"0.0"</code>.
668 * <!-- begin-user-doc -->
669 * <!-- end-user-doc -->
670 * @return the value of the '<em>Credit CIS monthly</em>' attribute.
671 * @see #setCredit_CIS_monthly(double)
672 * @see Taxation.TaxationPackage#getTax_Card_Credit_CIS_monthly()
673 * @model default="0.0" unique="false" required="true"
674 * @generated
675 */
676 double getCredit_CIS_monthly();
677
678 /**
679 * Sets the value of the '{@link Taxation.Tax_Card#getCredit_CIS_monthly <em>Credit CIS monthly</em>}' attribute.
680 * <!-- begin-user-doc -->
681 * <!-- end-user-doc -->
682 * @param value the new value of the '<em>Credit CIS monthly</em>' attribute.
683 * @see #getCredit_CIS_monthly()
684 * @generated
685 */
686 void setCredit_CIS_monthly(double value);
687
688 /**
689 * Returns the value of the '<em><b>Credit CIM daily</b></em>' attribute.
690 * The default value is <code>"0.0"</code>.
691 * <!-- begin-user-doc -->
692 * <!-- end-user-doc -->
693 * @return the value of the '<em>Credit CIM daily</em>' attribute.
694 * @see #setCredit_CIM_daily(double)
695 * @see Taxation.TaxationPackage#getTax_Card_Credit_CIM_daily()
696 * @model default="0.0" unique="false" required="true"
697 * @generated
698 */
699 double getCredit_CIM_daily();
700
701 /**
702 * Sets the value of the '{@link Taxation.Tax_Card#getCredit_CIM_daily <em>Credit CIM daily</em>}' attribute.
703 * <!-- begin-user-doc -->
704 * <!-- end-user-doc -->
705 * @param value the new value of the '<em>Credit CIM daily</em>' attribute.
706 * @see #getCredit_CIM_daily()
707 * @generated
708 */
709 void setCredit_CIM_daily(double value);
710
711 /**
712 * Returns the value of the '<em><b>Validity</b></em>' attribute.
713 * <!-- begin-user-doc -->
714 * <!-- end-user-doc -->
715 * @return the value of the '<em>Validity</em>' attribute.
716 * @see #setValidity(boolean)
717 * @see Taxation.TaxationPackage#getTax_Card_Validity()
718 * @model required="true"
719 * @generated
720 */
721 boolean isValidity();
722
723 /**
724 * Sets the value of the '{@link Taxation.Tax_Card#isValidity <em>Validity</em>}' attribute.
725 * <!-- begin-user-doc -->
726 * <!-- end-user-doc -->
727 * @param value the new value of the '<em>Validity</em>' attribute.
728 * @see #isValidity()
729 * @generated
730 */
731 void setValidity(boolean value);
732
733 /**
734 * Returns the value of the '<em><b>Income Tax Credit</b></em>' reference list.
735 * The list contents are of type {@link Taxation.Income_Tax_Credit}.
736 * It is bidirectional and its opposite is '{@link Taxation.Income_Tax_Credit#getTaxation_Frame <em>Taxation Frame</em>}'.
737 * <!-- begin-user-doc -->
738 * <!-- end-user-doc -->
739 * @return the value of the '<em>Income Tax Credit</em>' reference list.
740 * @see Taxation.TaxationPackage#getTax_Card_Income_Tax_Credit()
741 * @see Taxation.Income_Tax_Credit#getTaxation_Frame
742 * @model opposite="taxation_Frame" ordered="false"
743 * @generated
744 */
745 EList<Income_Tax_Credit> getIncome_Tax_Credit();
746
747 /**
748 * Returns the value of the '<em><b>Previous</b></em>' reference.
749 * It is bidirectional and its opposite is '{@link Taxation.Tax_Card#getCurrent_tax_card <em>Current tax card</em>}'.
750 * <!-- begin-user-doc -->
751 * <!-- end-user-doc -->
752 * @return the value of the '<em>Previous</em>' reference.
753 * @see #setPrevious(Tax_Card)
754 * @see Taxation.TaxationPackage#getTax_Card_Previous()
755 * @see Taxation.Tax_Card#getCurrent_tax_card
756 * @model opposite="current_tax_card"
757 * @generated
758 */
759 Tax_Card getPrevious();
760
761 /**
762 * Sets the value of the '{@link Taxation.Tax_Card#getPrevious <em>Previous</em>}' reference.
763 * <!-- begin-user-doc -->
764 * <!-- end-user-doc -->
765 * @param value the new value of the '<em>Previous</em>' reference.
766 * @see #getPrevious()
767 * @generated
768 */
769 void setPrevious(Tax_Card value);
770
771 /**
772 * Returns the value of the '<em><b>Current tax card</b></em>' reference.
773 * It is bidirectional and its opposite is '{@link Taxation.Tax_Card#getPrevious <em>Previous</em>}'.
774 * <!-- begin-user-doc -->
775 * <!-- end-user-doc -->
776 * @return the value of the '<em>Current tax card</em>' reference.
777 * @see #setCurrent_tax_card(Tax_Card)
778 * @see Taxation.TaxationPackage#getTax_Card_Current_tax_card()
779 * @see Taxation.Tax_Card#getPrevious
780 * @model opposite="previous"
781 * @generated
782 */
783 Tax_Card getCurrent_tax_card();
784
785 /**
786 * Sets the value of the '{@link Taxation.Tax_Card#getCurrent_tax_card <em>Current tax card</em>}' reference.
787 * <!-- begin-user-doc -->
788 * <!-- end-user-doc -->
789 * @param value the new value of the '<em>Current tax card</em>' reference.
790 * @see #getCurrent_tax_card()
791 * @generated
792 */
793 void setCurrent_tax_card(Tax_Card value);
794
795 /**
796 * Returns the value of the '<em><b>Credit CIM yearly</b></em>' attribute.
797 * <!-- begin-user-doc -->
798 * <!-- end-user-doc -->
799 * @return the value of the '<em>Credit CIM yearly</em>' attribute.
800 * @see #setCredit_CIM_yearly(double)
801 * @see Taxation.TaxationPackage#getTax_Card_Credit_CIM_yearly()
802 * @model required="true" ordered="false"
803 * @generated
804 */
805 double getCredit_CIM_yearly();
806
807 /**
808 * Sets the value of the '{@link Taxation.Tax_Card#getCredit_CIM_yearly <em>Credit CIM yearly</em>}' attribute.
809 * <!-- begin-user-doc -->
810 * <!-- end-user-doc -->
811 * @param value the new value of the '<em>Credit CIM yearly</em>' attribute.
812 * @see #getCredit_CIM_yearly()
813 * @generated
814 */
815 void setCredit_CIM_yearly(double value);
816
817 /**
818 * Returns the value of the '<em><b>Deduction DS Alimony yearly</b></em>' attribute.
819 * <!-- begin-user-doc -->
820 * <!-- end-user-doc -->
821 * @return the value of the '<em>Deduction DS Alimony yearly</em>' attribute.
822 * @see #setDeduction_DS_Alimony_yearly(double)
823 * @see Taxation.TaxationPackage#getTax_Card_Deduction_DS_Alimony_yearly()
824 * @model required="true" ordered="false"
825 * @generated
826 */
827 double getDeduction_DS_Alimony_yearly();
828
829 /**
830 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_DS_Alimony_yearly <em>Deduction DS Alimony yearly</em>}' attribute.
831 * <!-- begin-user-doc -->
832 * <!-- end-user-doc -->
833 * @param value the new value of the '<em>Deduction DS Alimony yearly</em>' attribute.
834 * @see #getDeduction_DS_Alimony_yearly()
835 * @generated
836 */
837 void setDeduction_DS_Alimony_yearly(double value);
838
839 /**
840 * Returns the value of the '<em><b>Deduction DS Debt yearly</b></em>' attribute.
841 * <!-- begin-user-doc -->
842 * <!-- end-user-doc -->
843 * @return the value of the '<em>Deduction DS Debt yearly</em>' attribute.
844 * @see #setDeduction_DS_Debt_yearly(double)
845 * @see Taxation.TaxationPackage#getTax_Card_Deduction_DS_Debt_yearly()
846 * @model required="true" ordered="false"
847 * @generated
848 */
849 double getDeduction_DS_Debt_yearly();
850
851 /**
852 * Sets the value of the '{@link Taxation.Tax_Card#getDeduction_DS_Debt_yearly <em>Deduction DS Debt yearly</em>}' attribute.
853 * <!-- begin-user-doc -->
854 * <!-- end-user-doc -->
855 * @param value the new value of the '<em>Deduction DS Debt yearly</em>' attribute.
856 * @see #getDeduction_DS_Debt_yearly()
857 * @generated
858 */
859 void setDeduction_DS_Debt_yearly(double value);
860
861 /**
862 * Returns the value of the '<em><b>Income</b></em>' container reference.
863 * It is bidirectional and its opposite is '{@link Taxation.Income#getTax_card <em>Tax card</em>}'.
864 * <!-- begin-user-doc -->
865 * <!-- end-user-doc -->
866 * @return the value of the '<em>Income</em>' container reference.
867 * @see #setIncome(Income)
868 * @see Taxation.TaxationPackage#getTax_Card_Income()
869 * @see Taxation.Income#getTax_card
870 * @model opposite="tax_card" required="true" transient="false"
871 * @generated
872 */
873 Income getIncome();
874
875 /**
876 * Sets the value of the '{@link Taxation.Tax_Card#getIncome <em>Income</em>}' container reference.
877 * <!-- begin-user-doc -->
878 * <!-- end-user-doc -->
879 * @param value the new value of the '<em>Income</em>' container reference.
880 * @see #getIncome()
881 * @generated
882 */
883 void setIncome(Income value);
884
885} // Tax_Card
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card_Type.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card_Type.java
new file mode 100644
index 00000000..442c1b65
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Card_Type.java
@@ -0,0 +1,209 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Tax Card Type</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getTax_Card_Type()
17 * @model
18 * @generated
19 */
20public enum Tax_Card_Type implements Enumerator {
21 /**
22 * The '<em><b>Principal</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #PRINCIPAL_VALUE
26 * @generated
27 * @ordered
28 */
29 PRINCIPAL(0, "Principal", "Principal"),
30
31 /**
32 * The '<em><b>Additional</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #ADDITIONAL_VALUE
36 * @generated
37 * @ordered
38 */
39 ADDITIONAL(1, "Additional", "Additional");
40
41 /**
42 * The '<em><b>Principal</b></em>' literal value.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #PRINCIPAL
46 * @model name="Principal"
47 * @generated
48 * @ordered
49 */
50 public static final int PRINCIPAL_VALUE = 0;
51
52 /**
53 * The '<em><b>Additional</b></em>' literal value.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #ADDITIONAL
57 * @model name="Additional"
58 * @generated
59 * @ordered
60 */
61 public static final int ADDITIONAL_VALUE = 1;
62
63 /**
64 * An array of all the '<em><b>Tax Card Type</b></em>' enumerators.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 private static final Tax_Card_Type[] VALUES_ARRAY =
70 new Tax_Card_Type[] {
71 PRINCIPAL,
72 ADDITIONAL,
73 };
74
75 /**
76 * A public read-only list of all the '<em><b>Tax Card Type</b></em>' enumerators.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 public static final List<Tax_Card_Type> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
82
83 /**
84 * Returns the '<em><b>Tax Card Type</b></em>' literal with the specified literal value.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @param literal the literal.
88 * @return the matching enumerator or <code>null</code>.
89 * @generated
90 */
91 public static Tax_Card_Type get(String literal) {
92 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
93 Tax_Card_Type result = VALUES_ARRAY[i];
94 if (result.toString().equals(literal)) {
95 return result;
96 }
97 }
98 return null;
99 }
100
101 /**
102 * Returns the '<em><b>Tax Card Type</b></em>' literal with the specified name.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @param name the name.
106 * @return the matching enumerator or <code>null</code>.
107 * @generated
108 */
109 public static Tax_Card_Type getByName(String name) {
110 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
111 Tax_Card_Type result = VALUES_ARRAY[i];
112 if (result.getName().equals(name)) {
113 return result;
114 }
115 }
116 return null;
117 }
118
119 /**
120 * Returns the '<em><b>Tax Card Type</b></em>' literal with the specified integer value.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @param value the integer value.
124 * @return the matching enumerator or <code>null</code>.
125 * @generated
126 */
127 public static Tax_Card_Type get(int value) {
128 switch (value) {
129 case PRINCIPAL_VALUE: return PRINCIPAL;
130 case ADDITIONAL_VALUE: return ADDITIONAL;
131 }
132 return null;
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 private final int value;
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 private final String name;
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 private final String literal;
155
156 /**
157 * Only this class can construct instances.
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 private Tax_Card_Type(int value, String name, String literal) {
163 this.value = value;
164 this.name = name;
165 this.literal = literal;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 public int getValue() {
175 return value;
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 @Override
184 public String getName() {
185 return name;
186 }
187
188 /**
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 */
193 @Override
194 public String getLiteral() {
195 return literal;
196 }
197
198 /**
199 * Returns the literal value of the enumerator, which is its string representation.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public String toString() {
206 return literal;
207 }
208
209} //Tax_Card_Type
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Case.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Case.java
new file mode 100644
index 00000000..eeab8f3f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Case.java
@@ -0,0 +1,18 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Tax Case</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 *
13 * @see Taxation.TaxationPackage#getTax_Case()
14 * @model interface="true" abstract="true"
15 * @generated
16 */
17public interface Tax_Case extends EObject {
18} // Tax_Case
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Class_Category.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Class_Category.java
new file mode 100644
index 00000000..5fc2437d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Class_Category.java
@@ -0,0 +1,232 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Tax Class Category</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getTax_Class_Category()
17 * @model
18 * @generated
19 */
20public enum Tax_Class_Category implements Enumerator {
21 /**
22 * The '<em><b>One</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #ONE_VALUE
26 * @generated
27 * @ordered
28 */
29 ONE(0, "One", "One"),
30
31 /**
32 * The '<em><b>One A</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #ONE_A_VALUE
36 * @generated
37 * @ordered
38 */
39 ONE_A(1, "One_A", "One_A"),
40
41 /**
42 * The '<em><b>Two</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #TWO_VALUE
46 * @generated
47 * @ordered
48 */
49 TWO(2, "Two", "Two");
50
51 /**
52 * The '<em><b>One</b></em>' literal value.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #ONE
56 * @model name="One"
57 * @generated
58 * @ordered
59 */
60 public static final int ONE_VALUE = 0;
61
62 /**
63 * The '<em><b>One A</b></em>' literal value.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #ONE_A
67 * @model name="One_A"
68 * @generated
69 * @ordered
70 */
71 public static final int ONE_A_VALUE = 1;
72
73 /**
74 * The '<em><b>Two</b></em>' literal value.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #TWO
78 * @model name="Two"
79 * @generated
80 * @ordered
81 */
82 public static final int TWO_VALUE = 2;
83
84 /**
85 * An array of all the '<em><b>Tax Class Category</b></em>' enumerators.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 private static final Tax_Class_Category[] VALUES_ARRAY =
91 new Tax_Class_Category[] {
92 ONE,
93 ONE_A,
94 TWO,
95 };
96
97 /**
98 * A public read-only list of all the '<em><b>Tax Class Category</b></em>' enumerators.
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 public static final List<Tax_Class_Category> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
104
105 /**
106 * Returns the '<em><b>Tax Class Category</b></em>' literal with the specified literal value.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @param literal the literal.
110 * @return the matching enumerator or <code>null</code>.
111 * @generated
112 */
113 public static Tax_Class_Category get(String literal) {
114 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
115 Tax_Class_Category result = VALUES_ARRAY[i];
116 if (result.toString().equals(literal)) {
117 return result;
118 }
119 }
120 return null;
121 }
122
123 /**
124 * Returns the '<em><b>Tax Class Category</b></em>' literal with the specified name.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @param name the name.
128 * @return the matching enumerator or <code>null</code>.
129 * @generated
130 */
131 public static Tax_Class_Category getByName(String name) {
132 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
133 Tax_Class_Category result = VALUES_ARRAY[i];
134 if (result.getName().equals(name)) {
135 return result;
136 }
137 }
138 return null;
139 }
140
141 /**
142 * Returns the '<em><b>Tax Class Category</b></em>' literal with the specified integer value.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @param value the integer value.
146 * @return the matching enumerator or <code>null</code>.
147 * @generated
148 */
149 public static Tax_Class_Category get(int value) {
150 switch (value) {
151 case ONE_VALUE: return ONE;
152 case ONE_A_VALUE: return ONE_A;
153 case TWO_VALUE: return TWO;
154 }
155 return null;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 private final int value;
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 private final String name;
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 private final String literal;
178
179 /**
180 * Only this class can construct instances.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 private Tax_Class_Category(int value, String name, String literal) {
186 this.value = value;
187 this.name = name;
188 this.literal = literal;
189 }
190
191 /**
192 * <!-- begin-user-doc -->
193 * <!-- end-user-doc -->
194 * @generated
195 */
196 @Override
197 public int getValue() {
198 return value;
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public String getName() {
208 return name;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public String getLiteral() {
218 return literal;
219 }
220
221 /**
222 * Returns the literal value of the enumerator, which is its string representation.
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public String toString() {
229 return literal;
230 }
231
232} //Tax_Class_Category
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Office.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Office.java
new file mode 100644
index 00000000..2b3969c3
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Office.java
@@ -0,0 +1,255 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Tax Office</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getTax_Office()
17 * @model
18 * @generated
19 */
20public enum Tax_Office implements Enumerator {
21 /**
22 * The '<em><b>RTS 2</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #RTS_2_VALUE
26 * @generated
27 * @ordered
28 */
29 RTS_2(0, "RTS_2", "RTS_2"),
30
31 /**
32 * The '<em><b>RTS 3</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #RTS_3_VALUE
36 * @generated
37 * @ordered
38 */
39 RTS_3(1, "RTS_3", "RTS_3"),
40
41 /**
42 * The '<em><b>RTS 4</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #RTS_4_VALUE
46 * @generated
47 * @ordered
48 */
49 RTS_4(2, "RTS_4", "RTS_4"),
50
51 /**
52 * The '<em><b>RTS 5</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #RTS_5_VALUE
56 * @generated
57 * @ordered
58 */
59 RTS_5(3, "RTS_5", "RTS_5");
60
61 /**
62 * The '<em><b>RTS 2</b></em>' literal value.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #RTS_2
66 * @model
67 * @generated
68 * @ordered
69 */
70 public static final int RTS_2_VALUE = 0;
71
72 /**
73 * The '<em><b>RTS 3</b></em>' literal value.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @see #RTS_3
77 * @model
78 * @generated
79 * @ordered
80 */
81 public static final int RTS_3_VALUE = 1;
82
83 /**
84 * The '<em><b>RTS 4</b></em>' literal value.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @see #RTS_4
88 * @model
89 * @generated
90 * @ordered
91 */
92 public static final int RTS_4_VALUE = 2;
93
94 /**
95 * The '<em><b>RTS 5</b></em>' literal value.
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @see #RTS_5
99 * @model
100 * @generated
101 * @ordered
102 */
103 public static final int RTS_5_VALUE = 3;
104
105 /**
106 * An array of all the '<em><b>Tax Office</b></em>' enumerators.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 private static final Tax_Office[] VALUES_ARRAY =
112 new Tax_Office[] {
113 RTS_2,
114 RTS_3,
115 RTS_4,
116 RTS_5,
117 };
118
119 /**
120 * A public read-only list of all the '<em><b>Tax Office</b></em>' enumerators.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 public static final List<Tax_Office> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
126
127 /**
128 * Returns the '<em><b>Tax Office</b></em>' literal with the specified literal value.
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @param literal the literal.
132 * @return the matching enumerator or <code>null</code>.
133 * @generated
134 */
135 public static Tax_Office get(String literal) {
136 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
137 Tax_Office result = VALUES_ARRAY[i];
138 if (result.toString().equals(literal)) {
139 return result;
140 }
141 }
142 return null;
143 }
144
145 /**
146 * Returns the '<em><b>Tax Office</b></em>' literal with the specified name.
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @param name the name.
150 * @return the matching enumerator or <code>null</code>.
151 * @generated
152 */
153 public static Tax_Office getByName(String name) {
154 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
155 Tax_Office result = VALUES_ARRAY[i];
156 if (result.getName().equals(name)) {
157 return result;
158 }
159 }
160 return null;
161 }
162
163 /**
164 * Returns the '<em><b>Tax Office</b></em>' literal with the specified integer value.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @param value the integer value.
168 * @return the matching enumerator or <code>null</code>.
169 * @generated
170 */
171 public static Tax_Office get(int value) {
172 switch (value) {
173 case RTS_2_VALUE: return RTS_2;
174 case RTS_3_VALUE: return RTS_3;
175 case RTS_4_VALUE: return RTS_4;
176 case RTS_5_VALUE: return RTS_5;
177 }
178 return null;
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 private final int value;
187
188 /**
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 */
193 private final String name;
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 private final String literal;
201
202 /**
203 * Only this class can construct instances.
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 private Tax_Office(int value, String name, String literal) {
209 this.value = value;
210 this.name = name;
211 this.literal = literal;
212 }
213
214 /**
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @generated
218 */
219 @Override
220 public int getValue() {
221 return value;
222 }
223
224 /**
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @generated
228 */
229 @Override
230 public String getName() {
231 return name;
232 }
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 @Override
240 public String getLiteral() {
241 return literal;
242 }
243
244 /**
245 * Returns the literal value of the enumerator, which is its string representation.
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 */
250 @Override
251 public String toString() {
252 return literal;
253 }
254
255} //Tax_Office
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Payer.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Payer.java
new file mode 100644
index 00000000..56de04a4
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Payer.java
@@ -0,0 +1,127 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.common.util.EList;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Tax Payer</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Tax_Payer#getDependents <em>Dependents</em>}</li>
17 * <li>{@link Taxation.Tax_Payer#getFrom_agent <em>From agent</em>}</li>
18 * <li>{@link Taxation.Tax_Payer#getIncomes <em>Incomes</em>}</li>
19 * <li>{@link Taxation.Tax_Payer#getFrom_law <em>From law</em>}</li>
20 * <li>{@link Taxation.Tax_Payer#getTaxesDue <em>Taxes Due</em>}</li>
21 * </ul>
22 *
23 * @see Taxation.TaxationPackage#getTax_Payer()
24 * @model abstract="true"
25 * annotation="duplicates"
26 * @generated
27 */
28public interface Tax_Payer extends Physical_Person, Tax_Case {
29 /**
30 * Returns the value of the '<em><b>Dependents</b></em>' containment reference list.
31 * The list contents are of type {@link Taxation.Dependent}.
32 * It is bidirectional and its opposite is '{@link Taxation.Dependent#getResponsible_person <em>Responsible person</em>}'.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Dependents</em>' containment reference list.
36 * @see Taxation.TaxationPackage#getTax_Payer_Dependents()
37 * @see Taxation.Dependent#getResponsible_person
38 * @model opposite="responsible_person" containment="true" upper="6" ordered="false"
39 * @generated
40 */
41 EList<Dependent> getDependents();
42
43 /**
44 * Returns the value of the '<em><b>From agent</b></em>' containment reference.
45 * It is bidirectional and its opposite is '{@link Taxation.FromAgent#getTaxPayer <em>Tax Payer</em>}'.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @return the value of the '<em>From agent</em>' containment reference.
49 * @see #setFrom_agent(FromAgent)
50 * @see Taxation.TaxationPackage#getTax_Payer_From_agent()
51 * @see Taxation.FromAgent#getTaxPayer
52 * @model opposite="taxPayer" containment="true" required="true"
53 * @generated
54 */
55 FromAgent getFrom_agent();
56
57 /**
58 * Sets the value of the '{@link Taxation.Tax_Payer#getFrom_agent <em>From agent</em>}' containment reference.
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @param value the new value of the '<em>From agent</em>' containment reference.
62 * @see #getFrom_agent()
63 * @generated
64 */
65 void setFrom_agent(FromAgent value);
66
67 /**
68 * Returns the value of the '<em><b>Incomes</b></em>' containment reference list.
69 * The list contents are of type {@link Taxation.Income}.
70 * It is bidirectional and its opposite is '{@link Taxation.Income#getTaxPayer <em>Tax Payer</em>}'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return the value of the '<em>Incomes</em>' containment reference list.
74 * @see Taxation.TaxationPackage#getTax_Payer_Incomes()
75 * @see Taxation.Income#getTaxPayer
76 * @model opposite="taxPayer" containment="true" required="true" ordered="false"
77 * @generated
78 */
79 EList<Income> getIncomes();
80
81 /**
82 * Returns the value of the '<em><b>From law</b></em>' containment reference.
83 * It is bidirectional and its opposite is '{@link Taxation.FromLaw#getTaxPayer <em>Tax Payer</em>}'.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @return the value of the '<em>From law</em>' containment reference.
87 * @see #setFrom_law(FromLaw)
88 * @see Taxation.TaxationPackage#getTax_Payer_From_law()
89 * @see Taxation.FromLaw#getTaxPayer
90 * @model opposite="taxPayer" containment="true" required="true"
91 * @generated
92 */
93 FromLaw getFrom_law();
94
95 /**
96 * Sets the value of the '{@link Taxation.Tax_Payer#getFrom_law <em>From law</em>}' containment reference.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @param value the new value of the '<em>From law</em>' containment reference.
100 * @see #getFrom_law()
101 * @generated
102 */
103 void setFrom_law(FromLaw value);
104
105 /**
106 * Returns the value of the '<em><b>Taxes Due</b></em>' attribute.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @return the value of the '<em>Taxes Due</em>' attribute.
110 * @see #setTaxesDue(double)
111 * @see Taxation.TaxationPackage#getTax_Payer_TaxesDue()
112 * @model required="true" ordered="false"
113 * @generated
114 */
115 double getTaxesDue();
116
117 /**
118 * Sets the value of the '{@link Taxation.Tax_Payer#getTaxesDue <em>Taxes Due</em>}' attribute.
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @param value the new value of the '<em>Taxes Due</em>' attribute.
122 * @see #getTaxesDue()
123 * @generated
124 */
125 void setTaxesDue(double value);
126
127} // Tax_Payer
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Property.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Property.java
new file mode 100644
index 00000000..25c2d51a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Tax_Property.java
@@ -0,0 +1,94 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Tax Property</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link Taxation.Tax_Property#getStarting_year <em>Starting year</em>}</li>
17 * <li>{@link Taxation.Tax_Property#getId10 <em>Id10</em>}</li>
18 * <li>{@link Taxation.Tax_Property#getUnion_record <em>Union record</em>}</li>
19 * </ul>
20 *
21 * @see Taxation.TaxationPackage#getTax_Property()
22 * @model
23 * @generated
24 */
25public interface Tax_Property extends EObject {
26 /**
27 * Returns the value of the '<em><b>Starting year</b></em>' attribute.
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @return the value of the '<em>Starting year</em>' attribute.
31 * @see #setStarting_year(int)
32 * @see Taxation.TaxationPackage#getTax_Property_Starting_year()
33 * @model required="true" ordered="false"
34 * @generated
35 */
36 int getStarting_year();
37
38 /**
39 * Sets the value of the '{@link Taxation.Tax_Property#getStarting_year <em>Starting year</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @param value the new value of the '<em>Starting year</em>' attribute.
43 * @see #getStarting_year()
44 * @generated
45 */
46 void setStarting_year(int value);
47
48 /**
49 * Returns the value of the '<em><b>Id10</b></em>' attribute.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @return the value of the '<em>Id10</em>' attribute.
53 * @see #setId10(String)
54 * @see Taxation.TaxationPackage#getTax_Property_Id10()
55 * @model id="true" required="true" ordered="false"
56 * @generated
57 */
58 String getId10();
59
60 /**
61 * Sets the value of the '{@link Taxation.Tax_Property#getId10 <em>Id10</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @param value the new value of the '<em>Id10</em>' attribute.
65 * @see #getId10()
66 * @generated
67 */
68 void setId10(String value);
69
70 /**
71 * Returns the value of the '<em><b>Union record</b></em>' container reference.
72 * It is bidirectional and its opposite is '{@link Taxation.Legal_Union_Record#getProperties <em>Properties</em>}'.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @return the value of the '<em>Union record</em>' container reference.
76 * @see #setUnion_record(Legal_Union_Record)
77 * @see Taxation.TaxationPackage#getTax_Property_Union_record()
78 * @see Taxation.Legal_Union_Record#getProperties
79 * @model opposite="properties" required="true" transient="false" ordered="false"
80 * @generated
81 */
82 Legal_Union_Record getUnion_record();
83
84 /**
85 * Sets the value of the '{@link Taxation.Tax_Property#getUnion_record <em>Union record</em>}' container reference.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @param value the new value of the '<em>Union record</em>' container reference.
89 * @see #getUnion_record()
90 * @generated
91 */
92 void setUnion_record(Legal_Union_Record value);
93
94} // Tax_Property
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationFactory.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationFactory.java
new file mode 100644
index 00000000..cdf29fd9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationFactory.java
@@ -0,0 +1,501 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see Taxation.TaxationPackage
13 * @generated
14 */
15public interface TaxationFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 TaxationFactory eINSTANCE = Taxation.impl.TaxationFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>Income Tax</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>Income Tax</em>'.
29 * @generated
30 */
31 Income_Tax createIncome_Tax();
32
33 /**
34 * Returns a new object of class '<em>Physical Person</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Physical Person</em>'.
38 * @generated
39 */
40 Physical_Person createPhysical_Person();
41
42 /**
43 * Returns a new object of class '<em>Address</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Address</em>'.
47 * @generated
48 */
49 Address createAddress();
50
51 /**
52 * Returns a new object of class '<em>Expense</em>'.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return a new object of class '<em>Expense</em>'.
56 * @generated
57 */
58 Expense createExpense();
59
60 /**
61 * Returns a new object of class '<em>Dependent</em>'.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @return a new object of class '<em>Dependent</em>'.
65 * @generated
66 */
67 Dependent createDependent();
68
69 /**
70 * Returns a new object of class '<em>External Allowance</em>'.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @return a new object of class '<em>External Allowance</em>'.
74 * @generated
75 */
76 External_Allowance createExternal_Allowance();
77
78 /**
79 * Returns a new object of class '<em>Household</em>'.
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @return a new object of class '<em>Household</em>'.
83 * @generated
84 */
85 Household createHousehold();
86
87 /**
88 * Returns a new object of class '<em>Tax Property</em>'.
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @return a new object of class '<em>Tax Property</em>'.
92 * @generated
93 */
94 Tax_Property createTax_Property();
95
96 /**
97 * Returns a new object of class '<em>From Agent</em>'.
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @return a new object of class '<em>From Agent</em>'.
101 * @generated
102 */
103 FromAgent createFromAgent();
104
105 /**
106 * Returns a new object of class '<em>Tax Card</em>'.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @return a new object of class '<em>Tax Card</em>'.
110 * @generated
111 */
112 Tax_Card createTax_Card();
113
114 /**
115 * Returns a new object of class '<em>Income Tax Credit</em>'.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @return a new object of class '<em>Income Tax Credit</em>'.
119 * @generated
120 */
121 Income_Tax_Credit createIncome_Tax_Credit();
122
123 /**
124 * Returns a new object of class '<em>Income Detail</em>'.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @return a new object of class '<em>Income Detail</em>'.
128 * @generated
129 */
130 Income_Detail createIncome_Detail();
131
132 /**
133 * Returns a new object of class '<em>From Law</em>'.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @return a new object of class '<em>From Law</em>'.
137 * @generated
138 */
139 FromLaw createFromLaw();
140
141 /**
142 * Returns a new object of class '<em>Fiscal Address</em>'.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @return a new object of class '<em>Fiscal Address</em>'.
146 * @generated
147 */
148 Fiscal_Address createFiscal_Address();
149
150 /**
151 * Returns a new object of class '<em>Habitual Address</em>'.
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @return a new object of class '<em>Habitual Address</em>'.
155 * @generated
156 */
157 Habitual_Address createHabitual_Address();
158
159 /**
160 * Returns a new object of class '<em>Marriage Record</em>'.
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @return a new object of class '<em>Marriage Record</em>'.
164 * @generated
165 */
166 Marriage_Record createMarriage_Record();
167
168 /**
169 * Returns a new object of class '<em>Non Resident Tax Payer</em>'.
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @return a new object of class '<em>Non Resident Tax Payer</em>'.
173 * @generated
174 */
175 Non_Resident_Tax_Payer createNon_Resident_Tax_Payer();
176
177 /**
178 * Returns a new object of class '<em>Partnership Record</em>'.
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @return a new object of class '<em>Partnership Record</em>'.
182 * @generated
183 */
184 Partnership_Record createPartnership_Record();
185
186 /**
187 * Returns a new object of class '<em>Resident Tax Payer</em>'.
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @return a new object of class '<em>Resident Tax Payer</em>'.
191 * @generated
192 */
193 Resident_Tax_Payer createResident_Tax_Payer();
194
195 /**
196 * Returns a new object of class '<em>Trade and Business Income</em>'.
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @return a new object of class '<em>Trade and Business Income</em>'.
200 * @generated
201 */
202 Trade_and_Business_Income createTrade_and_Business_Income();
203
204 /**
205 * Returns a new object of class '<em>Agriculture and Forestry Income</em>'.
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @return a new object of class '<em>Agriculture and Forestry Income</em>'.
209 * @generated
210 */
211 Agriculture_and_Forestry_Income createAgriculture_and_Forestry_Income();
212
213 /**
214 * Returns a new object of class '<em>Pensions and Annuities Income</em>'.
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @return a new object of class '<em>Pensions and Annuities Income</em>'.
218 * @generated
219 */
220 Pensions_and_Annuities_Income createPensions_and_Annuities_Income();
221
222 /**
223 * Returns a new object of class '<em>Capital and Investments Income</em>'.
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @return a new object of class '<em>Capital and Investments Income</em>'.
227 * @generated
228 */
229 Capital_and_Investments_Income createCapital_and_Investments_Income();
230
231 /**
232 * Returns a new object of class '<em>Employment Income</em>'.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @return a new object of class '<em>Employment Income</em>'.
236 * @generated
237 */
238 Employment_Income createEmployment_Income();
239
240 /**
241 * Returns a new object of class '<em>Rentals and Leases Income</em>'.
242 * <!-- begin-user-doc -->
243 * <!-- end-user-doc -->
244 * @return a new object of class '<em>Rentals and Leases Income</em>'.
245 * @generated
246 */
247 Rentals_and_Leases_Income createRentals_and_Leases_Income();
248
249 /**
250 * Returns a new object of class '<em>Foreign Income</em>'.
251 * <!-- begin-user-doc -->
252 * <!-- end-user-doc -->
253 * @return a new object of class '<em>Foreign Income</em>'.
254 * @generated
255 */
256 Foreign_Income createForeign_Income();
257
258 /**
259 * Returns a new object of class '<em>Local Income</em>'.
260 * <!-- begin-user-doc -->
261 * <!-- end-user-doc -->
262 * @return a new object of class '<em>Local Income</em>'.
263 * @generated
264 */
265 Local_Income createLocal_Income();
266
267 /**
268 * Returns a new object of class '<em>CIM</em>'.
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @return a new object of class '<em>CIM</em>'.
272 * @generated
273 */
274 CIM createCIM();
275
276 /**
277 * Returns a new object of class '<em>CIP</em>'.
278 * <!-- begin-user-doc -->
279 * <!-- end-user-doc -->
280 * @return a new object of class '<em>CIP</em>'.
281 * @generated
282 */
283 CIP createCIP();
284
285 /**
286 * Returns a new object of class '<em>CIS</em>'.
287 * <!-- begin-user-doc -->
288 * <!-- end-user-doc -->
289 * @return a new object of class '<em>CIS</em>'.
290 * @generated
291 */
292 CIS createCIS();
293
294 /**
295 * Returns a new object of class '<em>FD</em>'.
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @return a new object of class '<em>FD</em>'.
299 * @generated
300 */
301 FD createFD();
302
303 /**
304 * Returns a new object of class '<em>Professional Expenses Deduction</em>'.
305 * <!-- begin-user-doc -->
306 * <!-- end-user-doc -->
307 * @return a new object of class '<em>Professional Expenses Deduction</em>'.
308 * @generated
309 */
310 Professional_Expenses_Deduction createProfessional_Expenses_Deduction();
311
312 /**
313 * Returns a new object of class '<em>FO</em>'.
314 * <!-- begin-user-doc -->
315 * <!-- end-user-doc -->
316 * @return a new object of class '<em>FO</em>'.
317 * @generated
318 */
319 FO createFO();
320
321 /**
322 * Returns a new object of class '<em>DS for Permanent Expense</em>'.
323 * <!-- begin-user-doc -->
324 * <!-- end-user-doc -->
325 * @return a new object of class '<em>DS for Permanent Expense</em>'.
326 * @generated
327 */
328 DS_for_Permanent_Expense createDS_for_Permanent_Expense();
329
330 /**
331 * Returns a new object of class '<em>DS</em>'.
332 * <!-- begin-user-doc -->
333 * <!-- end-user-doc -->
334 * @return a new object of class '<em>DS</em>'.
335 * @generated
336 */
337 DS createDS();
338
339 /**
340 * Returns a new object of class '<em>DS for Interest Expense</em>'.
341 * <!-- begin-user-doc -->
342 * <!-- end-user-doc -->
343 * @return a new object of class '<em>DS for Interest Expense</em>'.
344 * @generated
345 */
346 DS_for_Interest_Expense createDS_for_Interest_Expense();
347
348 /**
349 * Returns a new object of class '<em>DS for Health and Pension Insurance</em>'.
350 * <!-- begin-user-doc -->
351 * <!-- end-user-doc -->
352 * @return a new object of class '<em>DS for Health and Pension Insurance</em>'.
353 * @generated
354 */
355 DS_for_Health_and_Pension_Insurance createDS_for_Health_and_Pension_Insurance();
356
357 /**
358 * Returns a new object of class '<em>DS for Private Insurance and Plan</em>'.
359 * <!-- begin-user-doc -->
360 * <!-- end-user-doc -->
361 * @return a new object of class '<em>DS for Private Insurance and Plan</em>'.
362 * @generated
363 */
364 DS_for_Private_Insurance_and_Plan createDS_for_Private_Insurance_and_Plan();
365
366 /**
367 * Returns a new object of class '<em>DS for Loss Carryforward</em>'.
368 * <!-- begin-user-doc -->
369 * <!-- end-user-doc -->
370 * @return a new object of class '<em>DS for Loss Carryforward</em>'.
371 * @generated
372 */
373 DS_for_Loss_Carryforward createDS_for_Loss_Carryforward();
374
375 /**
376 * Returns a new object of class '<em>DS for Donation</em>'.
377 * <!-- begin-user-doc -->
378 * <!-- end-user-doc -->
379 * @return a new object of class '<em>DS for Donation</em>'.
380 * @generated
381 */
382 DS_for_Donation createDS_for_Donation();
383
384 /**
385 * Returns a new object of class '<em>Permanent Expense</em>'.
386 * <!-- begin-user-doc -->
387 * <!-- end-user-doc -->
388 * @return a new object of class '<em>Permanent Expense</em>'.
389 * @generated
390 */
391 Permanent_Expense createPermanent_Expense();
392
393 /**
394 * Returns a new object of class '<em>Special Expense DS</em>'.
395 * <!-- begin-user-doc -->
396 * <!-- end-user-doc -->
397 * @return a new object of class '<em>Special Expense DS</em>'.
398 * @generated
399 */
400 Special_Expense_DS createSpecial_Expense_DS();
401
402 /**
403 * Returns a new object of class '<em>Interest Expense</em>'.
404 * <!-- begin-user-doc -->
405 * <!-- end-user-doc -->
406 * @return a new object of class '<em>Interest Expense</em>'.
407 * @generated
408 */
409 Interest_Expense createInterest_Expense();
410
411 /**
412 * Returns a new object of class '<em>Private Insurance and Plan</em>'.
413 * <!-- begin-user-doc -->
414 * <!-- end-user-doc -->
415 * @return a new object of class '<em>Private Insurance and Plan</em>'.
416 * @generated
417 */
418 Private_Insurance_and_Plan createPrivate_Insurance_and_Plan();
419
420 /**
421 * Returns a new object of class '<em>Health and Pension Insurance</em>'.
422 * <!-- begin-user-doc -->
423 * <!-- end-user-doc -->
424 * @return a new object of class '<em>Health and Pension Insurance</em>'.
425 * @generated
426 */
427 Health_and_Pension_Insurance createHealth_and_Pension_Insurance();
428
429 /**
430 * Returns a new object of class '<em>Donation</em>'.
431 * <!-- begin-user-doc -->
432 * <!-- end-user-doc -->
433 * @return a new object of class '<em>Donation</em>'.
434 * @generated
435 */
436 Donation createDonation();
437
438 /**
439 * Returns a new object of class '<em>Loss Carryforward</em>'.
440 * <!-- begin-user-doc -->
441 * <!-- end-user-doc -->
442 * @return a new object of class '<em>Loss Carryforward</em>'.
443 * @generated
444 */
445 Loss_Carryforward createLoss_Carryforward();
446
447 /**
448 * Returns a new object of class '<em>Spousal Expense AC</em>'.
449 * <!-- begin-user-doc -->
450 * <!-- end-user-doc -->
451 * @return a new object of class '<em>Spousal Expense AC</em>'.
452 * @generated
453 */
454 Spousal_Expense_AC createSpousal_Expense_AC();
455
456 /**
457 * Returns a new object of class '<em>Extraordinary Expense CE</em>'.
458 * <!-- begin-user-doc -->
459 * <!-- end-user-doc -->
460 * @return a new object of class '<em>Extraordinary Expense CE</em>'.
461 * @generated
462 */
463 Extraordinary_Expense_CE createExtraordinary_Expense_CE();
464
465 /**
466 * Returns a new object of class '<em>Travel Expense FD</em>'.
467 * <!-- begin-user-doc -->
468 * <!-- end-user-doc -->
469 * @return a new object of class '<em>Travel Expense FD</em>'.
470 * @generated
471 */
472 Travel_Expense_FD createTravel_Expense_FD();
473
474 /**
475 * Returns a new object of class '<em>Professional Expense</em>'.
476 * <!-- begin-user-doc -->
477 * <!-- end-user-doc -->
478 * @return a new object of class '<em>Professional Expense</em>'.
479 * @generated
480 */
481 Professional_Expense createProfessional_Expense();
482
483 /**
484 * Returns a new object of class '<em>Miscellaneous Expense FO</em>'.
485 * <!-- begin-user-doc -->
486 * <!-- end-user-doc -->
487 * @return a new object of class '<em>Miscellaneous Expense FO</em>'.
488 * @generated
489 */
490 Miscellaneous_Expense_FO createMiscellaneous_Expense_FO();
491
492 /**
493 * Returns the package supported by this factory.
494 * <!-- begin-user-doc -->
495 * <!-- end-user-doc -->
496 * @return the package supported by this factory.
497 * @generated
498 */
499 TaxationPackage getTaxationPackage();
500
501} //TaxationFactory
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationPackage.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationPackage.java
new file mode 100644
index 00000000..260e296f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/TaxationPackage.java
@@ -0,0 +1,10961 @@
1/**
2 */
3package Taxation;
4
5import org.eclipse.emf.ecore.EAttribute;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.EEnum;
8import org.eclipse.emf.ecore.EPackage;
9import org.eclipse.emf.ecore.EReference;
10
11/**
12 * <!-- begin-user-doc -->
13 * The <b>Package</b> for the model.
14 * It contains accessors for the meta objects to represent
15 * <ul>
16 * <li>each class,</li>
17 * <li>each feature of each class,</li>
18 * <li>each operation of each class,</li>
19 * <li>each enum,</li>
20 * <li>and each data type</li>
21 * </ul>
22 * <!-- end-user-doc -->
23 * @see Taxation.TaxationFactory
24 * @model kind="package"
25 * annotation="http://www.eclipse.org/OCL/Import ecore='http://www.eclipse.org/emf/2002/Ecore'"
26 * @generated
27 */
28public interface TaxationPackage extends EPackage {
29 /**
30 * The package name.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @generated
34 */
35 String eNAME = "Taxation";
36
37 /**
38 * The package namespace URI.
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @generated
42 */
43 String eNS_URI = "http:///TaxCard.ecore";
44
45 /**
46 * The package namespace name.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @generated
50 */
51 String eNS_PREFIX = "TaxCard";
52
53 /**
54 * The singleton instance of the package.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 TaxationPackage eINSTANCE = Taxation.impl.TaxationPackageImpl.init();
60
61 /**
62 * The meta object id for the '{@link Taxation.impl.ConstantsImpl <em>Constants</em>}' class.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see Taxation.impl.ConstantsImpl
66 * @see Taxation.impl.TaxationPackageImpl#getConstants()
67 * @generated
68 */
69 int CONSTANTS = 0;
70
71 /**
72 * The feature id for the '<em><b>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</b></em>' attribute.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @generated
76 * @ordered
77 */
78 int CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD = 0;
79
80 /**
81 * The feature id for the '<em><b>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</b></em>' attribute.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @generated
85 * @ordered
86 */
87 int CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE = 1;
88
89 /**
90 * The feature id for the '<em><b>MINIMUM SALARY</b></em>' attribute.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 * @ordered
95 */
96 int CONSTANTS__MINIMUM_SALARY = 2;
97
98 /**
99 * The feature id for the '<em><b>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</b></em>' attribute.
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 * @ordered
104 */
105 int CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION = 3;
106
107 /**
108 * The feature id for the '<em><b>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</b></em>' attribute.
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 * @ordered
113 */
114 int CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS = 4;
115
116 /**
117 * The feature id for the '<em><b>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</b></em>' attribute.
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @generated
121 * @ordered
122 */
123 int CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS = 5;
124
125 /**
126 * The feature id for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</b></em>' attribute.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 * @ordered
131 */
132 int CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC = 6;
133
134 /**
135 * The feature id for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</b></em>' attribute.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 * @ordered
140 */
141 int CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE = 7;
142
143 /**
144 * The feature id for the '<em><b>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute.
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @generated
148 * @ordered
149 */
150 int CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = 8;
151
152 /**
153 * The feature id for the '<em><b>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @generated
157 * @ordered
158 */
159 int CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = 9;
160
161 /**
162 * The feature id for the '<em><b>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute.
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 * @ordered
167 */
168 int CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = 10;
169
170 /**
171 * The feature id for the '<em><b>FLAT RATE CIM DAILY</b></em>' attribute.
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @generated
175 * @ordered
176 */
177 int CONSTANTS__FLAT_RATE_CIM_DAILY = 11;
178
179 /**
180 * The feature id for the '<em><b>FLAT RATE CIM MONTHLY</b></em>' attribute.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 * @ordered
185 */
186 int CONSTANTS__FLAT_RATE_CIM_MONTHLY = 12;
187
188 /**
189 * The feature id for the '<em><b>FLAT RATE CIM YEARLY</b></em>' attribute.
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 * @ordered
194 */
195 int CONSTANTS__FLAT_RATE_CIM_YEARLY = 13;
196
197 /**
198 * The feature id for the '<em><b>FLAT RATE CIP DAILY</b></em>' attribute.
199 * <!-- begin-user-doc -->
200 * <!-- end-user-doc -->
201 * @generated
202 * @ordered
203 */
204 int CONSTANTS__FLAT_RATE_CIP_DAILY = 14;
205
206 /**
207 * The feature id for the '<em><b>FLAT RATE CIP MONTHLY</b></em>' attribute.
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 * @ordered
212 */
213 int CONSTANTS__FLAT_RATE_CIP_MONTHLY = 15;
214
215 /**
216 * The feature id for the '<em><b>FLAT RATE CIP YEARLY</b></em>' attribute.
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @generated
220 * @ordered
221 */
222 int CONSTANTS__FLAT_RATE_CIP_YEARLY = 16;
223
224 /**
225 * The feature id for the '<em><b>FLAT RATE CIS DAILY</b></em>' attribute.
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 * @ordered
230 */
231 int CONSTANTS__FLAT_RATE_CIS_DAILY = 17;
232
233 /**
234 * The feature id for the '<em><b>FLAT RATE CIS MONTHLY</b></em>' attribute.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 * @ordered
239 */
240 int CONSTANTS__FLAT_RATE_CIS_MONTHLY = 18;
241
242 /**
243 * The feature id for the '<em><b>FLAT RATE CIS YEARLY</b></em>' attribute.
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 * @ordered
248 */
249 int CONSTANTS__FLAT_RATE_CIS_YEARLY = 19;
250
251 /**
252 * The feature id for the '<em><b>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</b></em>' attribute.
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 * @ordered
257 */
258 int CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT = 20;
259
260 /**
261 * The feature id for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</b></em>' attribute.
262 * <!-- begin-user-doc -->
263 * <!-- end-user-doc -->
264 * @generated
265 * @ordered
266 */
267 int CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS = 21;
268
269 /**
270 * The feature id for the '<em><b>FLAT RATE FOR MISCELLANEOUS EXPENSE</b></em>' attribute.
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 * @ordered
275 */
276 int CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = 22;
277
278 /**
279 * The feature id for the '<em><b>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</b></em>' attribute.
280 * <!-- begin-user-doc -->
281 * <!-- end-user-doc -->
282 * @generated
283 * @ordered
284 */
285 int CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = 23;
286
287 /**
288 * The feature id for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</b></em>' attribute.
289 * <!-- begin-user-doc -->
290 * <!-- end-user-doc -->
291 * @generated
292 * @ordered
293 */
294 int CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE = 24;
295
296 /**
297 * The number of structural features of the '<em>Constants</em>' class.
298 * <!-- begin-user-doc -->
299 * <!-- end-user-doc -->
300 * @generated
301 * @ordered
302 */
303 int CONSTANTS_FEATURE_COUNT = 25;
304
305 /**
306 * The number of operations of the '<em>Constants</em>' class.
307 * <!-- begin-user-doc -->
308 * <!-- end-user-doc -->
309 * @generated
310 * @ordered
311 */
312 int CONSTANTS_OPERATION_COUNT = 0;
313
314 /**
315 * The meta object id for the '{@link Taxation.impl.Income_TaxImpl <em>Income Tax</em>}' class.
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @see Taxation.impl.Income_TaxImpl
319 * @see Taxation.impl.TaxationPackageImpl#getIncome_Tax()
320 * @generated
321 */
322 int INCOME_TAX = 1;
323
324 /**
325 * The feature id for the '<em><b>Tax Payer</b></em>' reference.
326 * <!-- begin-user-doc -->
327 * <!-- end-user-doc -->
328 * @generated
329 * @ordered
330 */
331 int INCOME_TAX__TAX_PAYER = 0;
332
333 /**
334 * The feature id for the '<em><b>Tax amount</b></em>' attribute.
335 * <!-- begin-user-doc -->
336 * <!-- end-user-doc -->
337 * @generated
338 * @ordered
339 */
340 int INCOME_TAX__TAX_AMOUNT = 1;
341
342 /**
343 * The feature id for the '<em><b>Tax year</b></em>' attribute.
344 * <!-- begin-user-doc -->
345 * <!-- end-user-doc -->
346 * @generated
347 * @ordered
348 */
349 int INCOME_TAX__TAX_YEAR = 2;
350
351 /**
352 * The feature id for the '<em><b>Id6</b></em>' attribute.
353 * <!-- begin-user-doc -->
354 * <!-- end-user-doc -->
355 * @generated
356 * @ordered
357 */
358 int INCOME_TAX__ID6 = 3;
359
360 /**
361 * The number of structural features of the '<em>Income Tax</em>' class.
362 * <!-- begin-user-doc -->
363 * <!-- end-user-doc -->
364 * @generated
365 * @ordered
366 */
367 int INCOME_TAX_FEATURE_COUNT = 4;
368
369 /**
370 * The number of operations of the '<em>Income Tax</em>' class.
371 * <!-- begin-user-doc -->
372 * <!-- end-user-doc -->
373 * @generated
374 * @ordered
375 */
376 int INCOME_TAX_OPERATION_COUNT = 0;
377
378 /**
379 * The meta object id for the '{@link Taxation.impl.Physical_PersonImpl <em>Physical Person</em>}' class.
380 * <!-- begin-user-doc -->
381 * <!-- end-user-doc -->
382 * @see Taxation.impl.Physical_PersonImpl
383 * @see Taxation.impl.TaxationPackageImpl#getPhysical_Person()
384 * @generated
385 */
386 int PHYSICAL_PERSON = 3;
387
388 /**
389 * The feature id for the '<em><b>Is assisting spouse</b></em>' attribute.
390 * <!-- begin-user-doc -->
391 * <!-- end-user-doc -->
392 * @generated
393 * @ordered
394 */
395 int PHYSICAL_PERSON__IS_ASSISTING_SPOUSE = 0;
396
397 /**
398 * The feature id for the '<em><b>SS No</b></em>' attribute.
399 * <!-- begin-user-doc -->
400 * <!-- end-user-doc -->
401 * @generated
402 * @ordered
403 */
404 int PHYSICAL_PERSON__SS_NO = 1;
405
406 /**
407 * The feature id for the '<em><b>Addresses</b></em>' reference list.
408 * <!-- begin-user-doc -->
409 * <!-- end-user-doc -->
410 * @generated
411 * @ordered
412 */
413 int PHYSICAL_PERSON__ADDRESSES = 2;
414
415 /**
416 * The feature id for the '<em><b>Birth year</b></em>' attribute.
417 * <!-- begin-user-doc -->
418 * <!-- end-user-doc -->
419 * @generated
420 * @ordered
421 */
422 int PHYSICAL_PERSON__BIRTH_YEAR = 3;
423
424 /**
425 * The feature id for the '<em><b>Disability percentage</b></em>' attribute.
426 * <!-- begin-user-doc -->
427 * <!-- end-user-doc -->
428 * @generated
429 * @ordered
430 */
431 int PHYSICAL_PERSON__DISABILITY_PERCENTAGE = 4;
432
433 /**
434 * The feature id for the '<em><b>Disability type</b></em>' attribute.
435 * <!-- begin-user-doc -->
436 * <!-- end-user-doc -->
437 * @generated
438 * @ordered
439 */
440 int PHYSICAL_PERSON__DISABILITY_TYPE = 5;
441
442 /**
443 * The feature id for the '<em><b>Is affiliated personnaly to social security</b></em>' attribute.
444 * <!-- begin-user-doc -->
445 * <!-- end-user-doc -->
446 * @generated
447 * @ordered
448 */
449 int PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY = 6;
450
451 /**
452 * The feature id for the '<em><b>Birth month</b></em>' attribute.
453 * <!-- begin-user-doc -->
454 * <!-- end-user-doc -->
455 * @generated
456 * @ordered
457 */
458 int PHYSICAL_PERSON__BIRTH_MONTH = 7;
459
460 /**
461 * The feature id for the '<em><b>Birth day</b></em>' attribute.
462 * <!-- begin-user-doc -->
463 * <!-- end-user-doc -->
464 * @generated
465 * @ordered
466 */
467 int PHYSICAL_PERSON__BIRTH_DAY = 8;
468
469 /**
470 * The feature id for the '<em><b>Expenses</b></em>' reference list.
471 * <!-- begin-user-doc -->
472 * <!-- end-user-doc -->
473 * @generated
474 * @ordered
475 */
476 int PHYSICAL_PERSON__EXPENSES = 9;
477
478 /**
479 * The feature id for the '<em><b>Is widower</b></em>' attribute.
480 * <!-- begin-user-doc -->
481 * <!-- end-user-doc -->
482 * @generated
483 * @ordered
484 */
485 int PHYSICAL_PERSON__IS_WIDOWER = 10;
486
487 /**
488 * The feature id for the '<em><b>Owns Address</b></em>' containment reference list.
489 * <!-- begin-user-doc -->
490 * <!-- end-user-doc -->
491 * @generated
492 * @ordered
493 */
494 int PHYSICAL_PERSON__OWNS_ADDRESS = 11;
495
496 /**
497 * The number of structural features of the '<em>Physical Person</em>' class.
498 * <!-- begin-user-doc -->
499 * <!-- end-user-doc -->
500 * @generated
501 * @ordered
502 */
503 int PHYSICAL_PERSON_FEATURE_COUNT = 12;
504
505 /**
506 * The number of operations of the '<em>Physical Person</em>' class.
507 * <!-- begin-user-doc -->
508 * <!-- end-user-doc -->
509 * @generated
510 * @ordered
511 */
512 int PHYSICAL_PERSON_OPERATION_COUNT = 0;
513
514 /**
515 * The meta object id for the '{@link Taxation.impl.Tax_PayerImpl <em>Tax Payer</em>}' class.
516 * <!-- begin-user-doc -->
517 * <!-- end-user-doc -->
518 * @see Taxation.impl.Tax_PayerImpl
519 * @see Taxation.impl.TaxationPackageImpl#getTax_Payer()
520 * @generated
521 */
522 int TAX_PAYER = 2;
523
524 /**
525 * The feature id for the '<em><b>Is assisting spouse</b></em>' attribute.
526 * <!-- begin-user-doc -->
527 * <!-- end-user-doc -->
528 * @generated
529 * @ordered
530 */
531 int TAX_PAYER__IS_ASSISTING_SPOUSE = PHYSICAL_PERSON__IS_ASSISTING_SPOUSE;
532
533 /**
534 * The feature id for the '<em><b>SS No</b></em>' attribute.
535 * <!-- begin-user-doc -->
536 * <!-- end-user-doc -->
537 * @generated
538 * @ordered
539 */
540 int TAX_PAYER__SS_NO = PHYSICAL_PERSON__SS_NO;
541
542 /**
543 * The feature id for the '<em><b>Addresses</b></em>' reference list.
544 * <!-- begin-user-doc -->
545 * <!-- end-user-doc -->
546 * @generated
547 * @ordered
548 */
549 int TAX_PAYER__ADDRESSES = PHYSICAL_PERSON__ADDRESSES;
550
551 /**
552 * The feature id for the '<em><b>Birth year</b></em>' attribute.
553 * <!-- begin-user-doc -->
554 * <!-- end-user-doc -->
555 * @generated
556 * @ordered
557 */
558 int TAX_PAYER__BIRTH_YEAR = PHYSICAL_PERSON__BIRTH_YEAR;
559
560 /**
561 * The feature id for the '<em><b>Disability percentage</b></em>' attribute.
562 * <!-- begin-user-doc -->
563 * <!-- end-user-doc -->
564 * @generated
565 * @ordered
566 */
567 int TAX_PAYER__DISABILITY_PERCENTAGE = PHYSICAL_PERSON__DISABILITY_PERCENTAGE;
568
569 /**
570 * The feature id for the '<em><b>Disability type</b></em>' attribute.
571 * <!-- begin-user-doc -->
572 * <!-- end-user-doc -->
573 * @generated
574 * @ordered
575 */
576 int TAX_PAYER__DISABILITY_TYPE = PHYSICAL_PERSON__DISABILITY_TYPE;
577
578 /**
579 * The feature id for the '<em><b>Is affiliated personnaly to social security</b></em>' attribute.
580 * <!-- begin-user-doc -->
581 * <!-- end-user-doc -->
582 * @generated
583 * @ordered
584 */
585 int TAX_PAYER__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY = PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY;
586
587 /**
588 * The feature id for the '<em><b>Birth month</b></em>' attribute.
589 * <!-- begin-user-doc -->
590 * <!-- end-user-doc -->
591 * @generated
592 * @ordered
593 */
594 int TAX_PAYER__BIRTH_MONTH = PHYSICAL_PERSON__BIRTH_MONTH;
595
596 /**
597 * The feature id for the '<em><b>Birth day</b></em>' attribute.
598 * <!-- begin-user-doc -->
599 * <!-- end-user-doc -->
600 * @generated
601 * @ordered
602 */
603 int TAX_PAYER__BIRTH_DAY = PHYSICAL_PERSON__BIRTH_DAY;
604
605 /**
606 * The feature id for the '<em><b>Expenses</b></em>' reference list.
607 * <!-- begin-user-doc -->
608 * <!-- end-user-doc -->
609 * @generated
610 * @ordered
611 */
612 int TAX_PAYER__EXPENSES = PHYSICAL_PERSON__EXPENSES;
613
614 /**
615 * The feature id for the '<em><b>Is widower</b></em>' attribute.
616 * <!-- begin-user-doc -->
617 * <!-- end-user-doc -->
618 * @generated
619 * @ordered
620 */
621 int TAX_PAYER__IS_WIDOWER = PHYSICAL_PERSON__IS_WIDOWER;
622
623 /**
624 * The feature id for the '<em><b>Owns Address</b></em>' containment reference list.
625 * <!-- begin-user-doc -->
626 * <!-- end-user-doc -->
627 * @generated
628 * @ordered
629 */
630 int TAX_PAYER__OWNS_ADDRESS = PHYSICAL_PERSON__OWNS_ADDRESS;
631
632 /**
633 * The feature id for the '<em><b>Dependents</b></em>' containment reference list.
634 * <!-- begin-user-doc -->
635 * <!-- end-user-doc -->
636 * @generated
637 * @ordered
638 */
639 int TAX_PAYER__DEPENDENTS = PHYSICAL_PERSON_FEATURE_COUNT + 0;
640
641 /**
642 * The feature id for the '<em><b>From agent</b></em>' containment reference.
643 * <!-- begin-user-doc -->
644 * <!-- end-user-doc -->
645 * @generated
646 * @ordered
647 */
648 int TAX_PAYER__FROM_AGENT = PHYSICAL_PERSON_FEATURE_COUNT + 1;
649
650 /**
651 * The feature id for the '<em><b>Incomes</b></em>' containment reference list.
652 * <!-- begin-user-doc -->
653 * <!-- end-user-doc -->
654 * @generated
655 * @ordered
656 */
657 int TAX_PAYER__INCOMES = PHYSICAL_PERSON_FEATURE_COUNT + 2;
658
659 /**
660 * The feature id for the '<em><b>From law</b></em>' containment reference.
661 * <!-- begin-user-doc -->
662 * <!-- end-user-doc -->
663 * @generated
664 * @ordered
665 */
666 int TAX_PAYER__FROM_LAW = PHYSICAL_PERSON_FEATURE_COUNT + 3;
667
668 /**
669 * The feature id for the '<em><b>Taxes Due</b></em>' attribute.
670 * <!-- begin-user-doc -->
671 * <!-- end-user-doc -->
672 * @generated
673 * @ordered
674 */
675 int TAX_PAYER__TAXES_DUE = PHYSICAL_PERSON_FEATURE_COUNT + 4;
676
677 /**
678 * The number of structural features of the '<em>Tax Payer</em>' class.
679 * <!-- begin-user-doc -->
680 * <!-- end-user-doc -->
681 * @generated
682 * @ordered
683 */
684 int TAX_PAYER_FEATURE_COUNT = PHYSICAL_PERSON_FEATURE_COUNT + 5;
685
686 /**
687 * The number of operations of the '<em>Tax Payer</em>' class.
688 * <!-- begin-user-doc -->
689 * <!-- end-user-doc -->
690 * @generated
691 * @ordered
692 */
693 int TAX_PAYER_OPERATION_COUNT = PHYSICAL_PERSON_OPERATION_COUNT + 0;
694
695 /**
696 * The meta object id for the '{@link Taxation.impl.AddressImpl <em>Address</em>}' class.
697 * <!-- begin-user-doc -->
698 * <!-- end-user-doc -->
699 * @see Taxation.impl.AddressImpl
700 * @see Taxation.impl.TaxationPackageImpl#getAddress()
701 * @generated
702 */
703 int ADDRESS = 4;
704
705 /**
706 * The feature id for the '<em><b>Country</b></em>' attribute.
707 * <!-- begin-user-doc -->
708 * <!-- end-user-doc -->
709 * @generated
710 * @ordered
711 */
712 int ADDRESS__COUNTRY = 0;
713
714 /**
715 * The feature id for the '<em><b>Street</b></em>' attribute.
716 * <!-- begin-user-doc -->
717 * <!-- end-user-doc -->
718 * @generated
719 * @ordered
720 */
721 int ADDRESS__STREET = 1;
722
723 /**
724 * The feature id for the '<em><b>Zip Code</b></em>' attribute.
725 * <!-- begin-user-doc -->
726 * <!-- end-user-doc -->
727 * @generated
728 * @ordered
729 */
730 int ADDRESS__ZIP_CODE = 2;
731
732 /**
733 * The feature id for the '<em><b>City</b></em>' attribute.
734 * <!-- begin-user-doc -->
735 * <!-- end-user-doc -->
736 * @generated
737 * @ordered
738 */
739 int ADDRESS__CITY = 3;
740
741 /**
742 * The feature id for the '<em><b>Id2</b></em>' attribute.
743 * <!-- begin-user-doc -->
744 * <!-- end-user-doc -->
745 * @generated
746 * @ordered
747 */
748 int ADDRESS__ID2 = 4;
749
750 /**
751 * The feature id for the '<em><b>Tax Payer</b></em>' reference list.
752 * <!-- begin-user-doc -->
753 * <!-- end-user-doc -->
754 * @generated
755 * @ordered
756 */
757 int ADDRESS__TAX_PAYER = 5;
758
759 /**
760 * The number of structural features of the '<em>Address</em>' class.
761 * <!-- begin-user-doc -->
762 * <!-- end-user-doc -->
763 * @generated
764 * @ordered
765 */
766 int ADDRESS_FEATURE_COUNT = 6;
767
768 /**
769 * The number of operations of the '<em>Address</em>' class.
770 * <!-- begin-user-doc -->
771 * <!-- end-user-doc -->
772 * @generated
773 * @ordered
774 */
775 int ADDRESS_OPERATION_COUNT = 0;
776
777 /**
778 * The meta object id for the '{@link Taxation.impl.ExpenseImpl <em>Expense</em>}' class.
779 * <!-- begin-user-doc -->
780 * <!-- end-user-doc -->
781 * @see Taxation.impl.ExpenseImpl
782 * @see Taxation.impl.TaxationPackageImpl#getExpense()
783 * @generated
784 */
785 int EXPENSE = 5;
786
787 /**
788 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
789 * <!-- begin-user-doc -->
790 * <!-- end-user-doc -->
791 * @generated
792 * @ordered
793 */
794 int EXPENSE__DECLARED_AMOUNT = 0;
795
796 /**
797 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
798 * <!-- begin-user-doc -->
799 * <!-- end-user-doc -->
800 * @generated
801 * @ordered
802 */
803 int EXPENSE__EXPENSE_PURPOSE = 1;
804
805 /**
806 * The feature id for the '<em><b>Dependent</b></em>' reference.
807 * <!-- begin-user-doc -->
808 * <!-- end-user-doc -->
809 * @generated
810 * @ordered
811 */
812 int EXPENSE__DEPENDENT = 2;
813
814 /**
815 * The feature id for the '<em><b>From agent</b></em>' reference.
816 * <!-- begin-user-doc -->
817 * <!-- end-user-doc -->
818 * @generated
819 * @ordered
820 */
821 int EXPENSE__FROM_AGENT = 3;
822
823 /**
824 * The feature id for the '<em><b>Income</b></em>' container reference.
825 * <!-- begin-user-doc -->
826 * <!-- end-user-doc -->
827 * @generated
828 * @ordered
829 */
830 int EXPENSE__INCOME = 4;
831
832 /**
833 * The feature id for the '<em><b>Id4</b></em>' attribute.
834 * <!-- begin-user-doc -->
835 * <!-- end-user-doc -->
836 * @generated
837 * @ordered
838 */
839 int EXPENSE__ID4 = 5;
840
841 /**
842 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
843 * <!-- begin-user-doc -->
844 * <!-- end-user-doc -->
845 * @generated
846 * @ordered
847 */
848 int EXPENSE__BENEFICIARY = 6;
849
850 /**
851 * The number of structural features of the '<em>Expense</em>' class.
852 * <!-- begin-user-doc -->
853 * <!-- end-user-doc -->
854 * @generated
855 * @ordered
856 */
857 int EXPENSE_FEATURE_COUNT = 7;
858
859 /**
860 * The number of operations of the '<em>Expense</em>' class.
861 * <!-- begin-user-doc -->
862 * <!-- end-user-doc -->
863 * @generated
864 * @ordered
865 */
866 int EXPENSE_OPERATION_COUNT = 0;
867
868 /**
869 * The meta object id for the '{@link Taxation.impl.DependentImpl <em>Dependent</em>}' class.
870 * <!-- begin-user-doc -->
871 * <!-- end-user-doc -->
872 * @see Taxation.impl.DependentImpl
873 * @see Taxation.impl.TaxationPackageImpl#getDependent()
874 * @generated
875 */
876 int DEPENDENT = 6;
877
878 /**
879 * The feature id for the '<em><b>Is assisting spouse</b></em>' attribute.
880 * <!-- begin-user-doc -->
881 * <!-- end-user-doc -->
882 * @generated
883 * @ordered
884 */
885 int DEPENDENT__IS_ASSISTING_SPOUSE = PHYSICAL_PERSON__IS_ASSISTING_SPOUSE;
886
887 /**
888 * The feature id for the '<em><b>SS No</b></em>' attribute.
889 * <!-- begin-user-doc -->
890 * <!-- end-user-doc -->
891 * @generated
892 * @ordered
893 */
894 int DEPENDENT__SS_NO = PHYSICAL_PERSON__SS_NO;
895
896 /**
897 * The feature id for the '<em><b>Addresses</b></em>' reference list.
898 * <!-- begin-user-doc -->
899 * <!-- end-user-doc -->
900 * @generated
901 * @ordered
902 */
903 int DEPENDENT__ADDRESSES = PHYSICAL_PERSON__ADDRESSES;
904
905 /**
906 * The feature id for the '<em><b>Birth year</b></em>' attribute.
907 * <!-- begin-user-doc -->
908 * <!-- end-user-doc -->
909 * @generated
910 * @ordered
911 */
912 int DEPENDENT__BIRTH_YEAR = PHYSICAL_PERSON__BIRTH_YEAR;
913
914 /**
915 * The feature id for the '<em><b>Disability percentage</b></em>' attribute.
916 * <!-- begin-user-doc -->
917 * <!-- end-user-doc -->
918 * @generated
919 * @ordered
920 */
921 int DEPENDENT__DISABILITY_PERCENTAGE = PHYSICAL_PERSON__DISABILITY_PERCENTAGE;
922
923 /**
924 * The feature id for the '<em><b>Disability type</b></em>' attribute.
925 * <!-- begin-user-doc -->
926 * <!-- end-user-doc -->
927 * @generated
928 * @ordered
929 */
930 int DEPENDENT__DISABILITY_TYPE = PHYSICAL_PERSON__DISABILITY_TYPE;
931
932 /**
933 * The feature id for the '<em><b>Is affiliated personnaly to social security</b></em>' attribute.
934 * <!-- begin-user-doc -->
935 * <!-- end-user-doc -->
936 * @generated
937 * @ordered
938 */
939 int DEPENDENT__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY = PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY;
940
941 /**
942 * The feature id for the '<em><b>Birth month</b></em>' attribute.
943 * <!-- begin-user-doc -->
944 * <!-- end-user-doc -->
945 * @generated
946 * @ordered
947 */
948 int DEPENDENT__BIRTH_MONTH = PHYSICAL_PERSON__BIRTH_MONTH;
949
950 /**
951 * The feature id for the '<em><b>Birth day</b></em>' attribute.
952 * <!-- begin-user-doc -->
953 * <!-- end-user-doc -->
954 * @generated
955 * @ordered
956 */
957 int DEPENDENT__BIRTH_DAY = PHYSICAL_PERSON__BIRTH_DAY;
958
959 /**
960 * The feature id for the '<em><b>Expenses</b></em>' reference list.
961 * <!-- begin-user-doc -->
962 * <!-- end-user-doc -->
963 * @generated
964 * @ordered
965 */
966 int DEPENDENT__EXPENSES = PHYSICAL_PERSON__EXPENSES;
967
968 /**
969 * The feature id for the '<em><b>Is widower</b></em>' attribute.
970 * <!-- begin-user-doc -->
971 * <!-- end-user-doc -->
972 * @generated
973 * @ordered
974 */
975 int DEPENDENT__IS_WIDOWER = PHYSICAL_PERSON__IS_WIDOWER;
976
977 /**
978 * The feature id for the '<em><b>Owns Address</b></em>' containment reference list.
979 * <!-- begin-user-doc -->
980 * <!-- end-user-doc -->
981 * @generated
982 * @ordered
983 */
984 int DEPENDENT__OWNS_ADDRESS = PHYSICAL_PERSON__OWNS_ADDRESS;
985
986 /**
987 * The feature id for the '<em><b>Dependent type</b></em>' attribute.
988 * <!-- begin-user-doc -->
989 * <!-- end-user-doc -->
990 * @generated
991 * @ordered
992 */
993 int DEPENDENT__DEPENDENT_TYPE = PHYSICAL_PERSON_FEATURE_COUNT + 0;
994
995 /**
996 * The feature id for the '<em><b>Responsible person</b></em>' container reference.
997 * <!-- begin-user-doc -->
998 * <!-- end-user-doc -->
999 * @generated
1000 * @ordered
1001 */
1002 int DEPENDENT__RESPONSIBLE_PERSON = PHYSICAL_PERSON_FEATURE_COUNT + 1;
1003
1004 /**
1005 * The feature id for the '<em><b>Continued studies</b></em>' attribute.
1006 * <!-- begin-user-doc -->
1007 * <!-- end-user-doc -->
1008 * @generated
1009 * @ordered
1010 */
1011 int DEPENDENT__CONTINUED_STUDIES = PHYSICAL_PERSON_FEATURE_COUNT + 2;
1012
1013 /**
1014 * The feature id for the '<em><b>Allowances</b></em>' containment reference.
1015 * <!-- begin-user-doc -->
1016 * <!-- end-user-doc -->
1017 * @generated
1018 * @ordered
1019 */
1020 int DEPENDENT__ALLOWANCES = PHYSICAL_PERSON_FEATURE_COUNT + 3;
1021
1022 /**
1023 * The feature id for the '<em><b>Household</b></em>' container reference.
1024 * <!-- begin-user-doc -->
1025 * <!-- end-user-doc -->
1026 * @generated
1027 * @ordered
1028 */
1029 int DEPENDENT__HOUSEHOLD = PHYSICAL_PERSON_FEATURE_COUNT + 4;
1030
1031 /**
1032 * The feature id for the '<em><b>From agent</b></em>' reference.
1033 * <!-- begin-user-doc -->
1034 * <!-- end-user-doc -->
1035 * @generated
1036 * @ordered
1037 */
1038 int DEPENDENT__FROM_AGENT = PHYSICAL_PERSON_FEATURE_COUNT + 5;
1039
1040 /**
1041 * The feature id for the '<em><b>Expense</b></em>' reference list.
1042 * <!-- begin-user-doc -->
1043 * <!-- end-user-doc -->
1044 * @generated
1045 * @ordered
1046 */
1047 int DEPENDENT__EXPENSE = PHYSICAL_PERSON_FEATURE_COUNT + 6;
1048
1049 /**
1050 * The number of structural features of the '<em>Dependent</em>' class.
1051 * <!-- begin-user-doc -->
1052 * <!-- end-user-doc -->
1053 * @generated
1054 * @ordered
1055 */
1056 int DEPENDENT_FEATURE_COUNT = PHYSICAL_PERSON_FEATURE_COUNT + 7;
1057
1058 /**
1059 * The number of operations of the '<em>Dependent</em>' class.
1060 * <!-- begin-user-doc -->
1061 * <!-- end-user-doc -->
1062 * @generated
1063 * @ordered
1064 */
1065 int DEPENDENT_OPERATION_COUNT = PHYSICAL_PERSON_OPERATION_COUNT + 0;
1066
1067 /**
1068 * The meta object id for the '{@link Taxation.impl.External_AllowanceImpl <em>External Allowance</em>}' class.
1069 * <!-- begin-user-doc -->
1070 * <!-- end-user-doc -->
1071 * @see Taxation.impl.External_AllowanceImpl
1072 * @see Taxation.impl.TaxationPackageImpl#getExternal_Allowance()
1073 * @generated
1074 */
1075 int EXTERNAL_ALLOWANCE = 7;
1076
1077 /**
1078 * The feature id for the '<em><b>Amount</b></em>' attribute.
1079 * <!-- begin-user-doc -->
1080 * <!-- end-user-doc -->
1081 * @generated
1082 * @ordered
1083 */
1084 int EXTERNAL_ALLOWANCE__AMOUNT = 0;
1085
1086 /**
1087 * The feature id for the '<em><b>Grantor</b></em>' attribute.
1088 * <!-- begin-user-doc -->
1089 * <!-- end-user-doc -->
1090 * @generated
1091 * @ordered
1092 */
1093 int EXTERNAL_ALLOWANCE__GRANTOR = 1;
1094
1095 /**
1096 * The feature id for the '<em><b>Starting year</b></em>' attribute.
1097 * <!-- begin-user-doc -->
1098 * <!-- end-user-doc -->
1099 * @generated
1100 * @ordered
1101 */
1102 int EXTERNAL_ALLOWANCE__STARTING_YEAR = 2;
1103
1104 /**
1105 * The feature id for the '<em><b>Ending year</b></em>' attribute.
1106 * <!-- begin-user-doc -->
1107 * <!-- end-user-doc -->
1108 * @generated
1109 * @ordered
1110 */
1111 int EXTERNAL_ALLOWANCE__ENDING_YEAR = 3;
1112
1113 /**
1114 * The feature id for the '<em><b>Reciver</b></em>' reference.
1115 * <!-- begin-user-doc -->
1116 * <!-- end-user-doc -->
1117 * @generated
1118 * @ordered
1119 */
1120 int EXTERNAL_ALLOWANCE__RECIVER = 4;
1121
1122 /**
1123 * The feature id for the '<em><b>Id5</b></em>' attribute.
1124 * <!-- begin-user-doc -->
1125 * <!-- end-user-doc -->
1126 * @generated
1127 * @ordered
1128 */
1129 int EXTERNAL_ALLOWANCE__ID5 = 5;
1130
1131 /**
1132 * The feature id for the '<em><b>Person</b></em>' container reference.
1133 * <!-- begin-user-doc -->
1134 * <!-- end-user-doc -->
1135 * @generated
1136 * @ordered
1137 */
1138 int EXTERNAL_ALLOWANCE__PERSON = 6;
1139
1140 /**
1141 * The number of structural features of the '<em>External Allowance</em>' class.
1142 * <!-- begin-user-doc -->
1143 * <!-- end-user-doc -->
1144 * @generated
1145 * @ordered
1146 */
1147 int EXTERNAL_ALLOWANCE_FEATURE_COUNT = 7;
1148
1149 /**
1150 * The number of operations of the '<em>External Allowance</em>' class.
1151 * <!-- begin-user-doc -->
1152 * <!-- end-user-doc -->
1153 * @generated
1154 * @ordered
1155 */
1156 int EXTERNAL_ALLOWANCE_OPERATION_COUNT = 0;
1157
1158 /**
1159 * The meta object id for the '{@link Taxation.Tax_Case <em>Tax Case</em>}' class.
1160 * <!-- begin-user-doc -->
1161 * <!-- end-user-doc -->
1162 * @see Taxation.Tax_Case
1163 * @see Taxation.impl.TaxationPackageImpl#getTax_Case()
1164 * @generated
1165 */
1166 int TAX_CASE = 11;
1167
1168 /**
1169 * The number of structural features of the '<em>Tax Case</em>' class.
1170 * <!-- begin-user-doc -->
1171 * <!-- end-user-doc -->
1172 * @generated
1173 * @ordered
1174 */
1175 int TAX_CASE_FEATURE_COUNT = 0;
1176
1177 /**
1178 * The number of operations of the '<em>Tax Case</em>' class.
1179 * <!-- begin-user-doc -->
1180 * <!-- end-user-doc -->
1181 * @generated
1182 * @ordered
1183 */
1184 int TAX_CASE_OPERATION_COUNT = 0;
1185
1186 /**
1187 * The meta object id for the '{@link Taxation.impl.HouseholdImpl <em>Household</em>}' class.
1188 * <!-- begin-user-doc -->
1189 * <!-- end-user-doc -->
1190 * @see Taxation.impl.HouseholdImpl
1191 * @see Taxation.impl.TaxationPackageImpl#getHousehold()
1192 * @generated
1193 */
1194 int HOUSEHOLD = 8;
1195
1196 /**
1197 * The feature id for the '<em><b>Parents</b></em>' containment reference.
1198 * <!-- begin-user-doc -->
1199 * <!-- end-user-doc -->
1200 * @generated
1201 * @ordered
1202 */
1203 int HOUSEHOLD__PARENTS = TAX_CASE_FEATURE_COUNT + 0;
1204
1205 /**
1206 * The feature id for the '<em><b>Id1</b></em>' attribute.
1207 * <!-- begin-user-doc -->
1208 * <!-- end-user-doc -->
1209 * @generated
1210 * @ordered
1211 */
1212 int HOUSEHOLD__ID1 = TAX_CASE_FEATURE_COUNT + 1;
1213
1214 /**
1215 * The feature id for the '<em><b>Children</b></em>' containment reference list.
1216 * <!-- begin-user-doc -->
1217 * <!-- end-user-doc -->
1218 * @generated
1219 * @ordered
1220 */
1221 int HOUSEHOLD__CHILDREN = TAX_CASE_FEATURE_COUNT + 2;
1222
1223 /**
1224 * The number of structural features of the '<em>Household</em>' class.
1225 * <!-- begin-user-doc -->
1226 * <!-- end-user-doc -->
1227 * @generated
1228 * @ordered
1229 */
1230 int HOUSEHOLD_FEATURE_COUNT = TAX_CASE_FEATURE_COUNT + 3;
1231
1232 /**
1233 * The number of operations of the '<em>Household</em>' class.
1234 * <!-- begin-user-doc -->
1235 * <!-- end-user-doc -->
1236 * @generated
1237 * @ordered
1238 */
1239 int HOUSEHOLD_OPERATION_COUNT = TAX_CASE_OPERATION_COUNT + 0;
1240
1241 /**
1242 * The meta object id for the '{@link Taxation.impl.Legal_Union_RecordImpl <em>Legal Union Record</em>}' class.
1243 * <!-- begin-user-doc -->
1244 * <!-- end-user-doc -->
1245 * @see Taxation.impl.Legal_Union_RecordImpl
1246 * @see Taxation.impl.TaxationPackageImpl#getLegal_Union_Record()
1247 * @generated
1248 */
1249 int LEGAL_UNION_RECORD = 9;
1250
1251 /**
1252 * The feature id for the '<em><b>Start year</b></em>' attribute.
1253 * <!-- begin-user-doc -->
1254 * <!-- end-user-doc -->
1255 * @generated
1256 * @ordered
1257 */
1258 int LEGAL_UNION_RECORD__START_YEAR = 0;
1259
1260 /**
1261 * The feature id for the '<em><b>End year</b></em>' attribute.
1262 * <!-- begin-user-doc -->
1263 * <!-- end-user-doc -->
1264 * @generated
1265 * @ordered
1266 */
1267 int LEGAL_UNION_RECORD__END_YEAR = 1;
1268
1269 /**
1270 * The feature id for the '<em><b>Separation cause</b></em>' attribute.
1271 * <!-- begin-user-doc -->
1272 * <!-- end-user-doc -->
1273 * @generated
1274 * @ordered
1275 */
1276 int LEGAL_UNION_RECORD__SEPARATION_CAUSE = 2;
1277
1278 /**
1279 * The feature id for the '<em><b>Individual A</b></em>' containment reference.
1280 * <!-- begin-user-doc -->
1281 * <!-- end-user-doc -->
1282 * @generated
1283 * @ordered
1284 */
1285 int LEGAL_UNION_RECORD__INDIVIDUAL_A = 3;
1286
1287 /**
1288 * The feature id for the '<em><b>Individual B</b></em>' containment reference list.
1289 * <!-- begin-user-doc -->
1290 * <!-- end-user-doc -->
1291 * @generated
1292 * @ordered
1293 */
1294 int LEGAL_UNION_RECORD__INDIVIDUAL_B = 4;
1295
1296 /**
1297 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
1298 * <!-- begin-user-doc -->
1299 * <!-- end-user-doc -->
1300 * @generated
1301 * @ordered
1302 */
1303 int LEGAL_UNION_RECORD__PROPERTIES = 5;
1304
1305 /**
1306 * The feature id for the '<em><b>Mutual agreement</b></em>' attribute.
1307 * <!-- begin-user-doc -->
1308 * <!-- end-user-doc -->
1309 * @generated
1310 * @ordered
1311 */
1312 int LEGAL_UNION_RECORD__MUTUAL_AGREEMENT = 6;
1313
1314 /**
1315 * The feature id for the '<em><b>Id9</b></em>' attribute.
1316 * <!-- begin-user-doc -->
1317 * <!-- end-user-doc -->
1318 * @generated
1319 * @ordered
1320 */
1321 int LEGAL_UNION_RECORD__ID9 = 7;
1322
1323 /**
1324 * The feature id for the '<em><b>Household</b></em>' container reference.
1325 * <!-- begin-user-doc -->
1326 * <!-- end-user-doc -->
1327 * @generated
1328 * @ordered
1329 */
1330 int LEGAL_UNION_RECORD__HOUSEHOLD = 8;
1331
1332 /**
1333 * The number of structural features of the '<em>Legal Union Record</em>' class.
1334 * <!-- begin-user-doc -->
1335 * <!-- end-user-doc -->
1336 * @generated
1337 * @ordered
1338 */
1339 int LEGAL_UNION_RECORD_FEATURE_COUNT = 9;
1340
1341 /**
1342 * The number of operations of the '<em>Legal Union Record</em>' class.
1343 * <!-- begin-user-doc -->
1344 * <!-- end-user-doc -->
1345 * @generated
1346 * @ordered
1347 */
1348 int LEGAL_UNION_RECORD_OPERATION_COUNT = 0;
1349
1350 /**
1351 * The meta object id for the '{@link Taxation.impl.Tax_PropertyImpl <em>Tax Property</em>}' class.
1352 * <!-- begin-user-doc -->
1353 * <!-- end-user-doc -->
1354 * @see Taxation.impl.Tax_PropertyImpl
1355 * @see Taxation.impl.TaxationPackageImpl#getTax_Property()
1356 * @generated
1357 */
1358 int TAX_PROPERTY = 10;
1359
1360 /**
1361 * The feature id for the '<em><b>Starting year</b></em>' attribute.
1362 * <!-- begin-user-doc -->
1363 * <!-- end-user-doc -->
1364 * @generated
1365 * @ordered
1366 */
1367 int TAX_PROPERTY__STARTING_YEAR = 0;
1368
1369 /**
1370 * The feature id for the '<em><b>Id10</b></em>' attribute.
1371 * <!-- begin-user-doc -->
1372 * <!-- end-user-doc -->
1373 * @generated
1374 * @ordered
1375 */
1376 int TAX_PROPERTY__ID10 = 1;
1377
1378 /**
1379 * The feature id for the '<em><b>Union record</b></em>' container reference.
1380 * <!-- begin-user-doc -->
1381 * <!-- end-user-doc -->
1382 * @generated
1383 * @ordered
1384 */
1385 int TAX_PROPERTY__UNION_RECORD = 2;
1386
1387 /**
1388 * The number of structural features of the '<em>Tax Property</em>' class.
1389 * <!-- begin-user-doc -->
1390 * <!-- end-user-doc -->
1391 * @generated
1392 * @ordered
1393 */
1394 int TAX_PROPERTY_FEATURE_COUNT = 3;
1395
1396 /**
1397 * The number of operations of the '<em>Tax Property</em>' class.
1398 * <!-- begin-user-doc -->
1399 * <!-- end-user-doc -->
1400 * @generated
1401 * @ordered
1402 */
1403 int TAX_PROPERTY_OPERATION_COUNT = 0;
1404
1405 /**
1406 * The meta object id for the '{@link Taxation.impl.FromAgentImpl <em>From Agent</em>}' class.
1407 * <!-- begin-user-doc -->
1408 * <!-- end-user-doc -->
1409 * @see Taxation.impl.FromAgentImpl
1410 * @see Taxation.impl.TaxationPackageImpl#getFromAgent()
1411 * @generated
1412 */
1413 int FROM_AGENT = 12;
1414
1415 /**
1416 * The feature id for the '<em><b>Tax Payer</b></em>' container reference.
1417 * <!-- begin-user-doc -->
1418 * <!-- end-user-doc -->
1419 * @generated
1420 * @ordered
1421 */
1422 int FROM_AGENT__TAX_PAYER = 0;
1423
1424 /**
1425 * The feature id for the '<em><b>Is dependent eligible for CE Not In Houshold Children Care</b></em>' attribute.
1426 * <!-- begin-user-doc -->
1427 * <!-- end-user-doc -->
1428 * @generated
1429 * @ordered
1430 */
1431 int FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE = 1;
1432
1433 /**
1434 * The feature id for the '<em><b>Expense</b></em>' reference.
1435 * <!-- begin-user-doc -->
1436 * <!-- end-user-doc -->
1437 * @generated
1438 * @ordered
1439 */
1440 int FROM_AGENT__EXPENSE = 2;
1441
1442 /**
1443 * The feature id for the '<em><b>Is eligible debt</b></em>' attribute.
1444 * <!-- begin-user-doc -->
1445 * <!-- end-user-doc -->
1446 * @generated
1447 * @ordered
1448 */
1449 int FROM_AGENT__IS_ELIGIBLE_DEBT = 3;
1450
1451 /**
1452 * The feature id for the '<em><b>Dependent</b></em>' reference.
1453 * <!-- begin-user-doc -->
1454 * <!-- end-user-doc -->
1455 * @generated
1456 * @ordered
1457 */
1458 int FROM_AGENT__DEPENDENT = 4;
1459
1460 /**
1461 * The number of structural features of the '<em>From Agent</em>' class.
1462 * <!-- begin-user-doc -->
1463 * <!-- end-user-doc -->
1464 * @generated
1465 * @ordered
1466 */
1467 int FROM_AGENT_FEATURE_COUNT = 5;
1468
1469 /**
1470 * The number of operations of the '<em>From Agent</em>' class.
1471 * <!-- begin-user-doc -->
1472 * <!-- end-user-doc -->
1473 * @generated
1474 * @ordered
1475 */
1476 int FROM_AGENT_OPERATION_COUNT = 0;
1477
1478 /**
1479 * The meta object id for the '{@link Taxation.impl.IncomeImpl <em>Income</em>}' class.
1480 * <!-- begin-user-doc -->
1481 * <!-- end-user-doc -->
1482 * @see Taxation.impl.IncomeImpl
1483 * @see Taxation.impl.TaxationPackageImpl#getIncome()
1484 * @generated
1485 */
1486 int INCOME = 13;
1487
1488 /**
1489 * The feature id for the '<em><b>Income amount</b></em>' attribute.
1490 * <!-- begin-user-doc -->
1491 * <!-- end-user-doc -->
1492 * @generated
1493 * @ordered
1494 */
1495 int INCOME__INCOME_AMOUNT = 0;
1496
1497 /**
1498 * The feature id for the '<em><b>Income type</b></em>' containment reference.
1499 * <!-- begin-user-doc -->
1500 * <!-- end-user-doc -->
1501 * @generated
1502 * @ordered
1503 */
1504 int INCOME__INCOME_TYPE = 1;
1505
1506 /**
1507 * The feature id for the '<em><b>Start date within taxation year</b></em>' attribute.
1508 * <!-- begin-user-doc -->
1509 * <!-- end-user-doc -->
1510 * @generated
1511 * @ordered
1512 */
1513 int INCOME__START_DATE_WITHIN_TAXATION_YEAR = 2;
1514
1515 /**
1516 * The feature id for the '<em><b>Start date of contract</b></em>' attribute.
1517 * <!-- begin-user-doc -->
1518 * <!-- end-user-doc -->
1519 * @generated
1520 * @ordered
1521 */
1522 int INCOME__START_DATE_OF_CONTRACT = 3;
1523
1524 /**
1525 * The feature id for the '<em><b>End date within taxation year</b></em>' attribute.
1526 * <!-- begin-user-doc -->
1527 * <!-- end-user-doc -->
1528 * @generated
1529 * @ordered
1530 */
1531 int INCOME__END_DATE_WITHIN_TAXATION_YEAR = 4;
1532
1533 /**
1534 * The feature id for the '<em><b>Tax card</b></em>' containment reference.
1535 * <!-- begin-user-doc -->
1536 * <!-- end-user-doc -->
1537 * @generated
1538 * @ordered
1539 */
1540 int INCOME__TAX_CARD = 5;
1541
1542 /**
1543 * The feature id for the '<em><b>Tax liability</b></em>' attribute.
1544 * <!-- begin-user-doc -->
1545 * <!-- end-user-doc -->
1546 * @generated
1547 * @ordered
1548 */
1549 int INCOME__TAX_LIABILITY = 6;
1550
1551 /**
1552 * The feature id for the '<em><b>Tax Payer</b></em>' container reference.
1553 * <!-- begin-user-doc -->
1554 * <!-- end-user-doc -->
1555 * @generated
1556 * @ordered
1557 */
1558 int INCOME__TAX_PAYER = 7;
1559
1560 /**
1561 * The feature id for the '<em><b>Details</b></em>' containment reference list.
1562 * <!-- begin-user-doc -->
1563 * <!-- end-user-doc -->
1564 * @generated
1565 * @ordered
1566 */
1567 int INCOME__DETAILS = 8;
1568
1569 /**
1570 * The feature id for the '<em><b>Num</b></em>' attribute.
1571 * <!-- begin-user-doc -->
1572 * <!-- end-user-doc -->
1573 * @generated
1574 * @ordered
1575 */
1576 int INCOME__NUM = 9;
1577
1578 /**
1579 * The feature id for the '<em><b>Expenses</b></em>' containment reference list.
1580 * <!-- begin-user-doc -->
1581 * <!-- end-user-doc -->
1582 * @generated
1583 * @ordered
1584 */
1585 int INCOME__EXPENSES = 10;
1586
1587 /**
1588 * The number of structural features of the '<em>Income</em>' class.
1589 * <!-- begin-user-doc -->
1590 * <!-- end-user-doc -->
1591 * @generated
1592 * @ordered
1593 */
1594 int INCOME_FEATURE_COUNT = 11;
1595
1596 /**
1597 * The number of operations of the '<em>Income</em>' class.
1598 * <!-- begin-user-doc -->
1599 * <!-- end-user-doc -->
1600 * @generated
1601 * @ordered
1602 */
1603 int INCOME_OPERATION_COUNT = 0;
1604
1605 /**
1606 * The meta object id for the '{@link Taxation.impl.Income_TypeImpl <em>Income Type</em>}' class.
1607 * <!-- begin-user-doc -->
1608 * <!-- end-user-doc -->
1609 * @see Taxation.impl.Income_TypeImpl
1610 * @see Taxation.impl.TaxationPackageImpl#getIncome_Type()
1611 * @generated
1612 */
1613 int INCOME_TYPE = 14;
1614
1615 /**
1616 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
1617 * <!-- begin-user-doc -->
1618 * <!-- end-user-doc -->
1619 * @generated
1620 * @ordered
1621 */
1622 int INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX = 0;
1623
1624 /**
1625 * The feature id for the '<em><b>Id8</b></em>' attribute.
1626 * <!-- begin-user-doc -->
1627 * <!-- end-user-doc -->
1628 * @generated
1629 * @ordered
1630 */
1631 int INCOME_TYPE__ID8 = 1;
1632
1633 /**
1634 * The feature id for the '<em><b>Income</b></em>' container reference.
1635 * <!-- begin-user-doc -->
1636 * <!-- end-user-doc -->
1637 * @generated
1638 * @ordered
1639 */
1640 int INCOME_TYPE__INCOME = 2;
1641
1642 /**
1643 * The number of structural features of the '<em>Income Type</em>' class.
1644 * <!-- begin-user-doc -->
1645 * <!-- end-user-doc -->
1646 * @generated
1647 * @ordered
1648 */
1649 int INCOME_TYPE_FEATURE_COUNT = 3;
1650
1651 /**
1652 * The number of operations of the '<em>Income Type</em>' class.
1653 * <!-- begin-user-doc -->
1654 * <!-- end-user-doc -->
1655 * @generated
1656 * @ordered
1657 */
1658 int INCOME_TYPE_OPERATION_COUNT = 0;
1659
1660 /**
1661 * The meta object id for the '{@link Taxation.impl.Tax_CardImpl <em>Tax Card</em>}' class.
1662 * <!-- begin-user-doc -->
1663 * <!-- end-user-doc -->
1664 * @see Taxation.impl.Tax_CardImpl
1665 * @see Taxation.impl.TaxationPackageImpl#getTax_Card()
1666 * @generated
1667 */
1668 int TAX_CARD = 15;
1669
1670 /**
1671 * The feature id for the '<em><b>Card identifier</b></em>' attribute.
1672 * <!-- begin-user-doc -->
1673 * <!-- end-user-doc -->
1674 * @generated
1675 * @ordered
1676 */
1677 int TAX_CARD__CARD_IDENTIFIER = 0;
1678
1679 /**
1680 * The feature id for the '<em><b>Tax card type</b></em>' attribute.
1681 * <!-- begin-user-doc -->
1682 * <!-- end-user-doc -->
1683 * @generated
1684 * @ordered
1685 */
1686 int TAX_CARD__TAX_CARD_TYPE = 1;
1687
1688 /**
1689 * The feature id for the '<em><b>Tax office</b></em>' attribute.
1690 * <!-- begin-user-doc -->
1691 * <!-- end-user-doc -->
1692 * @generated
1693 * @ordered
1694 */
1695 int TAX_CARD__TAX_OFFICE = 2;
1696
1697 /**
1698 * The feature id for the '<em><b>Valid from date</b></em>' attribute.
1699 * <!-- begin-user-doc -->
1700 * <!-- end-user-doc -->
1701 * @generated
1702 * @ordered
1703 */
1704 int TAX_CARD__VALID_FROM_DATE = 3;
1705
1706 /**
1707 * The feature id for the '<em><b>Valid until date</b></em>' attribute.
1708 * <!-- begin-user-doc -->
1709 * <!-- end-user-doc -->
1710 * @generated
1711 * @ordered
1712 */
1713 int TAX_CARD__VALID_UNTIL_DATE = 4;
1714
1715 /**
1716 * The feature id for the '<em><b>Percentage of witholding</b></em>' attribute.
1717 * <!-- begin-user-doc -->
1718 * <!-- end-user-doc -->
1719 * @generated
1720 * @ordered
1721 */
1722 int TAX_CARD__PERCENTAGE_OF_WITHOLDING = 5;
1723
1724 /**
1725 * The feature id for the '<em><b>Tax payers name surname</b></em>' attribute list.
1726 * <!-- begin-user-doc -->
1727 * <!-- end-user-doc -->
1728 * @generated
1729 * @ordered
1730 */
1731 int TAX_CARD__TAX_PAYERS_NAME_SURNAME = 6;
1732
1733 /**
1734 * The feature id for the '<em><b>Tax payers partner name surname</b></em>' attribute list.
1735 * <!-- begin-user-doc -->
1736 * <!-- end-user-doc -->
1737 * @generated
1738 * @ordered
1739 */
1740 int TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME = 7;
1741
1742 /**
1743 * The feature id for the '<em><b>Tax payers address</b></em>' reference.
1744 * <!-- begin-user-doc -->
1745 * <!-- end-user-doc -->
1746 * @generated
1747 * @ordered
1748 */
1749 int TAX_CARD__TAX_PAYERS_ADDRESS = 8;
1750
1751 /**
1752 * The feature id for the '<em><b>Jobs Employer SS No</b></em>' attribute.
1753 * <!-- begin-user-doc -->
1754 * <!-- end-user-doc -->
1755 * @generated
1756 * @ordered
1757 */
1758 int TAX_CARD__JOBS_EMPLOYER_SS_NO = 9;
1759
1760 /**
1761 * The feature id for the '<em><b>Jobs employers name</b></em>' attribute.
1762 * <!-- begin-user-doc -->
1763 * <!-- end-user-doc -->
1764 * @generated
1765 * @ordered
1766 */
1767 int TAX_CARD__JOBS_EMPLOYERS_NAME = 10;
1768
1769 /**
1770 * The feature id for the '<em><b>Jobs activity type</b></em>' attribute.
1771 * <!-- begin-user-doc -->
1772 * <!-- end-user-doc -->
1773 * @generated
1774 * @ordered
1775 */
1776 int TAX_CARD__JOBS_ACTIVITY_TYPE = 11;
1777
1778 /**
1779 * The feature id for the '<em><b>Jobs place of work</b></em>' attribute.
1780 * <!-- begin-user-doc -->
1781 * <!-- end-user-doc -->
1782 * @generated
1783 * @ordered
1784 */
1785 int TAX_CARD__JOBS_PLACE_OF_WORK = 12;
1786
1787 /**
1788 * The feature id for the '<em><b>Deduction FD daily</b></em>' attribute.
1789 * <!-- begin-user-doc -->
1790 * <!-- end-user-doc -->
1791 * @generated
1792 * @ordered
1793 */
1794 int TAX_CARD__DEDUCTION_FD_DAILY = 13;
1795
1796 /**
1797 * The feature id for the '<em><b>Deduction FD monthly</b></em>' attribute.
1798 * <!-- begin-user-doc -->
1799 * <!-- end-user-doc -->
1800 * @generated
1801 * @ordered
1802 */
1803 int TAX_CARD__DEDUCTION_FD_MONTHLY = 14;
1804
1805 /**
1806 * The feature id for the '<em><b>Deduction AC daily</b></em>' attribute.
1807 * <!-- begin-user-doc -->
1808 * <!-- end-user-doc -->
1809 * @generated
1810 * @ordered
1811 */
1812 int TAX_CARD__DEDUCTION_AC_DAILY = 15;
1813
1814 /**
1815 * The feature id for the '<em><b>Deduction AC monthly</b></em>' attribute.
1816 * <!-- begin-user-doc -->
1817 * <!-- end-user-doc -->
1818 * @generated
1819 * @ordered
1820 */
1821 int TAX_CARD__DEDUCTION_AC_MONTHLY = 16;
1822
1823 /**
1824 * The feature id for the '<em><b>Deduction AC yearly</b></em>' attribute.
1825 * <!-- begin-user-doc -->
1826 * <!-- end-user-doc -->
1827 * @generated
1828 * @ordered
1829 */
1830 int TAX_CARD__DEDUCTION_AC_YEARLY = 17;
1831
1832 /**
1833 * The feature id for the '<em><b>Deduction CE daily</b></em>' attribute.
1834 * <!-- begin-user-doc -->
1835 * <!-- end-user-doc -->
1836 * @generated
1837 * @ordered
1838 */
1839 int TAX_CARD__DEDUCTION_CE_DAILY = 18;
1840
1841 /**
1842 * The feature id for the '<em><b>Deduction CE monthly</b></em>' attribute.
1843 * <!-- begin-user-doc -->
1844 * <!-- end-user-doc -->
1845 * @generated
1846 * @ordered
1847 */
1848 int TAX_CARD__DEDUCTION_CE_MONTHLY = 19;
1849
1850 /**
1851 * The feature id for the '<em><b>Deduction CE yearly</b></em>' attribute.
1852 * <!-- begin-user-doc -->
1853 * <!-- end-user-doc -->
1854 * @generated
1855 * @ordered
1856 */
1857 int TAX_CARD__DEDUCTION_CE_YEARLY = 20;
1858
1859 /**
1860 * The feature id for the '<em><b>Deduction DS daily</b></em>' attribute.
1861 * <!-- begin-user-doc -->
1862 * <!-- end-user-doc -->
1863 * @generated
1864 * @ordered
1865 */
1866 int TAX_CARD__DEDUCTION_DS_DAILY = 21;
1867
1868 /**
1869 * The feature id for the '<em><b>Deduction DS monthly</b></em>' attribute.
1870 * <!-- begin-user-doc -->
1871 * <!-- end-user-doc -->
1872 * @generated
1873 * @ordered
1874 */
1875 int TAX_CARD__DEDUCTION_DS_MONTHLY = 22;
1876
1877 /**
1878 * The feature id for the '<em><b>Deduction FO daily</b></em>' attribute.
1879 * <!-- begin-user-doc -->
1880 * <!-- end-user-doc -->
1881 * @generated
1882 * @ordered
1883 */
1884 int TAX_CARD__DEDUCTION_FO_DAILY = 23;
1885
1886 /**
1887 * The feature id for the '<em><b>Deduction FO monthly</b></em>' attribute.
1888 * <!-- begin-user-doc -->
1889 * <!-- end-user-doc -->
1890 * @generated
1891 * @ordered
1892 */
1893 int TAX_CARD__DEDUCTION_FO_MONTHLY = 24;
1894
1895 /**
1896 * The feature id for the '<em><b>Deduction FO yearly</b></em>' attribute.
1897 * <!-- begin-user-doc -->
1898 * <!-- end-user-doc -->
1899 * @generated
1900 * @ordered
1901 */
1902 int TAX_CARD__DEDUCTION_FO_YEARLY = 25;
1903
1904 /**
1905 * The feature id for the '<em><b>Credit CIS daily</b></em>' attribute.
1906 * <!-- begin-user-doc -->
1907 * <!-- end-user-doc -->
1908 * @generated
1909 * @ordered
1910 */
1911 int TAX_CARD__CREDIT_CIS_DAILY = 26;
1912
1913 /**
1914 * The feature id for the '<em><b>Credit CIS monthly</b></em>' attribute.
1915 * <!-- begin-user-doc -->
1916 * <!-- end-user-doc -->
1917 * @generated
1918 * @ordered
1919 */
1920 int TAX_CARD__CREDIT_CIS_MONTHLY = 27;
1921
1922 /**
1923 * The feature id for the '<em><b>Credit CIM daily</b></em>' attribute.
1924 * <!-- begin-user-doc -->
1925 * <!-- end-user-doc -->
1926 * @generated
1927 * @ordered
1928 */
1929 int TAX_CARD__CREDIT_CIM_DAILY = 28;
1930
1931 /**
1932 * The feature id for the '<em><b>Validity</b></em>' attribute.
1933 * <!-- begin-user-doc -->
1934 * <!-- end-user-doc -->
1935 * @generated
1936 * @ordered
1937 */
1938 int TAX_CARD__VALIDITY = 29;
1939
1940 /**
1941 * The feature id for the '<em><b>Income Tax Credit</b></em>' reference list.
1942 * <!-- begin-user-doc -->
1943 * <!-- end-user-doc -->
1944 * @generated
1945 * @ordered
1946 */
1947 int TAX_CARD__INCOME_TAX_CREDIT = 30;
1948
1949 /**
1950 * The feature id for the '<em><b>Previous</b></em>' reference.
1951 * <!-- begin-user-doc -->
1952 * <!-- end-user-doc -->
1953 * @generated
1954 * @ordered
1955 */
1956 int TAX_CARD__PREVIOUS = 31;
1957
1958 /**
1959 * The feature id for the '<em><b>Current tax card</b></em>' reference.
1960 * <!-- begin-user-doc -->
1961 * <!-- end-user-doc -->
1962 * @generated
1963 * @ordered
1964 */
1965 int TAX_CARD__CURRENT_TAX_CARD = 32;
1966
1967 /**
1968 * The feature id for the '<em><b>Credit CIM yearly</b></em>' attribute.
1969 * <!-- begin-user-doc -->
1970 * <!-- end-user-doc -->
1971 * @generated
1972 * @ordered
1973 */
1974 int TAX_CARD__CREDIT_CIM_YEARLY = 33;
1975
1976 /**
1977 * The feature id for the '<em><b>Deduction DS Alimony yearly</b></em>' attribute.
1978 * <!-- begin-user-doc -->
1979 * <!-- end-user-doc -->
1980 * @generated
1981 * @ordered
1982 */
1983 int TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY = 34;
1984
1985 /**
1986 * The feature id for the '<em><b>Deduction DS Debt yearly</b></em>' attribute.
1987 * <!-- begin-user-doc -->
1988 * <!-- end-user-doc -->
1989 * @generated
1990 * @ordered
1991 */
1992 int TAX_CARD__DEDUCTION_DS_DEBT_YEARLY = 35;
1993
1994 /**
1995 * The feature id for the '<em><b>Income</b></em>' container reference.
1996 * <!-- begin-user-doc -->
1997 * <!-- end-user-doc -->
1998 * @generated
1999 * @ordered
2000 */
2001 int TAX_CARD__INCOME = 36;
2002
2003 /**
2004 * The number of structural features of the '<em>Tax Card</em>' class.
2005 * <!-- begin-user-doc -->
2006 * <!-- end-user-doc -->
2007 * @generated
2008 * @ordered
2009 */
2010 int TAX_CARD_FEATURE_COUNT = 37;
2011
2012 /**
2013 * The number of operations of the '<em>Tax Card</em>' class.
2014 * <!-- begin-user-doc -->
2015 * <!-- end-user-doc -->
2016 * @generated
2017 * @ordered
2018 */
2019 int TAX_CARD_OPERATION_COUNT = 0;
2020
2021 /**
2022 * The meta object id for the '{@link Taxation.impl.Income_Tax_CreditImpl <em>Income Tax Credit</em>}' class.
2023 * <!-- begin-user-doc -->
2024 * <!-- end-user-doc -->
2025 * @see Taxation.impl.Income_Tax_CreditImpl
2026 * @see Taxation.impl.TaxationPackageImpl#getIncome_Tax_Credit()
2027 * @generated
2028 */
2029 int INCOME_TAX_CREDIT = 16;
2030
2031 /**
2032 * The feature id for the '<em><b>Granted By</b></em>' attribute.
2033 * <!-- begin-user-doc -->
2034 * <!-- end-user-doc -->
2035 * @generated
2036 * @ordered
2037 */
2038 int INCOME_TAX_CREDIT__GRANTED_BY = 0;
2039
2040 /**
2041 * The feature id for the '<em><b>Tax Payer</b></em>' reference.
2042 * <!-- begin-user-doc -->
2043 * <!-- end-user-doc -->
2044 * @generated
2045 * @ordered
2046 */
2047 int INCOME_TAX_CREDIT__TAX_PAYER = 1;
2048
2049 /**
2050 * The feature id for the '<em><b>Tax year</b></em>' attribute.
2051 * <!-- begin-user-doc -->
2052 * <!-- end-user-doc -->
2053 * @generated
2054 * @ordered
2055 */
2056 int INCOME_TAX_CREDIT__TAX_YEAR = 2;
2057
2058 /**
2059 * The feature id for the '<em><b>Yearly</b></em>' attribute.
2060 * <!-- begin-user-doc -->
2061 * <!-- end-user-doc -->
2062 * @generated
2063 * @ordered
2064 */
2065 int INCOME_TAX_CREDIT__YEARLY = 3;
2066
2067 /**
2068 * The feature id for the '<em><b>Monthly</b></em>' attribute.
2069 * <!-- begin-user-doc -->
2070 * <!-- end-user-doc -->
2071 * @generated
2072 * @ordered
2073 */
2074 int INCOME_TAX_CREDIT__MONTHLY = 4;
2075
2076 /**
2077 * The feature id for the '<em><b>Daily</b></em>' attribute.
2078 * <!-- begin-user-doc -->
2079 * <!-- end-user-doc -->
2080 * @generated
2081 * @ordered
2082 */
2083 int INCOME_TAX_CREDIT__DAILY = 5;
2084
2085 /**
2086 * The feature id for the '<em><b>Id7</b></em>' attribute.
2087 * <!-- begin-user-doc -->
2088 * <!-- end-user-doc -->
2089 * @generated
2090 * @ordered
2091 */
2092 int INCOME_TAX_CREDIT__ID7 = 6;
2093
2094 /**
2095 * The feature id for the '<em><b>Taxation Frame</b></em>' reference.
2096 * <!-- begin-user-doc -->
2097 * <!-- end-user-doc -->
2098 * @generated
2099 * @ordered
2100 */
2101 int INCOME_TAX_CREDIT__TAXATION_FRAME = 7;
2102
2103 /**
2104 * The number of structural features of the '<em>Income Tax Credit</em>' class.
2105 * <!-- begin-user-doc -->
2106 * <!-- end-user-doc -->
2107 * @generated
2108 * @ordered
2109 */
2110 int INCOME_TAX_CREDIT_FEATURE_COUNT = 8;
2111
2112 /**
2113 * The number of operations of the '<em>Income Tax Credit</em>' class.
2114 * <!-- begin-user-doc -->
2115 * <!-- end-user-doc -->
2116 * @generated
2117 * @ordered
2118 */
2119 int INCOME_TAX_CREDIT_OPERATION_COUNT = 0;
2120
2121 /**
2122 * The meta object id for the '{@link Taxation.impl.Income_DetailImpl <em>Income Detail</em>}' class.
2123 * <!-- begin-user-doc -->
2124 * <!-- end-user-doc -->
2125 * @see Taxation.impl.Income_DetailImpl
2126 * @see Taxation.impl.TaxationPackageImpl#getIncome_Detail()
2127 * @generated
2128 */
2129 int INCOME_DETAIL = 17;
2130
2131 /**
2132 * The feature id for the '<em><b>Amount</b></em>' attribute.
2133 * <!-- begin-user-doc -->
2134 * <!-- end-user-doc -->
2135 * @generated
2136 * @ordered
2137 */
2138 int INCOME_DETAIL__AMOUNT = 0;
2139
2140 /**
2141 * The feature id for the '<em><b>Is worked</b></em>' attribute.
2142 * <!-- begin-user-doc -->
2143 * <!-- end-user-doc -->
2144 * @generated
2145 * @ordered
2146 */
2147 int INCOME_DETAIL__IS_WORKED = 1;
2148
2149 /**
2150 * The feature id for the '<em><b>Distance</b></em>' attribute.
2151 * <!-- begin-user-doc -->
2152 * <!-- end-user-doc -->
2153 * @generated
2154 * @ordered
2155 */
2156 int INCOME_DETAIL__DISTANCE = 2;
2157
2158 /**
2159 * The feature id for the '<em><b>Worked days</b></em>' attribute.
2160 * <!-- begin-user-doc -->
2161 * <!-- end-user-doc -->
2162 * @generated
2163 * @ordered
2164 */
2165 int INCOME_DETAIL__WORKED_DAYS = 3;
2166
2167 /**
2168 * The feature id for the '<em><b>Is contributing CNS</b></em>' attribute.
2169 * <!-- begin-user-doc -->
2170 * <!-- end-user-doc -->
2171 * @generated
2172 * @ordered
2173 */
2174 int INCOME_DETAIL__IS_CONTRIBUTING_CNS = 4;
2175
2176 /**
2177 * The feature id for the '<em><b>Id5</b></em>' attribute.
2178 * <!-- begin-user-doc -->
2179 * <!-- end-user-doc -->
2180 * @generated
2181 * @ordered
2182 */
2183 int INCOME_DETAIL__ID5 = 5;
2184
2185 /**
2186 * The feature id for the '<em><b>Income</b></em>' container reference.
2187 * <!-- begin-user-doc -->
2188 * <!-- end-user-doc -->
2189 * @generated
2190 * @ordered
2191 */
2192 int INCOME_DETAIL__INCOME = 6;
2193
2194 /**
2195 * The number of structural features of the '<em>Income Detail</em>' class.
2196 * <!-- begin-user-doc -->
2197 * <!-- end-user-doc -->
2198 * @generated
2199 * @ordered
2200 */
2201 int INCOME_DETAIL_FEATURE_COUNT = 7;
2202
2203 /**
2204 * The number of operations of the '<em>Income Detail</em>' class.
2205 * <!-- begin-user-doc -->
2206 * <!-- end-user-doc -->
2207 * @generated
2208 * @ordered
2209 */
2210 int INCOME_DETAIL_OPERATION_COUNT = 0;
2211
2212 /**
2213 * The meta object id for the '{@link Taxation.impl.FromLawImpl <em>From Law</em>}' class.
2214 * <!-- begin-user-doc -->
2215 * <!-- end-user-doc -->
2216 * @see Taxation.impl.FromLawImpl
2217 * @see Taxation.impl.TaxationPackageImpl#getFromLaw()
2218 * @generated
2219 */
2220 int FROM_LAW = 18;
2221
2222 /**
2223 * The feature id for the '<em><b>Id</b></em>' attribute.
2224 * <!-- begin-user-doc -->
2225 * <!-- end-user-doc -->
2226 * @generated
2227 * @ordered
2228 */
2229 int FROM_LAW__ID = 0;
2230
2231 /**
2232 * The feature id for the '<em><b>Tax Payer</b></em>' container reference.
2233 * <!-- begin-user-doc -->
2234 * <!-- end-user-doc -->
2235 * @generated
2236 * @ordered
2237 */
2238 int FROM_LAW__TAX_PAYER = 1;
2239
2240 /**
2241 * The number of structural features of the '<em>From Law</em>' class.
2242 * <!-- begin-user-doc -->
2243 * <!-- end-user-doc -->
2244 * @generated
2245 * @ordered
2246 */
2247 int FROM_LAW_FEATURE_COUNT = 2;
2248
2249 /**
2250 * The number of operations of the '<em>From Law</em>' class.
2251 * <!-- begin-user-doc -->
2252 * <!-- end-user-doc -->
2253 * @generated
2254 * @ordered
2255 */
2256 int FROM_LAW_OPERATION_COUNT = 0;
2257
2258 /**
2259 * The meta object id for the '{@link Taxation.impl.Fiscal_AddressImpl <em>Fiscal Address</em>}' class.
2260 * <!-- begin-user-doc -->
2261 * <!-- end-user-doc -->
2262 * @see Taxation.impl.Fiscal_AddressImpl
2263 * @see Taxation.impl.TaxationPackageImpl#getFiscal_Address()
2264 * @generated
2265 */
2266 int FISCAL_ADDRESS = 19;
2267
2268 /**
2269 * The feature id for the '<em><b>Country</b></em>' attribute.
2270 * <!-- begin-user-doc -->
2271 * <!-- end-user-doc -->
2272 * @generated
2273 * @ordered
2274 */
2275 int FISCAL_ADDRESS__COUNTRY = ADDRESS__COUNTRY;
2276
2277 /**
2278 * The feature id for the '<em><b>Street</b></em>' attribute.
2279 * <!-- begin-user-doc -->
2280 * <!-- end-user-doc -->
2281 * @generated
2282 * @ordered
2283 */
2284 int FISCAL_ADDRESS__STREET = ADDRESS__STREET;
2285
2286 /**
2287 * The feature id for the '<em><b>Zip Code</b></em>' attribute.
2288 * <!-- begin-user-doc -->
2289 * <!-- end-user-doc -->
2290 * @generated
2291 * @ordered
2292 */
2293 int FISCAL_ADDRESS__ZIP_CODE = ADDRESS__ZIP_CODE;
2294
2295 /**
2296 * The feature id for the '<em><b>City</b></em>' attribute.
2297 * <!-- begin-user-doc -->
2298 * <!-- end-user-doc -->
2299 * @generated
2300 * @ordered
2301 */
2302 int FISCAL_ADDRESS__CITY = ADDRESS__CITY;
2303
2304 /**
2305 * The feature id for the '<em><b>Id2</b></em>' attribute.
2306 * <!-- begin-user-doc -->
2307 * <!-- end-user-doc -->
2308 * @generated
2309 * @ordered
2310 */
2311 int FISCAL_ADDRESS__ID2 = ADDRESS__ID2;
2312
2313 /**
2314 * The feature id for the '<em><b>Tax Payer</b></em>' reference list.
2315 * <!-- begin-user-doc -->
2316 * <!-- end-user-doc -->
2317 * @generated
2318 * @ordered
2319 */
2320 int FISCAL_ADDRESS__TAX_PAYER = ADDRESS__TAX_PAYER;
2321
2322 /**
2323 * The number of structural features of the '<em>Fiscal Address</em>' class.
2324 * <!-- begin-user-doc -->
2325 * <!-- end-user-doc -->
2326 * @generated
2327 * @ordered
2328 */
2329 int FISCAL_ADDRESS_FEATURE_COUNT = ADDRESS_FEATURE_COUNT + 0;
2330
2331 /**
2332 * The number of operations of the '<em>Fiscal Address</em>' class.
2333 * <!-- begin-user-doc -->
2334 * <!-- end-user-doc -->
2335 * @generated
2336 * @ordered
2337 */
2338 int FISCAL_ADDRESS_OPERATION_COUNT = ADDRESS_OPERATION_COUNT + 0;
2339
2340 /**
2341 * The meta object id for the '{@link Taxation.impl.Habitual_AddressImpl <em>Habitual Address</em>}' class.
2342 * <!-- begin-user-doc -->
2343 * <!-- end-user-doc -->
2344 * @see Taxation.impl.Habitual_AddressImpl
2345 * @see Taxation.impl.TaxationPackageImpl#getHabitual_Address()
2346 * @generated
2347 */
2348 int HABITUAL_ADDRESS = 20;
2349
2350 /**
2351 * The feature id for the '<em><b>Country</b></em>' attribute.
2352 * <!-- begin-user-doc -->
2353 * <!-- end-user-doc -->
2354 * @generated
2355 * @ordered
2356 */
2357 int HABITUAL_ADDRESS__COUNTRY = ADDRESS__COUNTRY;
2358
2359 /**
2360 * The feature id for the '<em><b>Street</b></em>' attribute.
2361 * <!-- begin-user-doc -->
2362 * <!-- end-user-doc -->
2363 * @generated
2364 * @ordered
2365 */
2366 int HABITUAL_ADDRESS__STREET = ADDRESS__STREET;
2367
2368 /**
2369 * The feature id for the '<em><b>Zip Code</b></em>' attribute.
2370 * <!-- begin-user-doc -->
2371 * <!-- end-user-doc -->
2372 * @generated
2373 * @ordered
2374 */
2375 int HABITUAL_ADDRESS__ZIP_CODE = ADDRESS__ZIP_CODE;
2376
2377 /**
2378 * The feature id for the '<em><b>City</b></em>' attribute.
2379 * <!-- begin-user-doc -->
2380 * <!-- end-user-doc -->
2381 * @generated
2382 * @ordered
2383 */
2384 int HABITUAL_ADDRESS__CITY = ADDRESS__CITY;
2385
2386 /**
2387 * The feature id for the '<em><b>Id2</b></em>' attribute.
2388 * <!-- begin-user-doc -->
2389 * <!-- end-user-doc -->
2390 * @generated
2391 * @ordered
2392 */
2393 int HABITUAL_ADDRESS__ID2 = ADDRESS__ID2;
2394
2395 /**
2396 * The feature id for the '<em><b>Tax Payer</b></em>' reference list.
2397 * <!-- begin-user-doc -->
2398 * <!-- end-user-doc -->
2399 * @generated
2400 * @ordered
2401 */
2402 int HABITUAL_ADDRESS__TAX_PAYER = ADDRESS__TAX_PAYER;
2403
2404 /**
2405 * The number of structural features of the '<em>Habitual Address</em>' class.
2406 * <!-- begin-user-doc -->
2407 * <!-- end-user-doc -->
2408 * @generated
2409 * @ordered
2410 */
2411 int HABITUAL_ADDRESS_FEATURE_COUNT = ADDRESS_FEATURE_COUNT + 0;
2412
2413 /**
2414 * The number of operations of the '<em>Habitual Address</em>' class.
2415 * <!-- begin-user-doc -->
2416 * <!-- end-user-doc -->
2417 * @generated
2418 * @ordered
2419 */
2420 int HABITUAL_ADDRESS_OPERATION_COUNT = ADDRESS_OPERATION_COUNT + 0;
2421
2422 /**
2423 * The meta object id for the '{@link Taxation.impl.Marriage_RecordImpl <em>Marriage Record</em>}' class.
2424 * <!-- begin-user-doc -->
2425 * <!-- end-user-doc -->
2426 * @see Taxation.impl.Marriage_RecordImpl
2427 * @see Taxation.impl.TaxationPackageImpl#getMarriage_Record()
2428 * @generated
2429 */
2430 int MARRIAGE_RECORD = 21;
2431
2432 /**
2433 * The feature id for the '<em><b>Start year</b></em>' attribute.
2434 * <!-- begin-user-doc -->
2435 * <!-- end-user-doc -->
2436 * @generated
2437 * @ordered
2438 */
2439 int MARRIAGE_RECORD__START_YEAR = LEGAL_UNION_RECORD__START_YEAR;
2440
2441 /**
2442 * The feature id for the '<em><b>End year</b></em>' attribute.
2443 * <!-- begin-user-doc -->
2444 * <!-- end-user-doc -->
2445 * @generated
2446 * @ordered
2447 */
2448 int MARRIAGE_RECORD__END_YEAR = LEGAL_UNION_RECORD__END_YEAR;
2449
2450 /**
2451 * The feature id for the '<em><b>Separation cause</b></em>' attribute.
2452 * <!-- begin-user-doc -->
2453 * <!-- end-user-doc -->
2454 * @generated
2455 * @ordered
2456 */
2457 int MARRIAGE_RECORD__SEPARATION_CAUSE = LEGAL_UNION_RECORD__SEPARATION_CAUSE;
2458
2459 /**
2460 * The feature id for the '<em><b>Individual A</b></em>' containment reference.
2461 * <!-- begin-user-doc -->
2462 * <!-- end-user-doc -->
2463 * @generated
2464 * @ordered
2465 */
2466 int MARRIAGE_RECORD__INDIVIDUAL_A = LEGAL_UNION_RECORD__INDIVIDUAL_A;
2467
2468 /**
2469 * The feature id for the '<em><b>Individual B</b></em>' containment reference list.
2470 * <!-- begin-user-doc -->
2471 * <!-- end-user-doc -->
2472 * @generated
2473 * @ordered
2474 */
2475 int MARRIAGE_RECORD__INDIVIDUAL_B = LEGAL_UNION_RECORD__INDIVIDUAL_B;
2476
2477 /**
2478 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
2479 * <!-- begin-user-doc -->
2480 * <!-- end-user-doc -->
2481 * @generated
2482 * @ordered
2483 */
2484 int MARRIAGE_RECORD__PROPERTIES = LEGAL_UNION_RECORD__PROPERTIES;
2485
2486 /**
2487 * The feature id for the '<em><b>Mutual agreement</b></em>' attribute.
2488 * <!-- begin-user-doc -->
2489 * <!-- end-user-doc -->
2490 * @generated
2491 * @ordered
2492 */
2493 int MARRIAGE_RECORD__MUTUAL_AGREEMENT = LEGAL_UNION_RECORD__MUTUAL_AGREEMENT;
2494
2495 /**
2496 * The feature id for the '<em><b>Id9</b></em>' attribute.
2497 * <!-- begin-user-doc -->
2498 * <!-- end-user-doc -->
2499 * @generated
2500 * @ordered
2501 */
2502 int MARRIAGE_RECORD__ID9 = LEGAL_UNION_RECORD__ID9;
2503
2504 /**
2505 * The feature id for the '<em><b>Household</b></em>' container reference.
2506 * <!-- begin-user-doc -->
2507 * <!-- end-user-doc -->
2508 * @generated
2509 * @ordered
2510 */
2511 int MARRIAGE_RECORD__HOUSEHOLD = LEGAL_UNION_RECORD__HOUSEHOLD;
2512
2513 /**
2514 * The number of structural features of the '<em>Marriage Record</em>' class.
2515 * <!-- begin-user-doc -->
2516 * <!-- end-user-doc -->
2517 * @generated
2518 * @ordered
2519 */
2520 int MARRIAGE_RECORD_FEATURE_COUNT = LEGAL_UNION_RECORD_FEATURE_COUNT + 0;
2521
2522 /**
2523 * The number of operations of the '<em>Marriage Record</em>' class.
2524 * <!-- begin-user-doc -->
2525 * <!-- end-user-doc -->
2526 * @generated
2527 * @ordered
2528 */
2529 int MARRIAGE_RECORD_OPERATION_COUNT = LEGAL_UNION_RECORD_OPERATION_COUNT + 0;
2530
2531 /**
2532 * The meta object id for the '{@link Taxation.impl.Non_Resident_Tax_PayerImpl <em>Non Resident Tax Payer</em>}' class.
2533 * <!-- begin-user-doc -->
2534 * <!-- end-user-doc -->
2535 * @see Taxation.impl.Non_Resident_Tax_PayerImpl
2536 * @see Taxation.impl.TaxationPackageImpl#getNon_Resident_Tax_Payer()
2537 * @generated
2538 */
2539 int NON_RESIDENT_TAX_PAYER = 22;
2540
2541 /**
2542 * The feature id for the '<em><b>Is assisting spouse</b></em>' attribute.
2543 * <!-- begin-user-doc -->
2544 * <!-- end-user-doc -->
2545 * @generated
2546 * @ordered
2547 */
2548 int NON_RESIDENT_TAX_PAYER__IS_ASSISTING_SPOUSE = TAX_PAYER__IS_ASSISTING_SPOUSE;
2549
2550 /**
2551 * The feature id for the '<em><b>SS No</b></em>' attribute.
2552 * <!-- begin-user-doc -->
2553 * <!-- end-user-doc -->
2554 * @generated
2555 * @ordered
2556 */
2557 int NON_RESIDENT_TAX_PAYER__SS_NO = TAX_PAYER__SS_NO;
2558
2559 /**
2560 * The feature id for the '<em><b>Addresses</b></em>' reference list.
2561 * <!-- begin-user-doc -->
2562 * <!-- end-user-doc -->
2563 * @generated
2564 * @ordered
2565 */
2566 int NON_RESIDENT_TAX_PAYER__ADDRESSES = TAX_PAYER__ADDRESSES;
2567
2568 /**
2569 * The feature id for the '<em><b>Birth year</b></em>' attribute.
2570 * <!-- begin-user-doc -->
2571 * <!-- end-user-doc -->
2572 * @generated
2573 * @ordered
2574 */
2575 int NON_RESIDENT_TAX_PAYER__BIRTH_YEAR = TAX_PAYER__BIRTH_YEAR;
2576
2577 /**
2578 * The feature id for the '<em><b>Disability percentage</b></em>' attribute.
2579 * <!-- begin-user-doc -->
2580 * <!-- end-user-doc -->
2581 * @generated
2582 * @ordered
2583 */
2584 int NON_RESIDENT_TAX_PAYER__DISABILITY_PERCENTAGE = TAX_PAYER__DISABILITY_PERCENTAGE;
2585
2586 /**
2587 * The feature id for the '<em><b>Disability type</b></em>' attribute.
2588 * <!-- begin-user-doc -->
2589 * <!-- end-user-doc -->
2590 * @generated
2591 * @ordered
2592 */
2593 int NON_RESIDENT_TAX_PAYER__DISABILITY_TYPE = TAX_PAYER__DISABILITY_TYPE;
2594
2595 /**
2596 * The feature id for the '<em><b>Is affiliated personnaly to social security</b></em>' attribute.
2597 * <!-- begin-user-doc -->
2598 * <!-- end-user-doc -->
2599 * @generated
2600 * @ordered
2601 */
2602 int NON_RESIDENT_TAX_PAYER__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY = TAX_PAYER__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY;
2603
2604 /**
2605 * The feature id for the '<em><b>Birth month</b></em>' attribute.
2606 * <!-- begin-user-doc -->
2607 * <!-- end-user-doc -->
2608 * @generated
2609 * @ordered
2610 */
2611 int NON_RESIDENT_TAX_PAYER__BIRTH_MONTH = TAX_PAYER__BIRTH_MONTH;
2612
2613 /**
2614 * The feature id for the '<em><b>Birth day</b></em>' attribute.
2615 * <!-- begin-user-doc -->
2616 * <!-- end-user-doc -->
2617 * @generated
2618 * @ordered
2619 */
2620 int NON_RESIDENT_TAX_PAYER__BIRTH_DAY = TAX_PAYER__BIRTH_DAY;
2621
2622 /**
2623 * The feature id for the '<em><b>Expenses</b></em>' reference list.
2624 * <!-- begin-user-doc -->
2625 * <!-- end-user-doc -->
2626 * @generated
2627 * @ordered
2628 */
2629 int NON_RESIDENT_TAX_PAYER__EXPENSES = TAX_PAYER__EXPENSES;
2630
2631 /**
2632 * The feature id for the '<em><b>Is widower</b></em>' attribute.
2633 * <!-- begin-user-doc -->
2634 * <!-- end-user-doc -->
2635 * @generated
2636 * @ordered
2637 */
2638 int NON_RESIDENT_TAX_PAYER__IS_WIDOWER = TAX_PAYER__IS_WIDOWER;
2639
2640 /**
2641 * The feature id for the '<em><b>Owns Address</b></em>' containment reference list.
2642 * <!-- begin-user-doc -->
2643 * <!-- end-user-doc -->
2644 * @generated
2645 * @ordered
2646 */
2647 int NON_RESIDENT_TAX_PAYER__OWNS_ADDRESS = TAX_PAYER__OWNS_ADDRESS;
2648
2649 /**
2650 * The feature id for the '<em><b>Dependents</b></em>' containment reference list.
2651 * <!-- begin-user-doc -->
2652 * <!-- end-user-doc -->
2653 * @generated
2654 * @ordered
2655 */
2656 int NON_RESIDENT_TAX_PAYER__DEPENDENTS = TAX_PAYER__DEPENDENTS;
2657
2658 /**
2659 * The feature id for the '<em><b>From agent</b></em>' containment reference.
2660 * <!-- begin-user-doc -->
2661 * <!-- end-user-doc -->
2662 * @generated
2663 * @ordered
2664 */
2665 int NON_RESIDENT_TAX_PAYER__FROM_AGENT = TAX_PAYER__FROM_AGENT;
2666
2667 /**
2668 * The feature id for the '<em><b>Incomes</b></em>' containment reference list.
2669 * <!-- begin-user-doc -->
2670 * <!-- end-user-doc -->
2671 * @generated
2672 * @ordered
2673 */
2674 int NON_RESIDENT_TAX_PAYER__INCOMES = TAX_PAYER__INCOMES;
2675
2676 /**
2677 * The feature id for the '<em><b>From law</b></em>' containment reference.
2678 * <!-- begin-user-doc -->
2679 * <!-- end-user-doc -->
2680 * @generated
2681 * @ordered
2682 */
2683 int NON_RESIDENT_TAX_PAYER__FROM_LAW = TAX_PAYER__FROM_LAW;
2684
2685 /**
2686 * The feature id for the '<em><b>Taxes Due</b></em>' attribute.
2687 * <!-- begin-user-doc -->
2688 * <!-- end-user-doc -->
2689 * @generated
2690 * @ordered
2691 */
2692 int NON_RESIDENT_TAX_PAYER__TAXES_DUE = TAX_PAYER__TAXES_DUE;
2693
2694 /**
2695 * The feature id for the '<em><b>Is assimilated to resident</b></em>' attribute.
2696 * <!-- begin-user-doc -->
2697 * <!-- end-user-doc -->
2698 * @generated
2699 * @ordered
2700 */
2701 int NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT = TAX_PAYER_FEATURE_COUNT + 0;
2702
2703 /**
2704 * The number of structural features of the '<em>Non Resident Tax Payer</em>' class.
2705 * <!-- begin-user-doc -->
2706 * <!-- end-user-doc -->
2707 * @generated
2708 * @ordered
2709 */
2710 int NON_RESIDENT_TAX_PAYER_FEATURE_COUNT = TAX_PAYER_FEATURE_COUNT + 1;
2711
2712 /**
2713 * The number of operations of the '<em>Non Resident Tax Payer</em>' class.
2714 * <!-- begin-user-doc -->
2715 * <!-- end-user-doc -->
2716 * @generated
2717 * @ordered
2718 */
2719 int NON_RESIDENT_TAX_PAYER_OPERATION_COUNT = TAX_PAYER_OPERATION_COUNT + 0;
2720
2721 /**
2722 * The meta object id for the '{@link Taxation.impl.Partnership_RecordImpl <em>Partnership Record</em>}' class.
2723 * <!-- begin-user-doc -->
2724 * <!-- end-user-doc -->
2725 * @see Taxation.impl.Partnership_RecordImpl
2726 * @see Taxation.impl.TaxationPackageImpl#getPartnership_Record()
2727 * @generated
2728 */
2729 int PARTNERSHIP_RECORD = 23;
2730
2731 /**
2732 * The feature id for the '<em><b>Start year</b></em>' attribute.
2733 * <!-- begin-user-doc -->
2734 * <!-- end-user-doc -->
2735 * @generated
2736 * @ordered
2737 */
2738 int PARTNERSHIP_RECORD__START_YEAR = LEGAL_UNION_RECORD__START_YEAR;
2739
2740 /**
2741 * The feature id for the '<em><b>End year</b></em>' attribute.
2742 * <!-- begin-user-doc -->
2743 * <!-- end-user-doc -->
2744 * @generated
2745 * @ordered
2746 */
2747 int PARTNERSHIP_RECORD__END_YEAR = LEGAL_UNION_RECORD__END_YEAR;
2748
2749 /**
2750 * The feature id for the '<em><b>Separation cause</b></em>' attribute.
2751 * <!-- begin-user-doc -->
2752 * <!-- end-user-doc -->
2753 * @generated
2754 * @ordered
2755 */
2756 int PARTNERSHIP_RECORD__SEPARATION_CAUSE = LEGAL_UNION_RECORD__SEPARATION_CAUSE;
2757
2758 /**
2759 * The feature id for the '<em><b>Individual A</b></em>' containment reference.
2760 * <!-- begin-user-doc -->
2761 * <!-- end-user-doc -->
2762 * @generated
2763 * @ordered
2764 */
2765 int PARTNERSHIP_RECORD__INDIVIDUAL_A = LEGAL_UNION_RECORD__INDIVIDUAL_A;
2766
2767 /**
2768 * The feature id for the '<em><b>Individual B</b></em>' containment reference list.
2769 * <!-- begin-user-doc -->
2770 * <!-- end-user-doc -->
2771 * @generated
2772 * @ordered
2773 */
2774 int PARTNERSHIP_RECORD__INDIVIDUAL_B = LEGAL_UNION_RECORD__INDIVIDUAL_B;
2775
2776 /**
2777 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
2778 * <!-- begin-user-doc -->
2779 * <!-- end-user-doc -->
2780 * @generated
2781 * @ordered
2782 */
2783 int PARTNERSHIP_RECORD__PROPERTIES = LEGAL_UNION_RECORD__PROPERTIES;
2784
2785 /**
2786 * The feature id for the '<em><b>Mutual agreement</b></em>' attribute.
2787 * <!-- begin-user-doc -->
2788 * <!-- end-user-doc -->
2789 * @generated
2790 * @ordered
2791 */
2792 int PARTNERSHIP_RECORD__MUTUAL_AGREEMENT = LEGAL_UNION_RECORD__MUTUAL_AGREEMENT;
2793
2794 /**
2795 * The feature id for the '<em><b>Id9</b></em>' attribute.
2796 * <!-- begin-user-doc -->
2797 * <!-- end-user-doc -->
2798 * @generated
2799 * @ordered
2800 */
2801 int PARTNERSHIP_RECORD__ID9 = LEGAL_UNION_RECORD__ID9;
2802
2803 /**
2804 * The feature id for the '<em><b>Household</b></em>' container reference.
2805 * <!-- begin-user-doc -->
2806 * <!-- end-user-doc -->
2807 * @generated
2808 * @ordered
2809 */
2810 int PARTNERSHIP_RECORD__HOUSEHOLD = LEGAL_UNION_RECORD__HOUSEHOLD;
2811
2812 /**
2813 * The number of structural features of the '<em>Partnership Record</em>' class.
2814 * <!-- begin-user-doc -->
2815 * <!-- end-user-doc -->
2816 * @generated
2817 * @ordered
2818 */
2819 int PARTNERSHIP_RECORD_FEATURE_COUNT = LEGAL_UNION_RECORD_FEATURE_COUNT + 0;
2820
2821 /**
2822 * The number of operations of the '<em>Partnership Record</em>' class.
2823 * <!-- begin-user-doc -->
2824 * <!-- end-user-doc -->
2825 * @generated
2826 * @ordered
2827 */
2828 int PARTNERSHIP_RECORD_OPERATION_COUNT = LEGAL_UNION_RECORD_OPERATION_COUNT + 0;
2829
2830 /**
2831 * The meta object id for the '{@link Taxation.impl.Resident_Tax_PayerImpl <em>Resident Tax Payer</em>}' class.
2832 * <!-- begin-user-doc -->
2833 * <!-- end-user-doc -->
2834 * @see Taxation.impl.Resident_Tax_PayerImpl
2835 * @see Taxation.impl.TaxationPackageImpl#getResident_Tax_Payer()
2836 * @generated
2837 */
2838 int RESIDENT_TAX_PAYER = 24;
2839
2840 /**
2841 * The feature id for the '<em><b>Is assisting spouse</b></em>' attribute.
2842 * <!-- begin-user-doc -->
2843 * <!-- end-user-doc -->
2844 * @generated
2845 * @ordered
2846 */
2847 int RESIDENT_TAX_PAYER__IS_ASSISTING_SPOUSE = TAX_PAYER__IS_ASSISTING_SPOUSE;
2848
2849 /**
2850 * The feature id for the '<em><b>SS No</b></em>' attribute.
2851 * <!-- begin-user-doc -->
2852 * <!-- end-user-doc -->
2853 * @generated
2854 * @ordered
2855 */
2856 int RESIDENT_TAX_PAYER__SS_NO = TAX_PAYER__SS_NO;
2857
2858 /**
2859 * The feature id for the '<em><b>Addresses</b></em>' reference list.
2860 * <!-- begin-user-doc -->
2861 * <!-- end-user-doc -->
2862 * @generated
2863 * @ordered
2864 */
2865 int RESIDENT_TAX_PAYER__ADDRESSES = TAX_PAYER__ADDRESSES;
2866
2867 /**
2868 * The feature id for the '<em><b>Birth year</b></em>' attribute.
2869 * <!-- begin-user-doc -->
2870 * <!-- end-user-doc -->
2871 * @generated
2872 * @ordered
2873 */
2874 int RESIDENT_TAX_PAYER__BIRTH_YEAR = TAX_PAYER__BIRTH_YEAR;
2875
2876 /**
2877 * The feature id for the '<em><b>Disability percentage</b></em>' attribute.
2878 * <!-- begin-user-doc -->
2879 * <!-- end-user-doc -->
2880 * @generated
2881 * @ordered
2882 */
2883 int RESIDENT_TAX_PAYER__DISABILITY_PERCENTAGE = TAX_PAYER__DISABILITY_PERCENTAGE;
2884
2885 /**
2886 * The feature id for the '<em><b>Disability type</b></em>' attribute.
2887 * <!-- begin-user-doc -->
2888 * <!-- end-user-doc -->
2889 * @generated
2890 * @ordered
2891 */
2892 int RESIDENT_TAX_PAYER__DISABILITY_TYPE = TAX_PAYER__DISABILITY_TYPE;
2893
2894 /**
2895 * The feature id for the '<em><b>Is affiliated personnaly to social security</b></em>' attribute.
2896 * <!-- begin-user-doc -->
2897 * <!-- end-user-doc -->
2898 * @generated
2899 * @ordered
2900 */
2901 int RESIDENT_TAX_PAYER__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY = TAX_PAYER__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY;
2902
2903 /**
2904 * The feature id for the '<em><b>Birth month</b></em>' attribute.
2905 * <!-- begin-user-doc -->
2906 * <!-- end-user-doc -->
2907 * @generated
2908 * @ordered
2909 */
2910 int RESIDENT_TAX_PAYER__BIRTH_MONTH = TAX_PAYER__BIRTH_MONTH;
2911
2912 /**
2913 * The feature id for the '<em><b>Birth day</b></em>' attribute.
2914 * <!-- begin-user-doc -->
2915 * <!-- end-user-doc -->
2916 * @generated
2917 * @ordered
2918 */
2919 int RESIDENT_TAX_PAYER__BIRTH_DAY = TAX_PAYER__BIRTH_DAY;
2920
2921 /**
2922 * The feature id for the '<em><b>Expenses</b></em>' reference list.
2923 * <!-- begin-user-doc -->
2924 * <!-- end-user-doc -->
2925 * @generated
2926 * @ordered
2927 */
2928 int RESIDENT_TAX_PAYER__EXPENSES = TAX_PAYER__EXPENSES;
2929
2930 /**
2931 * The feature id for the '<em><b>Is widower</b></em>' attribute.
2932 * <!-- begin-user-doc -->
2933 * <!-- end-user-doc -->
2934 * @generated
2935 * @ordered
2936 */
2937 int RESIDENT_TAX_PAYER__IS_WIDOWER = TAX_PAYER__IS_WIDOWER;
2938
2939 /**
2940 * The feature id for the '<em><b>Owns Address</b></em>' containment reference list.
2941 * <!-- begin-user-doc -->
2942 * <!-- end-user-doc -->
2943 * @generated
2944 * @ordered
2945 */
2946 int RESIDENT_TAX_PAYER__OWNS_ADDRESS = TAX_PAYER__OWNS_ADDRESS;
2947
2948 /**
2949 * The feature id for the '<em><b>Dependents</b></em>' containment reference list.
2950 * <!-- begin-user-doc -->
2951 * <!-- end-user-doc -->
2952 * @generated
2953 * @ordered
2954 */
2955 int RESIDENT_TAX_PAYER__DEPENDENTS = TAX_PAYER__DEPENDENTS;
2956
2957 /**
2958 * The feature id for the '<em><b>From agent</b></em>' containment reference.
2959 * <!-- begin-user-doc -->
2960 * <!-- end-user-doc -->
2961 * @generated
2962 * @ordered
2963 */
2964 int RESIDENT_TAX_PAYER__FROM_AGENT = TAX_PAYER__FROM_AGENT;
2965
2966 /**
2967 * The feature id for the '<em><b>Incomes</b></em>' containment reference list.
2968 * <!-- begin-user-doc -->
2969 * <!-- end-user-doc -->
2970 * @generated
2971 * @ordered
2972 */
2973 int RESIDENT_TAX_PAYER__INCOMES = TAX_PAYER__INCOMES;
2974
2975 /**
2976 * The feature id for the '<em><b>From law</b></em>' containment reference.
2977 * <!-- begin-user-doc -->
2978 * <!-- end-user-doc -->
2979 * @generated
2980 * @ordered
2981 */
2982 int RESIDENT_TAX_PAYER__FROM_LAW = TAX_PAYER__FROM_LAW;
2983
2984 /**
2985 * The feature id for the '<em><b>Taxes Due</b></em>' attribute.
2986 * <!-- begin-user-doc -->
2987 * <!-- end-user-doc -->
2988 * @generated
2989 * @ordered
2990 */
2991 int RESIDENT_TAX_PAYER__TAXES_DUE = TAX_PAYER__TAXES_DUE;
2992
2993 /**
2994 * The number of structural features of the '<em>Resident Tax Payer</em>' class.
2995 * <!-- begin-user-doc -->
2996 * <!-- end-user-doc -->
2997 * @generated
2998 * @ordered
2999 */
3000 int RESIDENT_TAX_PAYER_FEATURE_COUNT = TAX_PAYER_FEATURE_COUNT + 0;
3001
3002 /**
3003 * The number of operations of the '<em>Resident Tax Payer</em>' class.
3004 * <!-- begin-user-doc -->
3005 * <!-- end-user-doc -->
3006 * @generated
3007 * @ordered
3008 */
3009 int RESIDENT_TAX_PAYER_OPERATION_COUNT = TAX_PAYER_OPERATION_COUNT + 0;
3010
3011 /**
3012 * The meta object id for the '{@link Taxation.impl.Trade_and_Business_IncomeImpl <em>Trade and Business Income</em>}' class.
3013 * <!-- begin-user-doc -->
3014 * <!-- end-user-doc -->
3015 * @see Taxation.impl.Trade_and_Business_IncomeImpl
3016 * @see Taxation.impl.TaxationPackageImpl#getTrade_and_Business_Income()
3017 * @generated
3018 */
3019 int TRADE_AND_BUSINESS_INCOME = 25;
3020
3021 /**
3022 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
3023 * <!-- begin-user-doc -->
3024 * <!-- end-user-doc -->
3025 * @generated
3026 * @ordered
3027 */
3028 int TRADE_AND_BUSINESS_INCOME__SUBJECT_TO_WITHHOLDING_TAX = INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX;
3029
3030 /**
3031 * The feature id for the '<em><b>Id8</b></em>' attribute.
3032 * <!-- begin-user-doc -->
3033 * <!-- end-user-doc -->
3034 * @generated
3035 * @ordered
3036 */
3037 int TRADE_AND_BUSINESS_INCOME__ID8 = INCOME_TYPE__ID8;
3038
3039 /**
3040 * The feature id for the '<em><b>Income</b></em>' container reference.
3041 * <!-- begin-user-doc -->
3042 * <!-- end-user-doc -->
3043 * @generated
3044 * @ordered
3045 */
3046 int TRADE_AND_BUSINESS_INCOME__INCOME = INCOME_TYPE__INCOME;
3047
3048 /**
3049 * The number of structural features of the '<em>Trade and Business Income</em>' class.
3050 * <!-- begin-user-doc -->
3051 * <!-- end-user-doc -->
3052 * @generated
3053 * @ordered
3054 */
3055 int TRADE_AND_BUSINESS_INCOME_FEATURE_COUNT = INCOME_TYPE_FEATURE_COUNT + 0;
3056
3057 /**
3058 * The number of operations of the '<em>Trade and Business Income</em>' class.
3059 * <!-- begin-user-doc -->
3060 * <!-- end-user-doc -->
3061 * @generated
3062 * @ordered
3063 */
3064 int TRADE_AND_BUSINESS_INCOME_OPERATION_COUNT = INCOME_TYPE_OPERATION_COUNT + 0;
3065
3066 /**
3067 * The meta object id for the '{@link Taxation.impl.Agriculture_and_Forestry_IncomeImpl <em>Agriculture and Forestry Income</em>}' class.
3068 * <!-- begin-user-doc -->
3069 * <!-- end-user-doc -->
3070 * @see Taxation.impl.Agriculture_and_Forestry_IncomeImpl
3071 * @see Taxation.impl.TaxationPackageImpl#getAgriculture_and_Forestry_Income()
3072 * @generated
3073 */
3074 int AGRICULTURE_AND_FORESTRY_INCOME = 26;
3075
3076 /**
3077 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
3078 * <!-- begin-user-doc -->
3079 * <!-- end-user-doc -->
3080 * @generated
3081 * @ordered
3082 */
3083 int AGRICULTURE_AND_FORESTRY_INCOME__SUBJECT_TO_WITHHOLDING_TAX = INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX;
3084
3085 /**
3086 * The feature id for the '<em><b>Id8</b></em>' attribute.
3087 * <!-- begin-user-doc -->
3088 * <!-- end-user-doc -->
3089 * @generated
3090 * @ordered
3091 */
3092 int AGRICULTURE_AND_FORESTRY_INCOME__ID8 = INCOME_TYPE__ID8;
3093
3094 /**
3095 * The feature id for the '<em><b>Income</b></em>' container reference.
3096 * <!-- begin-user-doc -->
3097 * <!-- end-user-doc -->
3098 * @generated
3099 * @ordered
3100 */
3101 int AGRICULTURE_AND_FORESTRY_INCOME__INCOME = INCOME_TYPE__INCOME;
3102
3103 /**
3104 * The number of structural features of the '<em>Agriculture and Forestry Income</em>' class.
3105 * <!-- begin-user-doc -->
3106 * <!-- end-user-doc -->
3107 * @generated
3108 * @ordered
3109 */
3110 int AGRICULTURE_AND_FORESTRY_INCOME_FEATURE_COUNT = INCOME_TYPE_FEATURE_COUNT + 0;
3111
3112 /**
3113 * The number of operations of the '<em>Agriculture and Forestry Income</em>' class.
3114 * <!-- begin-user-doc -->
3115 * <!-- end-user-doc -->
3116 * @generated
3117 * @ordered
3118 */
3119 int AGRICULTURE_AND_FORESTRY_INCOME_OPERATION_COUNT = INCOME_TYPE_OPERATION_COUNT + 0;
3120
3121 /**
3122 * The meta object id for the '{@link Taxation.impl.Pensions_and_Annuities_IncomeImpl <em>Pensions and Annuities Income</em>}' class.
3123 * <!-- begin-user-doc -->
3124 * <!-- end-user-doc -->
3125 * @see Taxation.impl.Pensions_and_Annuities_IncomeImpl
3126 * @see Taxation.impl.TaxationPackageImpl#getPensions_and_Annuities_Income()
3127 * @generated
3128 */
3129 int PENSIONS_AND_ANNUITIES_INCOME = 27;
3130
3131 /**
3132 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
3133 * <!-- begin-user-doc -->
3134 * <!-- end-user-doc -->
3135 * @generated
3136 * @ordered
3137 */
3138 int PENSIONS_AND_ANNUITIES_INCOME__SUBJECT_TO_WITHHOLDING_TAX = INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX;
3139
3140 /**
3141 * The feature id for the '<em><b>Id8</b></em>' attribute.
3142 * <!-- begin-user-doc -->
3143 * <!-- end-user-doc -->
3144 * @generated
3145 * @ordered
3146 */
3147 int PENSIONS_AND_ANNUITIES_INCOME__ID8 = INCOME_TYPE__ID8;
3148
3149 /**
3150 * The feature id for the '<em><b>Income</b></em>' container reference.
3151 * <!-- begin-user-doc -->
3152 * <!-- end-user-doc -->
3153 * @generated
3154 * @ordered
3155 */
3156 int PENSIONS_AND_ANNUITIES_INCOME__INCOME = INCOME_TYPE__INCOME;
3157
3158 /**
3159 * The feature id for the '<em><b>Occasional payement</b></em>' attribute.
3160 * <!-- begin-user-doc -->
3161 * <!-- end-user-doc -->
3162 * @generated
3163 * @ordered
3164 */
3165 int PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT = INCOME_TYPE_FEATURE_COUNT + 0;
3166
3167 /**
3168 * The number of structural features of the '<em>Pensions and Annuities Income</em>' class.
3169 * <!-- begin-user-doc -->
3170 * <!-- end-user-doc -->
3171 * @generated
3172 * @ordered
3173 */
3174 int PENSIONS_AND_ANNUITIES_INCOME_FEATURE_COUNT = INCOME_TYPE_FEATURE_COUNT + 1;
3175
3176 /**
3177 * The number of operations of the '<em>Pensions and Annuities Income</em>' class.
3178 * <!-- begin-user-doc -->
3179 * <!-- end-user-doc -->
3180 * @generated
3181 * @ordered
3182 */
3183 int PENSIONS_AND_ANNUITIES_INCOME_OPERATION_COUNT = INCOME_TYPE_OPERATION_COUNT + 0;
3184
3185 /**
3186 * The meta object id for the '{@link Taxation.impl.Capital_and_Investments_IncomeImpl <em>Capital and Investments Income</em>}' class.
3187 * <!-- begin-user-doc -->
3188 * <!-- end-user-doc -->
3189 * @see Taxation.impl.Capital_and_Investments_IncomeImpl
3190 * @see Taxation.impl.TaxationPackageImpl#getCapital_and_Investments_Income()
3191 * @generated
3192 */
3193 int CAPITAL_AND_INVESTMENTS_INCOME = 28;
3194
3195 /**
3196 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
3197 * <!-- begin-user-doc -->
3198 * <!-- end-user-doc -->
3199 * @generated
3200 * @ordered
3201 */
3202 int CAPITAL_AND_INVESTMENTS_INCOME__SUBJECT_TO_WITHHOLDING_TAX = INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX;
3203
3204 /**
3205 * The feature id for the '<em><b>Id8</b></em>' attribute.
3206 * <!-- begin-user-doc -->
3207 * <!-- end-user-doc -->
3208 * @generated
3209 * @ordered
3210 */
3211 int CAPITAL_AND_INVESTMENTS_INCOME__ID8 = INCOME_TYPE__ID8;
3212
3213 /**
3214 * The feature id for the '<em><b>Income</b></em>' container reference.
3215 * <!-- begin-user-doc -->
3216 * <!-- end-user-doc -->
3217 * @generated
3218 * @ordered
3219 */
3220 int CAPITAL_AND_INVESTMENTS_INCOME__INCOME = INCOME_TYPE__INCOME;
3221
3222 /**
3223 * The number of structural features of the '<em>Capital and Investments Income</em>' class.
3224 * <!-- begin-user-doc -->
3225 * <!-- end-user-doc -->
3226 * @generated
3227 * @ordered
3228 */
3229 int CAPITAL_AND_INVESTMENTS_INCOME_FEATURE_COUNT = INCOME_TYPE_FEATURE_COUNT + 0;
3230
3231 /**
3232 * The number of operations of the '<em>Capital and Investments Income</em>' class.
3233 * <!-- begin-user-doc -->
3234 * <!-- end-user-doc -->
3235 * @generated
3236 * @ordered
3237 */
3238 int CAPITAL_AND_INVESTMENTS_INCOME_OPERATION_COUNT = INCOME_TYPE_OPERATION_COUNT + 0;
3239
3240 /**
3241 * The meta object id for the '{@link Taxation.impl.Employment_IncomeImpl <em>Employment Income</em>}' class.
3242 * <!-- begin-user-doc -->
3243 * <!-- end-user-doc -->
3244 * @see Taxation.impl.Employment_IncomeImpl
3245 * @see Taxation.impl.TaxationPackageImpl#getEmployment_Income()
3246 * @generated
3247 */
3248 int EMPLOYMENT_INCOME = 29;
3249
3250 /**
3251 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
3252 * <!-- begin-user-doc -->
3253 * <!-- end-user-doc -->
3254 * @generated
3255 * @ordered
3256 */
3257 int EMPLOYMENT_INCOME__SUBJECT_TO_WITHHOLDING_TAX = INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX;
3258
3259 /**
3260 * The feature id for the '<em><b>Id8</b></em>' attribute.
3261 * <!-- begin-user-doc -->
3262 * <!-- end-user-doc -->
3263 * @generated
3264 * @ordered
3265 */
3266 int EMPLOYMENT_INCOME__ID8 = INCOME_TYPE__ID8;
3267
3268 /**
3269 * The feature id for the '<em><b>Income</b></em>' container reference.
3270 * <!-- begin-user-doc -->
3271 * <!-- end-user-doc -->
3272 * @generated
3273 * @ordered
3274 */
3275 int EMPLOYMENT_INCOME__INCOME = INCOME_TYPE__INCOME;
3276
3277 /**
3278 * The number of structural features of the '<em>Employment Income</em>' class.
3279 * <!-- begin-user-doc -->
3280 * <!-- end-user-doc -->
3281 * @generated
3282 * @ordered
3283 */
3284 int EMPLOYMENT_INCOME_FEATURE_COUNT = INCOME_TYPE_FEATURE_COUNT + 0;
3285
3286 /**
3287 * The number of operations of the '<em>Employment Income</em>' class.
3288 * <!-- begin-user-doc -->
3289 * <!-- end-user-doc -->
3290 * @generated
3291 * @ordered
3292 */
3293 int EMPLOYMENT_INCOME_OPERATION_COUNT = INCOME_TYPE_OPERATION_COUNT + 0;
3294
3295 /**
3296 * The meta object id for the '{@link Taxation.impl.Rentals_and_Leases_IncomeImpl <em>Rentals and Leases Income</em>}' class.
3297 * <!-- begin-user-doc -->
3298 * <!-- end-user-doc -->
3299 * @see Taxation.impl.Rentals_and_Leases_IncomeImpl
3300 * @see Taxation.impl.TaxationPackageImpl#getRentals_and_Leases_Income()
3301 * @generated
3302 */
3303 int RENTALS_AND_LEASES_INCOME = 30;
3304
3305 /**
3306 * The feature id for the '<em><b>Subject To Withholding Tax</b></em>' attribute.
3307 * <!-- begin-user-doc -->
3308 * <!-- end-user-doc -->
3309 * @generated
3310 * @ordered
3311 */
3312 int RENTALS_AND_LEASES_INCOME__SUBJECT_TO_WITHHOLDING_TAX = INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX;
3313
3314 /**
3315 * The feature id for the '<em><b>Id8</b></em>' attribute.
3316 * <!-- begin-user-doc -->
3317 * <!-- end-user-doc -->
3318 * @generated
3319 * @ordered
3320 */
3321 int RENTALS_AND_LEASES_INCOME__ID8 = INCOME_TYPE__ID8;
3322
3323 /**
3324 * The feature id for the '<em><b>Income</b></em>' container reference.
3325 * <!-- begin-user-doc -->
3326 * <!-- end-user-doc -->
3327 * @generated
3328 * @ordered
3329 */
3330 int RENTALS_AND_LEASES_INCOME__INCOME = INCOME_TYPE__INCOME;
3331
3332 /**
3333 * The feature id for the '<em><b>Is periodic</b></em>' attribute.
3334 * <!-- begin-user-doc -->
3335 * <!-- end-user-doc -->
3336 * @generated
3337 * @ordered
3338 */
3339 int RENTALS_AND_LEASES_INCOME__IS_PERIODIC = INCOME_TYPE_FEATURE_COUNT + 0;
3340
3341 /**
3342 * The number of structural features of the '<em>Rentals and Leases Income</em>' class.
3343 * <!-- begin-user-doc -->
3344 * <!-- end-user-doc -->
3345 * @generated
3346 * @ordered
3347 */
3348 int RENTALS_AND_LEASES_INCOME_FEATURE_COUNT = INCOME_TYPE_FEATURE_COUNT + 1;
3349
3350 /**
3351 * The number of operations of the '<em>Rentals and Leases Income</em>' class.
3352 * <!-- begin-user-doc -->
3353 * <!-- end-user-doc -->
3354 * @generated
3355 * @ordered
3356 */
3357 int RENTALS_AND_LEASES_INCOME_OPERATION_COUNT = INCOME_TYPE_OPERATION_COUNT + 0;
3358
3359 /**
3360 * The meta object id for the '{@link Taxation.impl.Foreign_IncomeImpl <em>Foreign Income</em>}' class.
3361 * <!-- begin-user-doc -->
3362 * <!-- end-user-doc -->
3363 * @see Taxation.impl.Foreign_IncomeImpl
3364 * @see Taxation.impl.TaxationPackageImpl#getForeign_Income()
3365 * @generated
3366 */
3367 int FOREIGN_INCOME = 31;
3368
3369 /**
3370 * The feature id for the '<em><b>Income amount</b></em>' attribute.
3371 * <!-- begin-user-doc -->
3372 * <!-- end-user-doc -->
3373 * @generated
3374 * @ordered
3375 */
3376 int FOREIGN_INCOME__INCOME_AMOUNT = INCOME__INCOME_AMOUNT;
3377
3378 /**
3379 * The feature id for the '<em><b>Income type</b></em>' containment reference.
3380 * <!-- begin-user-doc -->
3381 * <!-- end-user-doc -->
3382 * @generated
3383 * @ordered
3384 */
3385 int FOREIGN_INCOME__INCOME_TYPE = INCOME__INCOME_TYPE;
3386
3387 /**
3388 * The feature id for the '<em><b>Start date within taxation year</b></em>' attribute.
3389 * <!-- begin-user-doc -->
3390 * <!-- end-user-doc -->
3391 * @generated
3392 * @ordered
3393 */
3394 int FOREIGN_INCOME__START_DATE_WITHIN_TAXATION_YEAR = INCOME__START_DATE_WITHIN_TAXATION_YEAR;
3395
3396 /**
3397 * The feature id for the '<em><b>Start date of contract</b></em>' attribute.
3398 * <!-- begin-user-doc -->
3399 * <!-- end-user-doc -->
3400 * @generated
3401 * @ordered
3402 */
3403 int FOREIGN_INCOME__START_DATE_OF_CONTRACT = INCOME__START_DATE_OF_CONTRACT;
3404
3405 /**
3406 * The feature id for the '<em><b>End date within taxation year</b></em>' attribute.
3407 * <!-- begin-user-doc -->
3408 * <!-- end-user-doc -->
3409 * @generated
3410 * @ordered
3411 */
3412 int FOREIGN_INCOME__END_DATE_WITHIN_TAXATION_YEAR = INCOME__END_DATE_WITHIN_TAXATION_YEAR;
3413
3414 /**
3415 * The feature id for the '<em><b>Tax card</b></em>' containment reference.
3416 * <!-- begin-user-doc -->
3417 * <!-- end-user-doc -->
3418 * @generated
3419 * @ordered
3420 */
3421 int FOREIGN_INCOME__TAX_CARD = INCOME__TAX_CARD;
3422
3423 /**
3424 * The feature id for the '<em><b>Tax liability</b></em>' attribute.
3425 * <!-- begin-user-doc -->
3426 * <!-- end-user-doc -->
3427 * @generated
3428 * @ordered
3429 */
3430 int FOREIGN_INCOME__TAX_LIABILITY = INCOME__TAX_LIABILITY;
3431
3432 /**
3433 * The feature id for the '<em><b>Tax Payer</b></em>' container reference.
3434 * <!-- begin-user-doc -->
3435 * <!-- end-user-doc -->
3436 * @generated
3437 * @ordered
3438 */
3439 int FOREIGN_INCOME__TAX_PAYER = INCOME__TAX_PAYER;
3440
3441 /**
3442 * The feature id for the '<em><b>Details</b></em>' containment reference list.
3443 * <!-- begin-user-doc -->
3444 * <!-- end-user-doc -->
3445 * @generated
3446 * @ordered
3447 */
3448 int FOREIGN_INCOME__DETAILS = INCOME__DETAILS;
3449
3450 /**
3451 * The feature id for the '<em><b>Num</b></em>' attribute.
3452 * <!-- begin-user-doc -->
3453 * <!-- end-user-doc -->
3454 * @generated
3455 * @ordered
3456 */
3457 int FOREIGN_INCOME__NUM = INCOME__NUM;
3458
3459 /**
3460 * The feature id for the '<em><b>Expenses</b></em>' containment reference list.
3461 * <!-- begin-user-doc -->
3462 * <!-- end-user-doc -->
3463 * @generated
3464 * @ordered
3465 */
3466 int FOREIGN_INCOME__EXPENSES = INCOME__EXPENSES;
3467
3468 /**
3469 * The number of structural features of the '<em>Foreign Income</em>' class.
3470 * <!-- begin-user-doc -->
3471 * <!-- end-user-doc -->
3472 * @generated
3473 * @ordered
3474 */
3475 int FOREIGN_INCOME_FEATURE_COUNT = INCOME_FEATURE_COUNT + 0;
3476
3477 /**
3478 * The number of operations of the '<em>Foreign Income</em>' class.
3479 * <!-- begin-user-doc -->
3480 * <!-- end-user-doc -->
3481 * @generated
3482 * @ordered
3483 */
3484 int FOREIGN_INCOME_OPERATION_COUNT = INCOME_OPERATION_COUNT + 0;
3485
3486 /**
3487 * The meta object id for the '{@link Taxation.impl.Local_IncomeImpl <em>Local Income</em>}' class.
3488 * <!-- begin-user-doc -->
3489 * <!-- end-user-doc -->
3490 * @see Taxation.impl.Local_IncomeImpl
3491 * @see Taxation.impl.TaxationPackageImpl#getLocal_Income()
3492 * @generated
3493 */
3494 int LOCAL_INCOME = 32;
3495
3496 /**
3497 * The feature id for the '<em><b>Income amount</b></em>' attribute.
3498 * <!-- begin-user-doc -->
3499 * <!-- end-user-doc -->
3500 * @generated
3501 * @ordered
3502 */
3503 int LOCAL_INCOME__INCOME_AMOUNT = INCOME__INCOME_AMOUNT;
3504
3505 /**
3506 * The feature id for the '<em><b>Income type</b></em>' containment reference.
3507 * <!-- begin-user-doc -->
3508 * <!-- end-user-doc -->
3509 * @generated
3510 * @ordered
3511 */
3512 int LOCAL_INCOME__INCOME_TYPE = INCOME__INCOME_TYPE;
3513
3514 /**
3515 * The feature id for the '<em><b>Start date within taxation year</b></em>' attribute.
3516 * <!-- begin-user-doc -->
3517 * <!-- end-user-doc -->
3518 * @generated
3519 * @ordered
3520 */
3521 int LOCAL_INCOME__START_DATE_WITHIN_TAXATION_YEAR = INCOME__START_DATE_WITHIN_TAXATION_YEAR;
3522
3523 /**
3524 * The feature id for the '<em><b>Start date of contract</b></em>' attribute.
3525 * <!-- begin-user-doc -->
3526 * <!-- end-user-doc -->
3527 * @generated
3528 * @ordered
3529 */
3530 int LOCAL_INCOME__START_DATE_OF_CONTRACT = INCOME__START_DATE_OF_CONTRACT;
3531
3532 /**
3533 * The feature id for the '<em><b>End date within taxation year</b></em>' attribute.
3534 * <!-- begin-user-doc -->
3535 * <!-- end-user-doc -->
3536 * @generated
3537 * @ordered
3538 */
3539 int LOCAL_INCOME__END_DATE_WITHIN_TAXATION_YEAR = INCOME__END_DATE_WITHIN_TAXATION_YEAR;
3540
3541 /**
3542 * The feature id for the '<em><b>Tax card</b></em>' containment reference.
3543 * <!-- begin-user-doc -->
3544 * <!-- end-user-doc -->
3545 * @generated
3546 * @ordered
3547 */
3548 int LOCAL_INCOME__TAX_CARD = INCOME__TAX_CARD;
3549
3550 /**
3551 * The feature id for the '<em><b>Tax liability</b></em>' attribute.
3552 * <!-- begin-user-doc -->
3553 * <!-- end-user-doc -->
3554 * @generated
3555 * @ordered
3556 */
3557 int LOCAL_INCOME__TAX_LIABILITY = INCOME__TAX_LIABILITY;
3558
3559 /**
3560 * The feature id for the '<em><b>Tax Payer</b></em>' container reference.
3561 * <!-- begin-user-doc -->
3562 * <!-- end-user-doc -->
3563 * @generated
3564 * @ordered
3565 */
3566 int LOCAL_INCOME__TAX_PAYER = INCOME__TAX_PAYER;
3567
3568 /**
3569 * The feature id for the '<em><b>Details</b></em>' containment reference list.
3570 * <!-- begin-user-doc -->
3571 * <!-- end-user-doc -->
3572 * @generated
3573 * @ordered
3574 */
3575 int LOCAL_INCOME__DETAILS = INCOME__DETAILS;
3576
3577 /**
3578 * The feature id for the '<em><b>Num</b></em>' attribute.
3579 * <!-- begin-user-doc -->
3580 * <!-- end-user-doc -->
3581 * @generated
3582 * @ordered
3583 */
3584 int LOCAL_INCOME__NUM = INCOME__NUM;
3585
3586 /**
3587 * The feature id for the '<em><b>Expenses</b></em>' containment reference list.
3588 * <!-- begin-user-doc -->
3589 * <!-- end-user-doc -->
3590 * @generated
3591 * @ordered
3592 */
3593 int LOCAL_INCOME__EXPENSES = INCOME__EXPENSES;
3594
3595 /**
3596 * The number of structural features of the '<em>Local Income</em>' class.
3597 * <!-- begin-user-doc -->
3598 * <!-- end-user-doc -->
3599 * @generated
3600 * @ordered
3601 */
3602 int LOCAL_INCOME_FEATURE_COUNT = INCOME_FEATURE_COUNT + 0;
3603
3604 /**
3605 * The number of operations of the '<em>Local Income</em>' class.
3606 * <!-- begin-user-doc -->
3607 * <!-- end-user-doc -->
3608 * @generated
3609 * @ordered
3610 */
3611 int LOCAL_INCOME_OPERATION_COUNT = INCOME_OPERATION_COUNT + 0;
3612
3613 /**
3614 * The meta object id for the '{@link Taxation.impl.CIMImpl <em>CIM</em>}' class.
3615 * <!-- begin-user-doc -->
3616 * <!-- end-user-doc -->
3617 * @see Taxation.impl.CIMImpl
3618 * @see Taxation.impl.TaxationPackageImpl#getCIM()
3619 * @generated
3620 */
3621 int CIM = 33;
3622
3623 /**
3624 * The feature id for the '<em><b>Granted By</b></em>' attribute.
3625 * <!-- begin-user-doc -->
3626 * <!-- end-user-doc -->
3627 * @generated
3628 * @ordered
3629 */
3630 int CIM__GRANTED_BY = INCOME_TAX_CREDIT__GRANTED_BY;
3631
3632 /**
3633 * The feature id for the '<em><b>Tax Payer</b></em>' reference.
3634 * <!-- begin-user-doc -->
3635 * <!-- end-user-doc -->
3636 * @generated
3637 * @ordered
3638 */
3639 int CIM__TAX_PAYER = INCOME_TAX_CREDIT__TAX_PAYER;
3640
3641 /**
3642 * The feature id for the '<em><b>Tax year</b></em>' attribute.
3643 * <!-- begin-user-doc -->
3644 * <!-- end-user-doc -->
3645 * @generated
3646 * @ordered
3647 */
3648 int CIM__TAX_YEAR = INCOME_TAX_CREDIT__TAX_YEAR;
3649
3650 /**
3651 * The feature id for the '<em><b>Yearly</b></em>' attribute.
3652 * <!-- begin-user-doc -->
3653 * <!-- end-user-doc -->
3654 * @generated
3655 * @ordered
3656 */
3657 int CIM__YEARLY = INCOME_TAX_CREDIT__YEARLY;
3658
3659 /**
3660 * The feature id for the '<em><b>Monthly</b></em>' attribute.
3661 * <!-- begin-user-doc -->
3662 * <!-- end-user-doc -->
3663 * @generated
3664 * @ordered
3665 */
3666 int CIM__MONTHLY = INCOME_TAX_CREDIT__MONTHLY;
3667
3668 /**
3669 * The feature id for the '<em><b>Daily</b></em>' attribute.
3670 * <!-- begin-user-doc -->
3671 * <!-- end-user-doc -->
3672 * @generated
3673 * @ordered
3674 */
3675 int CIM__DAILY = INCOME_TAX_CREDIT__DAILY;
3676
3677 /**
3678 * The feature id for the '<em><b>Id7</b></em>' attribute.
3679 * <!-- begin-user-doc -->
3680 * <!-- end-user-doc -->
3681 * @generated
3682 * @ordered
3683 */
3684 int CIM__ID7 = INCOME_TAX_CREDIT__ID7;
3685
3686 /**
3687 * The feature id for the '<em><b>Taxation Frame</b></em>' reference.
3688 * <!-- begin-user-doc -->
3689 * <!-- end-user-doc -->
3690 * @generated
3691 * @ordered
3692 */
3693 int CIM__TAXATION_FRAME = INCOME_TAX_CREDIT__TAXATION_FRAME;
3694
3695 /**
3696 * The number of structural features of the '<em>CIM</em>' class.
3697 * <!-- begin-user-doc -->
3698 * <!-- end-user-doc -->
3699 * @generated
3700 * @ordered
3701 */
3702 int CIM_FEATURE_COUNT = INCOME_TAX_CREDIT_FEATURE_COUNT + 0;
3703
3704 /**
3705 * The number of operations of the '<em>CIM</em>' class.
3706 * <!-- begin-user-doc -->
3707 * <!-- end-user-doc -->
3708 * @generated
3709 * @ordered
3710 */
3711 int CIM_OPERATION_COUNT = INCOME_TAX_CREDIT_OPERATION_COUNT + 0;
3712
3713 /**
3714 * The meta object id for the '{@link Taxation.impl.CIPImpl <em>CIP</em>}' class.
3715 * <!-- begin-user-doc -->
3716 * <!-- end-user-doc -->
3717 * @see Taxation.impl.CIPImpl
3718 * @see Taxation.impl.TaxationPackageImpl#getCIP()
3719 * @generated
3720 */
3721 int CIP = 34;
3722
3723 /**
3724 * The feature id for the '<em><b>Granted By</b></em>' attribute.
3725 * <!-- begin-user-doc -->
3726 * <!-- end-user-doc -->
3727 * @generated
3728 * @ordered
3729 */
3730 int CIP__GRANTED_BY = INCOME_TAX_CREDIT__GRANTED_BY;
3731
3732 /**
3733 * The feature id for the '<em><b>Tax Payer</b></em>' reference.
3734 * <!-- begin-user-doc -->
3735 * <!-- end-user-doc -->
3736 * @generated
3737 * @ordered
3738 */
3739 int CIP__TAX_PAYER = INCOME_TAX_CREDIT__TAX_PAYER;
3740
3741 /**
3742 * The feature id for the '<em><b>Tax year</b></em>' attribute.
3743 * <!-- begin-user-doc -->
3744 * <!-- end-user-doc -->
3745 * @generated
3746 * @ordered
3747 */
3748 int CIP__TAX_YEAR = INCOME_TAX_CREDIT__TAX_YEAR;
3749
3750 /**
3751 * The feature id for the '<em><b>Yearly</b></em>' attribute.
3752 * <!-- begin-user-doc -->
3753 * <!-- end-user-doc -->
3754 * @generated
3755 * @ordered
3756 */
3757 int CIP__YEARLY = INCOME_TAX_CREDIT__YEARLY;
3758
3759 /**
3760 * The feature id for the '<em><b>Monthly</b></em>' attribute.
3761 * <!-- begin-user-doc -->
3762 * <!-- end-user-doc -->
3763 * @generated
3764 * @ordered
3765 */
3766 int CIP__MONTHLY = INCOME_TAX_CREDIT__MONTHLY;
3767
3768 /**
3769 * The feature id for the '<em><b>Daily</b></em>' attribute.
3770 * <!-- begin-user-doc -->
3771 * <!-- end-user-doc -->
3772 * @generated
3773 * @ordered
3774 */
3775 int CIP__DAILY = INCOME_TAX_CREDIT__DAILY;
3776
3777 /**
3778 * The feature id for the '<em><b>Id7</b></em>' attribute.
3779 * <!-- begin-user-doc -->
3780 * <!-- end-user-doc -->
3781 * @generated
3782 * @ordered
3783 */
3784 int CIP__ID7 = INCOME_TAX_CREDIT__ID7;
3785
3786 /**
3787 * The feature id for the '<em><b>Taxation Frame</b></em>' reference.
3788 * <!-- begin-user-doc -->
3789 * <!-- end-user-doc -->
3790 * @generated
3791 * @ordered
3792 */
3793 int CIP__TAXATION_FRAME = INCOME_TAX_CREDIT__TAXATION_FRAME;
3794
3795 /**
3796 * The number of structural features of the '<em>CIP</em>' class.
3797 * <!-- begin-user-doc -->
3798 * <!-- end-user-doc -->
3799 * @generated
3800 * @ordered
3801 */
3802 int CIP_FEATURE_COUNT = INCOME_TAX_CREDIT_FEATURE_COUNT + 0;
3803
3804 /**
3805 * The number of operations of the '<em>CIP</em>' class.
3806 * <!-- begin-user-doc -->
3807 * <!-- end-user-doc -->
3808 * @generated
3809 * @ordered
3810 */
3811 int CIP_OPERATION_COUNT = INCOME_TAX_CREDIT_OPERATION_COUNT + 0;
3812
3813 /**
3814 * The meta object id for the '{@link Taxation.impl.CISImpl <em>CIS</em>}' class.
3815 * <!-- begin-user-doc -->
3816 * <!-- end-user-doc -->
3817 * @see Taxation.impl.CISImpl
3818 * @see Taxation.impl.TaxationPackageImpl#getCIS()
3819 * @generated
3820 */
3821 int CIS = 35;
3822
3823 /**
3824 * The feature id for the '<em><b>Granted By</b></em>' attribute.
3825 * <!-- begin-user-doc -->
3826 * <!-- end-user-doc -->
3827 * @generated
3828 * @ordered
3829 */
3830 int CIS__GRANTED_BY = INCOME_TAX_CREDIT__GRANTED_BY;
3831
3832 /**
3833 * The feature id for the '<em><b>Tax Payer</b></em>' reference.
3834 * <!-- begin-user-doc -->
3835 * <!-- end-user-doc -->
3836 * @generated
3837 * @ordered
3838 */
3839 int CIS__TAX_PAYER = INCOME_TAX_CREDIT__TAX_PAYER;
3840
3841 /**
3842 * The feature id for the '<em><b>Tax year</b></em>' attribute.
3843 * <!-- begin-user-doc -->
3844 * <!-- end-user-doc -->
3845 * @generated
3846 * @ordered
3847 */
3848 int CIS__TAX_YEAR = INCOME_TAX_CREDIT__TAX_YEAR;
3849
3850 /**
3851 * The feature id for the '<em><b>Yearly</b></em>' attribute.
3852 * <!-- begin-user-doc -->
3853 * <!-- end-user-doc -->
3854 * @generated
3855 * @ordered
3856 */
3857 int CIS__YEARLY = INCOME_TAX_CREDIT__YEARLY;
3858
3859 /**
3860 * The feature id for the '<em><b>Monthly</b></em>' attribute.
3861 * <!-- begin-user-doc -->
3862 * <!-- end-user-doc -->
3863 * @generated
3864 * @ordered
3865 */
3866 int CIS__MONTHLY = INCOME_TAX_CREDIT__MONTHLY;
3867
3868 /**
3869 * The feature id for the '<em><b>Daily</b></em>' attribute.
3870 * <!-- begin-user-doc -->
3871 * <!-- end-user-doc -->
3872 * @generated
3873 * @ordered
3874 */
3875 int CIS__DAILY = INCOME_TAX_CREDIT__DAILY;
3876
3877 /**
3878 * The feature id for the '<em><b>Id7</b></em>' attribute.
3879 * <!-- begin-user-doc -->
3880 * <!-- end-user-doc -->
3881 * @generated
3882 * @ordered
3883 */
3884 int CIS__ID7 = INCOME_TAX_CREDIT__ID7;
3885
3886 /**
3887 * The feature id for the '<em><b>Taxation Frame</b></em>' reference.
3888 * <!-- begin-user-doc -->
3889 * <!-- end-user-doc -->
3890 * @generated
3891 * @ordered
3892 */
3893 int CIS__TAXATION_FRAME = INCOME_TAX_CREDIT__TAXATION_FRAME;
3894
3895 /**
3896 * The number of structural features of the '<em>CIS</em>' class.
3897 * <!-- begin-user-doc -->
3898 * <!-- end-user-doc -->
3899 * @generated
3900 * @ordered
3901 */
3902 int CIS_FEATURE_COUNT = INCOME_TAX_CREDIT_FEATURE_COUNT + 0;
3903
3904 /**
3905 * The number of operations of the '<em>CIS</em>' class.
3906 * <!-- begin-user-doc -->
3907 * <!-- end-user-doc -->
3908 * @generated
3909 * @ordered
3910 */
3911 int CIS_OPERATION_COUNT = INCOME_TAX_CREDIT_OPERATION_COUNT + 0;
3912
3913 /**
3914 * The meta object id for the '{@link Taxation.impl.Professional_Expenses_DeductionImpl <em>Professional Expenses Deduction</em>}' class.
3915 * <!-- begin-user-doc -->
3916 * <!-- end-user-doc -->
3917 * @see Taxation.impl.Professional_Expenses_DeductionImpl
3918 * @see Taxation.impl.TaxationPackageImpl#getProfessional_Expenses_Deduction()
3919 * @generated
3920 */
3921 int PROFESSIONAL_EXPENSES_DEDUCTION = 37;
3922
3923 /**
3924 * The number of structural features of the '<em>Professional Expenses Deduction</em>' class.
3925 * <!-- begin-user-doc -->
3926 * <!-- end-user-doc -->
3927 * @generated
3928 * @ordered
3929 */
3930 int PROFESSIONAL_EXPENSES_DEDUCTION_FEATURE_COUNT = 0;
3931
3932 /**
3933 * The number of operations of the '<em>Professional Expenses Deduction</em>' class.
3934 * <!-- begin-user-doc -->
3935 * <!-- end-user-doc -->
3936 * @generated
3937 * @ordered
3938 */
3939 int PROFESSIONAL_EXPENSES_DEDUCTION_OPERATION_COUNT = 0;
3940
3941 /**
3942 * The meta object id for the '{@link Taxation.impl.FDImpl <em>FD</em>}' class.
3943 * <!-- begin-user-doc -->
3944 * <!-- end-user-doc -->
3945 * @see Taxation.impl.FDImpl
3946 * @see Taxation.impl.TaxationPackageImpl#getFD()
3947 * @generated
3948 */
3949 int FD = 36;
3950
3951 /**
3952 * The feature id for the '<em><b>Distance declared in january</b></em>' attribute.
3953 * <!-- begin-user-doc -->
3954 * <!-- end-user-doc -->
3955 * @generated
3956 * @ordered
3957 */
3958 int FD__DISTANCE_DECLARED_IN_JANUARY = PROFESSIONAL_EXPENSES_DEDUCTION_FEATURE_COUNT + 0;
3959
3960 /**
3961 * The feature id for the '<em><b>Calculated distance</b></em>' attribute.
3962 * <!-- begin-user-doc -->
3963 * <!-- end-user-doc -->
3964 * @generated
3965 * @ordered
3966 */
3967 int FD__CALCULATED_DISTANCE = PROFESSIONAL_EXPENSES_DEDUCTION_FEATURE_COUNT + 1;
3968
3969 /**
3970 * The number of structural features of the '<em>FD</em>' class.
3971 * <!-- begin-user-doc -->
3972 * <!-- end-user-doc -->
3973 * @generated
3974 * @ordered
3975 */
3976 int FD_FEATURE_COUNT = PROFESSIONAL_EXPENSES_DEDUCTION_FEATURE_COUNT + 2;
3977
3978 /**
3979 * The number of operations of the '<em>FD</em>' class.
3980 * <!-- begin-user-doc -->
3981 * <!-- end-user-doc -->
3982 * @generated
3983 * @ordered
3984 */
3985 int FD_OPERATION_COUNT = PROFESSIONAL_EXPENSES_DEDUCTION_OPERATION_COUNT + 0;
3986
3987 /**
3988 * The meta object id for the '{@link Taxation.impl.FOImpl <em>FO</em>}' class.
3989 * <!-- begin-user-doc -->
3990 * <!-- end-user-doc -->
3991 * @see Taxation.impl.FOImpl
3992 * @see Taxation.impl.TaxationPackageImpl#getFO()
3993 * @generated
3994 */
3995 int FO = 38;
3996
3997 /**
3998 * The feature id for the '<em><b>Rate type for FO</b></em>' attribute.
3999 * <!-- begin-user-doc -->
4000 * <!-- end-user-doc -->
4001 * @generated
4002 * @ordered
4003 */
4004 int FO__RATE_TYPE_FOR_FO = PROFESSIONAL_EXPENSES_DEDUCTION_FEATURE_COUNT + 0;
4005
4006 /**
4007 * The number of structural features of the '<em>FO</em>' class.
4008 * <!-- begin-user-doc -->
4009 * <!-- end-user-doc -->
4010 * @generated
4011 * @ordered
4012 */
4013 int FO_FEATURE_COUNT = PROFESSIONAL_EXPENSES_DEDUCTION_FEATURE_COUNT + 1;
4014
4015 /**
4016 * The number of operations of the '<em>FO</em>' class.
4017 * <!-- begin-user-doc -->
4018 * <!-- end-user-doc -->
4019 * @generated
4020 * @ordered
4021 */
4022 int FO_OPERATION_COUNT = PROFESSIONAL_EXPENSES_DEDUCTION_OPERATION_COUNT + 0;
4023
4024 /**
4025 * The meta object id for the '{@link Taxation.impl.DSImpl <em>DS</em>}' class.
4026 * <!-- begin-user-doc -->
4027 * <!-- end-user-doc -->
4028 * @see Taxation.impl.DSImpl
4029 * @see Taxation.impl.TaxationPackageImpl#getDS()
4030 * @generated
4031 */
4032 int DS = 40;
4033
4034 /**
4035 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4036 * <!-- begin-user-doc -->
4037 * <!-- end-user-doc -->
4038 * @generated
4039 * @ordered
4040 */
4041 int DS__MAXIMUM_DEDUCTIBLE_AMOUNT = 0;
4042
4043 /**
4044 * The feature id for the '<em><b>Id3</b></em>' attribute.
4045 * <!-- begin-user-doc -->
4046 * <!-- end-user-doc -->
4047 * @generated
4048 * @ordered
4049 */
4050 int DS__ID3 = 1;
4051
4052 /**
4053 * The number of structural features of the '<em>DS</em>' class.
4054 * <!-- begin-user-doc -->
4055 * <!-- end-user-doc -->
4056 * @generated
4057 * @ordered
4058 */
4059 int DS_FEATURE_COUNT = 2;
4060
4061 /**
4062 * The number of operations of the '<em>DS</em>' class.
4063 * <!-- begin-user-doc -->
4064 * <!-- end-user-doc -->
4065 * @generated
4066 * @ordered
4067 */
4068 int DS_OPERATION_COUNT = 0;
4069
4070 /**
4071 * The meta object id for the '{@link Taxation.impl.DS_for_Permanent_ExpenseImpl <em>DS for Permanent Expense</em>}' class.
4072 * <!-- begin-user-doc -->
4073 * <!-- end-user-doc -->
4074 * @see Taxation.impl.DS_for_Permanent_ExpenseImpl
4075 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Permanent_Expense()
4076 * @generated
4077 */
4078 int DS_FOR_PERMANENT_EXPENSE = 39;
4079
4080 /**
4081 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4082 * <!-- begin-user-doc -->
4083 * <!-- end-user-doc -->
4084 * @generated
4085 * @ordered
4086 */
4087 int DS_FOR_PERMANENT_EXPENSE__MAXIMUM_DEDUCTIBLE_AMOUNT = DS__MAXIMUM_DEDUCTIBLE_AMOUNT;
4088
4089 /**
4090 * The feature id for the '<em><b>Id3</b></em>' attribute.
4091 * <!-- begin-user-doc -->
4092 * <!-- end-user-doc -->
4093 * @generated
4094 * @ordered
4095 */
4096 int DS_FOR_PERMANENT_EXPENSE__ID3 = DS__ID3;
4097
4098 /**
4099 * The feature id for the '<em><b>Permanent expense category</b></em>' attribute.
4100 * <!-- begin-user-doc -->
4101 * <!-- end-user-doc -->
4102 * @generated
4103 * @ordered
4104 */
4105 int DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY = DS_FEATURE_COUNT + 0;
4106
4107 /**
4108 * The number of structural features of the '<em>DS for Permanent Expense</em>' class.
4109 * <!-- begin-user-doc -->
4110 * <!-- end-user-doc -->
4111 * @generated
4112 * @ordered
4113 */
4114 int DS_FOR_PERMANENT_EXPENSE_FEATURE_COUNT = DS_FEATURE_COUNT + 1;
4115
4116 /**
4117 * The number of operations of the '<em>DS for Permanent Expense</em>' class.
4118 * <!-- begin-user-doc -->
4119 * <!-- end-user-doc -->
4120 * @generated
4121 * @ordered
4122 */
4123 int DS_FOR_PERMANENT_EXPENSE_OPERATION_COUNT = DS_OPERATION_COUNT + 0;
4124
4125 /**
4126 * The meta object id for the '{@link Taxation.impl.DS_for_Interest_ExpenseImpl <em>DS for Interest Expense</em>}' class.
4127 * <!-- begin-user-doc -->
4128 * <!-- end-user-doc -->
4129 * @see Taxation.impl.DS_for_Interest_ExpenseImpl
4130 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Interest_Expense()
4131 * @generated
4132 */
4133 int DS_FOR_INTEREST_EXPENSE = 41;
4134
4135 /**
4136 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4137 * <!-- begin-user-doc -->
4138 * <!-- end-user-doc -->
4139 * @generated
4140 * @ordered
4141 */
4142 int DS_FOR_INTEREST_EXPENSE__MAXIMUM_DEDUCTIBLE_AMOUNT = DS__MAXIMUM_DEDUCTIBLE_AMOUNT;
4143
4144 /**
4145 * The feature id for the '<em><b>Id3</b></em>' attribute.
4146 * <!-- begin-user-doc -->
4147 * <!-- end-user-doc -->
4148 * @generated
4149 * @ordered
4150 */
4151 int DS_FOR_INTEREST_EXPENSE__ID3 = DS__ID3;
4152
4153 /**
4154 * The number of structural features of the '<em>DS for Interest Expense</em>' class.
4155 * <!-- begin-user-doc -->
4156 * <!-- end-user-doc -->
4157 * @generated
4158 * @ordered
4159 */
4160 int DS_FOR_INTEREST_EXPENSE_FEATURE_COUNT = DS_FEATURE_COUNT + 0;
4161
4162 /**
4163 * The number of operations of the '<em>DS for Interest Expense</em>' class.
4164 * <!-- begin-user-doc -->
4165 * <!-- end-user-doc -->
4166 * @generated
4167 * @ordered
4168 */
4169 int DS_FOR_INTEREST_EXPENSE_OPERATION_COUNT = DS_OPERATION_COUNT + 0;
4170
4171 /**
4172 * The meta object id for the '{@link Taxation.impl.DS_for_Health_and_Pension_InsuranceImpl <em>DS for Health and Pension Insurance</em>}' class.
4173 * <!-- begin-user-doc -->
4174 * <!-- end-user-doc -->
4175 * @see Taxation.impl.DS_for_Health_and_Pension_InsuranceImpl
4176 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Health_and_Pension_Insurance()
4177 * @generated
4178 */
4179 int DS_FOR_HEALTH_AND_PENSION_INSURANCE = 42;
4180
4181 /**
4182 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4183 * <!-- begin-user-doc -->
4184 * <!-- end-user-doc -->
4185 * @generated
4186 * @ordered
4187 */
4188 int DS_FOR_HEALTH_AND_PENSION_INSURANCE__MAXIMUM_DEDUCTIBLE_AMOUNT = DS__MAXIMUM_DEDUCTIBLE_AMOUNT;
4189
4190 /**
4191 * The feature id for the '<em><b>Id3</b></em>' attribute.
4192 * <!-- begin-user-doc -->
4193 * <!-- end-user-doc -->
4194 * @generated
4195 * @ordered
4196 */
4197 int DS_FOR_HEALTH_AND_PENSION_INSURANCE__ID3 = DS__ID3;
4198
4199 /**
4200 * The feature id for the '<em><b>Insurance category</b></em>' attribute.
4201 * <!-- begin-user-doc -->
4202 * <!-- end-user-doc -->
4203 * @generated
4204 * @ordered
4205 */
4206 int DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY = DS_FEATURE_COUNT + 0;
4207
4208 /**
4209 * The number of structural features of the '<em>DS for Health and Pension Insurance</em>' class.
4210 * <!-- begin-user-doc -->
4211 * <!-- end-user-doc -->
4212 * @generated
4213 * @ordered
4214 */
4215 int DS_FOR_HEALTH_AND_PENSION_INSURANCE_FEATURE_COUNT = DS_FEATURE_COUNT + 1;
4216
4217 /**
4218 * The number of operations of the '<em>DS for Health and Pension Insurance</em>' class.
4219 * <!-- begin-user-doc -->
4220 * <!-- end-user-doc -->
4221 * @generated
4222 * @ordered
4223 */
4224 int DS_FOR_HEALTH_AND_PENSION_INSURANCE_OPERATION_COUNT = DS_OPERATION_COUNT + 0;
4225
4226 /**
4227 * The meta object id for the '{@link Taxation.impl.DS_for_Private_Insurance_and_PlanImpl <em>DS for Private Insurance and Plan</em>}' class.
4228 * <!-- begin-user-doc -->
4229 * <!-- end-user-doc -->
4230 * @see Taxation.impl.DS_for_Private_Insurance_and_PlanImpl
4231 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Private_Insurance_and_Plan()
4232 * @generated
4233 */
4234 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN = 43;
4235
4236 /**
4237 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4238 * <!-- begin-user-doc -->
4239 * <!-- end-user-doc -->
4240 * @generated
4241 * @ordered
4242 */
4243 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT = DS__MAXIMUM_DEDUCTIBLE_AMOUNT;
4244
4245 /**
4246 * The feature id for the '<em><b>Id3</b></em>' attribute.
4247 * <!-- begin-user-doc -->
4248 * <!-- end-user-doc -->
4249 * @generated
4250 * @ordered
4251 */
4252 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN__ID3 = DS__ID3;
4253
4254 /**
4255 * The feature id for the '<em><b>Private insurance and plan category</b></em>' attribute.
4256 * <!-- begin-user-doc -->
4257 * <!-- end-user-doc -->
4258 * @generated
4259 * @ordered
4260 */
4261 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY = DS_FEATURE_COUNT + 0;
4262
4263 /**
4264 * The feature id for the '<em><b>Increase for life insurance</b></em>' attribute.
4265 * <!-- begin-user-doc -->
4266 * <!-- end-user-doc -->
4267 * @generated
4268 * @ordered
4269 */
4270 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE = DS_FEATURE_COUNT + 1;
4271
4272 /**
4273 * The feature id for the '<em><b>Maximum deductible amount for private insurance</b></em>' attribute.
4274 * <!-- begin-user-doc -->
4275 * <!-- end-user-doc -->
4276 * @generated
4277 * @ordered
4278 */
4279 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE = DS_FEATURE_COUNT + 2;
4280
4281 /**
4282 * The feature id for the '<em><b>Maximum deductible amount for old age pension plan</b></em>' attribute.
4283 * <!-- begin-user-doc -->
4284 * <!-- end-user-doc -->
4285 * @generated
4286 * @ordered
4287 */
4288 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN = DS_FEATURE_COUNT + 3;
4289
4290 /**
4291 * The number of structural features of the '<em>DS for Private Insurance and Plan</em>' class.
4292 * <!-- begin-user-doc -->
4293 * <!-- end-user-doc -->
4294 * @generated
4295 * @ordered
4296 */
4297 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN_FEATURE_COUNT = DS_FEATURE_COUNT + 4;
4298
4299 /**
4300 * The number of operations of the '<em>DS for Private Insurance and Plan</em>' class.
4301 * <!-- begin-user-doc -->
4302 * <!-- end-user-doc -->
4303 * @generated
4304 * @ordered
4305 */
4306 int DS_FOR_PRIVATE_INSURANCE_AND_PLAN_OPERATION_COUNT = DS_OPERATION_COUNT + 0;
4307
4308 /**
4309 * The meta object id for the '{@link Taxation.impl.DS_for_Loss_CarryforwardImpl <em>DS for Loss Carryforward</em>}' class.
4310 * <!-- begin-user-doc -->
4311 * <!-- end-user-doc -->
4312 * @see Taxation.impl.DS_for_Loss_CarryforwardImpl
4313 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Loss_Carryforward()
4314 * @generated
4315 */
4316 int DS_FOR_LOSS_CARRYFORWARD = 44;
4317
4318 /**
4319 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4320 * <!-- begin-user-doc -->
4321 * <!-- end-user-doc -->
4322 * @generated
4323 * @ordered
4324 */
4325 int DS_FOR_LOSS_CARRYFORWARD__MAXIMUM_DEDUCTIBLE_AMOUNT = DS__MAXIMUM_DEDUCTIBLE_AMOUNT;
4326
4327 /**
4328 * The feature id for the '<em><b>Id3</b></em>' attribute.
4329 * <!-- begin-user-doc -->
4330 * <!-- end-user-doc -->
4331 * @generated
4332 * @ordered
4333 */
4334 int DS_FOR_LOSS_CARRYFORWARD__ID3 = DS__ID3;
4335
4336 /**
4337 * The number of structural features of the '<em>DS for Loss Carryforward</em>' class.
4338 * <!-- begin-user-doc -->
4339 * <!-- end-user-doc -->
4340 * @generated
4341 * @ordered
4342 */
4343 int DS_FOR_LOSS_CARRYFORWARD_FEATURE_COUNT = DS_FEATURE_COUNT + 0;
4344
4345 /**
4346 * The number of operations of the '<em>DS for Loss Carryforward</em>' class.
4347 * <!-- begin-user-doc -->
4348 * <!-- end-user-doc -->
4349 * @generated
4350 * @ordered
4351 */
4352 int DS_FOR_LOSS_CARRYFORWARD_OPERATION_COUNT = DS_OPERATION_COUNT + 0;
4353
4354 /**
4355 * The meta object id for the '{@link Taxation.impl.DS_for_DonationImpl <em>DS for Donation</em>}' class.
4356 * <!-- begin-user-doc -->
4357 * <!-- end-user-doc -->
4358 * @see Taxation.impl.DS_for_DonationImpl
4359 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Donation()
4360 * @generated
4361 */
4362 int DS_FOR_DONATION = 45;
4363
4364 /**
4365 * The feature id for the '<em><b>Maximum deductible amount</b></em>' attribute.
4366 * <!-- begin-user-doc -->
4367 * <!-- end-user-doc -->
4368 * @generated
4369 * @ordered
4370 */
4371 int DS_FOR_DONATION__MAXIMUM_DEDUCTIBLE_AMOUNT = DS__MAXIMUM_DEDUCTIBLE_AMOUNT;
4372
4373 /**
4374 * The feature id for the '<em><b>Id3</b></em>' attribute.
4375 * <!-- begin-user-doc -->
4376 * <!-- end-user-doc -->
4377 * @generated
4378 * @ordered
4379 */
4380 int DS_FOR_DONATION__ID3 = DS__ID3;
4381
4382 /**
4383 * The number of structural features of the '<em>DS for Donation</em>' class.
4384 * <!-- begin-user-doc -->
4385 * <!-- end-user-doc -->
4386 * @generated
4387 * @ordered
4388 */
4389 int DS_FOR_DONATION_FEATURE_COUNT = DS_FEATURE_COUNT + 0;
4390
4391 /**
4392 * The number of operations of the '<em>DS for Donation</em>' class.
4393 * <!-- begin-user-doc -->
4394 * <!-- end-user-doc -->
4395 * @generated
4396 * @ordered
4397 */
4398 int DS_FOR_DONATION_OPERATION_COUNT = DS_OPERATION_COUNT + 0;
4399
4400 /**
4401 * The meta object id for the '{@link Taxation.impl.Special_Expense_DSImpl <em>Special Expense DS</em>}' class.
4402 * <!-- begin-user-doc -->
4403 * <!-- end-user-doc -->
4404 * @see Taxation.impl.Special_Expense_DSImpl
4405 * @see Taxation.impl.TaxationPackageImpl#getSpecial_Expense_DS()
4406 * @generated
4407 */
4408 int SPECIAL_EXPENSE_DS = 47;
4409
4410 /**
4411 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
4412 * <!-- begin-user-doc -->
4413 * <!-- end-user-doc -->
4414 * @generated
4415 * @ordered
4416 */
4417 int SPECIAL_EXPENSE_DS__DECLARED_AMOUNT = EXPENSE__DECLARED_AMOUNT;
4418
4419 /**
4420 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
4421 * <!-- begin-user-doc -->
4422 * <!-- end-user-doc -->
4423 * @generated
4424 * @ordered
4425 */
4426 int SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE = EXPENSE__EXPENSE_PURPOSE;
4427
4428 /**
4429 * The feature id for the '<em><b>Dependent</b></em>' reference.
4430 * <!-- begin-user-doc -->
4431 * <!-- end-user-doc -->
4432 * @generated
4433 * @ordered
4434 */
4435 int SPECIAL_EXPENSE_DS__DEPENDENT = EXPENSE__DEPENDENT;
4436
4437 /**
4438 * The feature id for the '<em><b>From agent</b></em>' reference.
4439 * <!-- begin-user-doc -->
4440 * <!-- end-user-doc -->
4441 * @generated
4442 * @ordered
4443 */
4444 int SPECIAL_EXPENSE_DS__FROM_AGENT = EXPENSE__FROM_AGENT;
4445
4446 /**
4447 * The feature id for the '<em><b>Income</b></em>' container reference.
4448 * <!-- begin-user-doc -->
4449 * <!-- end-user-doc -->
4450 * @generated
4451 * @ordered
4452 */
4453 int SPECIAL_EXPENSE_DS__INCOME = EXPENSE__INCOME;
4454
4455 /**
4456 * The feature id for the '<em><b>Id4</b></em>' attribute.
4457 * <!-- begin-user-doc -->
4458 * <!-- end-user-doc -->
4459 * @generated
4460 * @ordered
4461 */
4462 int SPECIAL_EXPENSE_DS__ID4 = EXPENSE__ID4;
4463
4464 /**
4465 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
4466 * <!-- begin-user-doc -->
4467 * <!-- end-user-doc -->
4468 * @generated
4469 * @ordered
4470 */
4471 int SPECIAL_EXPENSE_DS__BENEFICIARY = EXPENSE__BENEFICIARY;
4472
4473 /**
4474 * The number of structural features of the '<em>Special Expense DS</em>' class.
4475 * <!-- begin-user-doc -->
4476 * <!-- end-user-doc -->
4477 * @generated
4478 * @ordered
4479 */
4480 int SPECIAL_EXPENSE_DS_FEATURE_COUNT = EXPENSE_FEATURE_COUNT + 0;
4481
4482 /**
4483 * The number of operations of the '<em>Special Expense DS</em>' class.
4484 * <!-- begin-user-doc -->
4485 * <!-- end-user-doc -->
4486 * @generated
4487 * @ordered
4488 */
4489 int SPECIAL_EXPENSE_DS_OPERATION_COUNT = EXPENSE_OPERATION_COUNT + 0;
4490
4491 /**
4492 * The meta object id for the '{@link Taxation.impl.Permanent_ExpenseImpl <em>Permanent Expense</em>}' class.
4493 * <!-- begin-user-doc -->
4494 * <!-- end-user-doc -->
4495 * @see Taxation.impl.Permanent_ExpenseImpl
4496 * @see Taxation.impl.TaxationPackageImpl#getPermanent_Expense()
4497 * @generated
4498 */
4499 int PERMANENT_EXPENSE = 46;
4500
4501 /**
4502 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
4503 * <!-- begin-user-doc -->
4504 * <!-- end-user-doc -->
4505 * @generated
4506 * @ordered
4507 */
4508 int PERMANENT_EXPENSE__DECLARED_AMOUNT = SPECIAL_EXPENSE_DS__DECLARED_AMOUNT;
4509
4510 /**
4511 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
4512 * <!-- begin-user-doc -->
4513 * <!-- end-user-doc -->
4514 * @generated
4515 * @ordered
4516 */
4517 int PERMANENT_EXPENSE__EXPENSE_PURPOSE = SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE;
4518
4519 /**
4520 * The feature id for the '<em><b>Dependent</b></em>' reference.
4521 * <!-- begin-user-doc -->
4522 * <!-- end-user-doc -->
4523 * @generated
4524 * @ordered
4525 */
4526 int PERMANENT_EXPENSE__DEPENDENT = SPECIAL_EXPENSE_DS__DEPENDENT;
4527
4528 /**
4529 * The feature id for the '<em><b>From agent</b></em>' reference.
4530 * <!-- begin-user-doc -->
4531 * <!-- end-user-doc -->
4532 * @generated
4533 * @ordered
4534 */
4535 int PERMANENT_EXPENSE__FROM_AGENT = SPECIAL_EXPENSE_DS__FROM_AGENT;
4536
4537 /**
4538 * The feature id for the '<em><b>Income</b></em>' container reference.
4539 * <!-- begin-user-doc -->
4540 * <!-- end-user-doc -->
4541 * @generated
4542 * @ordered
4543 */
4544 int PERMANENT_EXPENSE__INCOME = SPECIAL_EXPENSE_DS__INCOME;
4545
4546 /**
4547 * The feature id for the '<em><b>Id4</b></em>' attribute.
4548 * <!-- begin-user-doc -->
4549 * <!-- end-user-doc -->
4550 * @generated
4551 * @ordered
4552 */
4553 int PERMANENT_EXPENSE__ID4 = SPECIAL_EXPENSE_DS__ID4;
4554
4555 /**
4556 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
4557 * <!-- begin-user-doc -->
4558 * <!-- end-user-doc -->
4559 * @generated
4560 * @ordered
4561 */
4562 int PERMANENT_EXPENSE__BENEFICIARY = SPECIAL_EXPENSE_DS__BENEFICIARY;
4563
4564 /**
4565 * The feature id for the '<em><b>Category</b></em>' attribute.
4566 * <!-- begin-user-doc -->
4567 * <!-- end-user-doc -->
4568 * @generated
4569 * @ordered
4570 */
4571 int PERMANENT_EXPENSE__CATEGORY = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 0;
4572
4573 /**
4574 * The feature id for the '<em><b>Is eligible for deduction</b></em>' attribute.
4575 * <!-- begin-user-doc -->
4576 * <!-- end-user-doc -->
4577 * @generated
4578 * @ordered
4579 */
4580 int PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 1;
4581
4582 /**
4583 * The number of structural features of the '<em>Permanent Expense</em>' class.
4584 * <!-- begin-user-doc -->
4585 * <!-- end-user-doc -->
4586 * @generated
4587 * @ordered
4588 */
4589 int PERMANENT_EXPENSE_FEATURE_COUNT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 2;
4590
4591 /**
4592 * The number of operations of the '<em>Permanent Expense</em>' class.
4593 * <!-- begin-user-doc -->
4594 * <!-- end-user-doc -->
4595 * @generated
4596 * @ordered
4597 */
4598 int PERMANENT_EXPENSE_OPERATION_COUNT = SPECIAL_EXPENSE_DS_OPERATION_COUNT + 0;
4599
4600 /**
4601 * The meta object id for the '{@link Taxation.impl.Interest_ExpenseImpl <em>Interest Expense</em>}' class.
4602 * <!-- begin-user-doc -->
4603 * <!-- end-user-doc -->
4604 * @see Taxation.impl.Interest_ExpenseImpl
4605 * @see Taxation.impl.TaxationPackageImpl#getInterest_Expense()
4606 * @generated
4607 */
4608 int INTEREST_EXPENSE = 48;
4609
4610 /**
4611 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
4612 * <!-- begin-user-doc -->
4613 * <!-- end-user-doc -->
4614 * @generated
4615 * @ordered
4616 */
4617 int INTEREST_EXPENSE__DECLARED_AMOUNT = SPECIAL_EXPENSE_DS__DECLARED_AMOUNT;
4618
4619 /**
4620 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
4621 * <!-- begin-user-doc -->
4622 * <!-- end-user-doc -->
4623 * @generated
4624 * @ordered
4625 */
4626 int INTEREST_EXPENSE__EXPENSE_PURPOSE = SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE;
4627
4628 /**
4629 * The feature id for the '<em><b>Dependent</b></em>' reference.
4630 * <!-- begin-user-doc -->
4631 * <!-- end-user-doc -->
4632 * @generated
4633 * @ordered
4634 */
4635 int INTEREST_EXPENSE__DEPENDENT = SPECIAL_EXPENSE_DS__DEPENDENT;
4636
4637 /**
4638 * The feature id for the '<em><b>From agent</b></em>' reference.
4639 * <!-- begin-user-doc -->
4640 * <!-- end-user-doc -->
4641 * @generated
4642 * @ordered
4643 */
4644 int INTEREST_EXPENSE__FROM_AGENT = SPECIAL_EXPENSE_DS__FROM_AGENT;
4645
4646 /**
4647 * The feature id for the '<em><b>Income</b></em>' container reference.
4648 * <!-- begin-user-doc -->
4649 * <!-- end-user-doc -->
4650 * @generated
4651 * @ordered
4652 */
4653 int INTEREST_EXPENSE__INCOME = SPECIAL_EXPENSE_DS__INCOME;
4654
4655 /**
4656 * The feature id for the '<em><b>Id4</b></em>' attribute.
4657 * <!-- begin-user-doc -->
4658 * <!-- end-user-doc -->
4659 * @generated
4660 * @ordered
4661 */
4662 int INTEREST_EXPENSE__ID4 = SPECIAL_EXPENSE_DS__ID4;
4663
4664 /**
4665 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
4666 * <!-- begin-user-doc -->
4667 * <!-- end-user-doc -->
4668 * @generated
4669 * @ordered
4670 */
4671 int INTEREST_EXPENSE__BENEFICIARY = SPECIAL_EXPENSE_DS__BENEFICIARY;
4672
4673 /**
4674 * The number of structural features of the '<em>Interest Expense</em>' class.
4675 * <!-- begin-user-doc -->
4676 * <!-- end-user-doc -->
4677 * @generated
4678 * @ordered
4679 */
4680 int INTEREST_EXPENSE_FEATURE_COUNT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 0;
4681
4682 /**
4683 * The number of operations of the '<em>Interest Expense</em>' class.
4684 * <!-- begin-user-doc -->
4685 * <!-- end-user-doc -->
4686 * @generated
4687 * @ordered
4688 */
4689 int INTEREST_EXPENSE_OPERATION_COUNT = SPECIAL_EXPENSE_DS_OPERATION_COUNT + 0;
4690
4691 /**
4692 * The meta object id for the '{@link Taxation.impl.Private_Insurance_and_PlanImpl <em>Private Insurance and Plan</em>}' class.
4693 * <!-- begin-user-doc -->
4694 * <!-- end-user-doc -->
4695 * @see Taxation.impl.Private_Insurance_and_PlanImpl
4696 * @see Taxation.impl.TaxationPackageImpl#getPrivate_Insurance_and_Plan()
4697 * @generated
4698 */
4699 int PRIVATE_INSURANCE_AND_PLAN = 49;
4700
4701 /**
4702 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
4703 * <!-- begin-user-doc -->
4704 * <!-- end-user-doc -->
4705 * @generated
4706 * @ordered
4707 */
4708 int PRIVATE_INSURANCE_AND_PLAN__DECLARED_AMOUNT = SPECIAL_EXPENSE_DS__DECLARED_AMOUNT;
4709
4710 /**
4711 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
4712 * <!-- begin-user-doc -->
4713 * <!-- end-user-doc -->
4714 * @generated
4715 * @ordered
4716 */
4717 int PRIVATE_INSURANCE_AND_PLAN__EXPENSE_PURPOSE = SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE;
4718
4719 /**
4720 * The feature id for the '<em><b>Dependent</b></em>' reference.
4721 * <!-- begin-user-doc -->
4722 * <!-- end-user-doc -->
4723 * @generated
4724 * @ordered
4725 */
4726 int PRIVATE_INSURANCE_AND_PLAN__DEPENDENT = SPECIAL_EXPENSE_DS__DEPENDENT;
4727
4728 /**
4729 * The feature id for the '<em><b>From agent</b></em>' reference.
4730 * <!-- begin-user-doc -->
4731 * <!-- end-user-doc -->
4732 * @generated
4733 * @ordered
4734 */
4735 int PRIVATE_INSURANCE_AND_PLAN__FROM_AGENT = SPECIAL_EXPENSE_DS__FROM_AGENT;
4736
4737 /**
4738 * The feature id for the '<em><b>Income</b></em>' container reference.
4739 * <!-- begin-user-doc -->
4740 * <!-- end-user-doc -->
4741 * @generated
4742 * @ordered
4743 */
4744 int PRIVATE_INSURANCE_AND_PLAN__INCOME = SPECIAL_EXPENSE_DS__INCOME;
4745
4746 /**
4747 * The feature id for the '<em><b>Id4</b></em>' attribute.
4748 * <!-- begin-user-doc -->
4749 * <!-- end-user-doc -->
4750 * @generated
4751 * @ordered
4752 */
4753 int PRIVATE_INSURANCE_AND_PLAN__ID4 = SPECIAL_EXPENSE_DS__ID4;
4754
4755 /**
4756 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
4757 * <!-- begin-user-doc -->
4758 * <!-- end-user-doc -->
4759 * @generated
4760 * @ordered
4761 */
4762 int PRIVATE_INSURANCE_AND_PLAN__BENEFICIARY = SPECIAL_EXPENSE_DS__BENEFICIARY;
4763
4764 /**
4765 * The feature id for the '<em><b>Category</b></em>' attribute.
4766 * <!-- begin-user-doc -->
4767 * <!-- end-user-doc -->
4768 * @generated
4769 * @ordered
4770 */
4771 int PRIVATE_INSURANCE_AND_PLAN__CATEGORY = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 0;
4772
4773 /**
4774 * The feature id for the '<em><b>Duration of contract</b></em>' attribute.
4775 * <!-- begin-user-doc -->
4776 * <!-- end-user-doc -->
4777 * @generated
4778 * @ordered
4779 */
4780 int PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 1;
4781
4782 /**
4783 * The feature id for the '<em><b>Is private insurance and plan eligible for deduction</b></em>' attribute.
4784 * <!-- begin-user-doc -->
4785 * <!-- end-user-doc -->
4786 * @generated
4787 * @ordered
4788 */
4789 int PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 2;
4790
4791 /**
4792 * The number of structural features of the '<em>Private Insurance and Plan</em>' class.
4793 * <!-- begin-user-doc -->
4794 * <!-- end-user-doc -->
4795 * @generated
4796 * @ordered
4797 */
4798 int PRIVATE_INSURANCE_AND_PLAN_FEATURE_COUNT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 3;
4799
4800 /**
4801 * The number of operations of the '<em>Private Insurance and Plan</em>' class.
4802 * <!-- begin-user-doc -->
4803 * <!-- end-user-doc -->
4804 * @generated
4805 * @ordered
4806 */
4807 int PRIVATE_INSURANCE_AND_PLAN_OPERATION_COUNT = SPECIAL_EXPENSE_DS_OPERATION_COUNT + 0;
4808
4809 /**
4810 * The meta object id for the '{@link Taxation.impl.Health_and_Pension_InsuranceImpl <em>Health and Pension Insurance</em>}' class.
4811 * <!-- begin-user-doc -->
4812 * <!-- end-user-doc -->
4813 * @see Taxation.impl.Health_and_Pension_InsuranceImpl
4814 * @see Taxation.impl.TaxationPackageImpl#getHealth_and_Pension_Insurance()
4815 * @generated
4816 */
4817 int HEALTH_AND_PENSION_INSURANCE = 50;
4818
4819 /**
4820 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
4821 * <!-- begin-user-doc -->
4822 * <!-- end-user-doc -->
4823 * @generated
4824 * @ordered
4825 */
4826 int HEALTH_AND_PENSION_INSURANCE__DECLARED_AMOUNT = SPECIAL_EXPENSE_DS__DECLARED_AMOUNT;
4827
4828 /**
4829 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
4830 * <!-- begin-user-doc -->
4831 * <!-- end-user-doc -->
4832 * @generated
4833 * @ordered
4834 */
4835 int HEALTH_AND_PENSION_INSURANCE__EXPENSE_PURPOSE = SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE;
4836
4837 /**
4838 * The feature id for the '<em><b>Dependent</b></em>' reference.
4839 * <!-- begin-user-doc -->
4840 * <!-- end-user-doc -->
4841 * @generated
4842 * @ordered
4843 */
4844 int HEALTH_AND_PENSION_INSURANCE__DEPENDENT = SPECIAL_EXPENSE_DS__DEPENDENT;
4845
4846 /**
4847 * The feature id for the '<em><b>From agent</b></em>' reference.
4848 * <!-- begin-user-doc -->
4849 * <!-- end-user-doc -->
4850 * @generated
4851 * @ordered
4852 */
4853 int HEALTH_AND_PENSION_INSURANCE__FROM_AGENT = SPECIAL_EXPENSE_DS__FROM_AGENT;
4854
4855 /**
4856 * The feature id for the '<em><b>Income</b></em>' container reference.
4857 * <!-- begin-user-doc -->
4858 * <!-- end-user-doc -->
4859 * @generated
4860 * @ordered
4861 */
4862 int HEALTH_AND_PENSION_INSURANCE__INCOME = SPECIAL_EXPENSE_DS__INCOME;
4863
4864 /**
4865 * The feature id for the '<em><b>Id4</b></em>' attribute.
4866 * <!-- begin-user-doc -->
4867 * <!-- end-user-doc -->
4868 * @generated
4869 * @ordered
4870 */
4871 int HEALTH_AND_PENSION_INSURANCE__ID4 = SPECIAL_EXPENSE_DS__ID4;
4872
4873 /**
4874 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
4875 * <!-- begin-user-doc -->
4876 * <!-- end-user-doc -->
4877 * @generated
4878 * @ordered
4879 */
4880 int HEALTH_AND_PENSION_INSURANCE__BENEFICIARY = SPECIAL_EXPENSE_DS__BENEFICIARY;
4881
4882 /**
4883 * The feature id for the '<em><b>Category</b></em>' attribute.
4884 * <!-- begin-user-doc -->
4885 * <!-- end-user-doc -->
4886 * @generated
4887 * @ordered
4888 */
4889 int HEALTH_AND_PENSION_INSURANCE__CATEGORY = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 0;
4890
4891 /**
4892 * The feature id for the '<em><b>Is related to additional salary</b></em>' attribute.
4893 * <!-- begin-user-doc -->
4894 * <!-- end-user-doc -->
4895 * @generated
4896 * @ordered
4897 */
4898 int HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 1;
4899
4900 /**
4901 * The number of structural features of the '<em>Health and Pension Insurance</em>' class.
4902 * <!-- begin-user-doc -->
4903 * <!-- end-user-doc -->
4904 * @generated
4905 * @ordered
4906 */
4907 int HEALTH_AND_PENSION_INSURANCE_FEATURE_COUNT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 2;
4908
4909 /**
4910 * The number of operations of the '<em>Health and Pension Insurance</em>' class.
4911 * <!-- begin-user-doc -->
4912 * <!-- end-user-doc -->
4913 * @generated
4914 * @ordered
4915 */
4916 int HEALTH_AND_PENSION_INSURANCE_OPERATION_COUNT = SPECIAL_EXPENSE_DS_OPERATION_COUNT + 0;
4917
4918 /**
4919 * The meta object id for the '{@link Taxation.impl.DonationImpl <em>Donation</em>}' class.
4920 * <!-- begin-user-doc -->
4921 * <!-- end-user-doc -->
4922 * @see Taxation.impl.DonationImpl
4923 * @see Taxation.impl.TaxationPackageImpl#getDonation()
4924 * @generated
4925 */
4926 int DONATION = 51;
4927
4928 /**
4929 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
4930 * <!-- begin-user-doc -->
4931 * <!-- end-user-doc -->
4932 * @generated
4933 * @ordered
4934 */
4935 int DONATION__DECLARED_AMOUNT = SPECIAL_EXPENSE_DS__DECLARED_AMOUNT;
4936
4937 /**
4938 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
4939 * <!-- begin-user-doc -->
4940 * <!-- end-user-doc -->
4941 * @generated
4942 * @ordered
4943 */
4944 int DONATION__EXPENSE_PURPOSE = SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE;
4945
4946 /**
4947 * The feature id for the '<em><b>Dependent</b></em>' reference.
4948 * <!-- begin-user-doc -->
4949 * <!-- end-user-doc -->
4950 * @generated
4951 * @ordered
4952 */
4953 int DONATION__DEPENDENT = SPECIAL_EXPENSE_DS__DEPENDENT;
4954
4955 /**
4956 * The feature id for the '<em><b>From agent</b></em>' reference.
4957 * <!-- begin-user-doc -->
4958 * <!-- end-user-doc -->
4959 * @generated
4960 * @ordered
4961 */
4962 int DONATION__FROM_AGENT = SPECIAL_EXPENSE_DS__FROM_AGENT;
4963
4964 /**
4965 * The feature id for the '<em><b>Income</b></em>' container reference.
4966 * <!-- begin-user-doc -->
4967 * <!-- end-user-doc -->
4968 * @generated
4969 * @ordered
4970 */
4971 int DONATION__INCOME = SPECIAL_EXPENSE_DS__INCOME;
4972
4973 /**
4974 * The feature id for the '<em><b>Id4</b></em>' attribute.
4975 * <!-- begin-user-doc -->
4976 * <!-- end-user-doc -->
4977 * @generated
4978 * @ordered
4979 */
4980 int DONATION__ID4 = SPECIAL_EXPENSE_DS__ID4;
4981
4982 /**
4983 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
4984 * <!-- begin-user-doc -->
4985 * <!-- end-user-doc -->
4986 * @generated
4987 * @ordered
4988 */
4989 int DONATION__BENEFICIARY = SPECIAL_EXPENSE_DS__BENEFICIARY;
4990
4991 /**
4992 * The feature id for the '<em><b>Beneficiary1</b></em>' attribute.
4993 * <!-- begin-user-doc -->
4994 * <!-- end-user-doc -->
4995 * @generated
4996 * @ordered
4997 */
4998 int DONATION__BENEFICIARY1 = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 0;
4999
5000 /**
5001 * The feature id for the '<em><b>Is beneficiary eligible</b></em>' attribute.
5002 * <!-- begin-user-doc -->
5003 * <!-- end-user-doc -->
5004 * @generated
5005 * @ordered
5006 */
5007 int DONATION__IS_BENEFICIARY_ELIGIBLE = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 1;
5008
5009 /**
5010 * The feature id for the '<em><b>Is donation reported</b></em>' attribute.
5011 * <!-- begin-user-doc -->
5012 * <!-- end-user-doc -->
5013 * @generated
5014 * @ordered
5015 */
5016 int DONATION__IS_DONATION_REPORTED = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 2;
5017
5018 /**
5019 * The number of structural features of the '<em>Donation</em>' class.
5020 * <!-- begin-user-doc -->
5021 * <!-- end-user-doc -->
5022 * @generated
5023 * @ordered
5024 */
5025 int DONATION_FEATURE_COUNT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 3;
5026
5027 /**
5028 * The number of operations of the '<em>Donation</em>' class.
5029 * <!-- begin-user-doc -->
5030 * <!-- end-user-doc -->
5031 * @generated
5032 * @ordered
5033 */
5034 int DONATION_OPERATION_COUNT = SPECIAL_EXPENSE_DS_OPERATION_COUNT + 0;
5035
5036 /**
5037 * The meta object id for the '{@link Taxation.impl.Loss_CarryforwardImpl <em>Loss Carryforward</em>}' class.
5038 * <!-- begin-user-doc -->
5039 * <!-- end-user-doc -->
5040 * @see Taxation.impl.Loss_CarryforwardImpl
5041 * @see Taxation.impl.TaxationPackageImpl#getLoss_Carryforward()
5042 * @generated
5043 */
5044 int LOSS_CARRYFORWARD = 52;
5045
5046 /**
5047 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
5048 * <!-- begin-user-doc -->
5049 * <!-- end-user-doc -->
5050 * @generated
5051 * @ordered
5052 */
5053 int LOSS_CARRYFORWARD__DECLARED_AMOUNT = SPECIAL_EXPENSE_DS__DECLARED_AMOUNT;
5054
5055 /**
5056 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
5057 * <!-- begin-user-doc -->
5058 * <!-- end-user-doc -->
5059 * @generated
5060 * @ordered
5061 */
5062 int LOSS_CARRYFORWARD__EXPENSE_PURPOSE = SPECIAL_EXPENSE_DS__EXPENSE_PURPOSE;
5063
5064 /**
5065 * The feature id for the '<em><b>Dependent</b></em>' reference.
5066 * <!-- begin-user-doc -->
5067 * <!-- end-user-doc -->
5068 * @generated
5069 * @ordered
5070 */
5071 int LOSS_CARRYFORWARD__DEPENDENT = SPECIAL_EXPENSE_DS__DEPENDENT;
5072
5073 /**
5074 * The feature id for the '<em><b>From agent</b></em>' reference.
5075 * <!-- begin-user-doc -->
5076 * <!-- end-user-doc -->
5077 * @generated
5078 * @ordered
5079 */
5080 int LOSS_CARRYFORWARD__FROM_AGENT = SPECIAL_EXPENSE_DS__FROM_AGENT;
5081
5082 /**
5083 * The feature id for the '<em><b>Income</b></em>' container reference.
5084 * <!-- begin-user-doc -->
5085 * <!-- end-user-doc -->
5086 * @generated
5087 * @ordered
5088 */
5089 int LOSS_CARRYFORWARD__INCOME = SPECIAL_EXPENSE_DS__INCOME;
5090
5091 /**
5092 * The feature id for the '<em><b>Id4</b></em>' attribute.
5093 * <!-- begin-user-doc -->
5094 * <!-- end-user-doc -->
5095 * @generated
5096 * @ordered
5097 */
5098 int LOSS_CARRYFORWARD__ID4 = SPECIAL_EXPENSE_DS__ID4;
5099
5100 /**
5101 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
5102 * <!-- begin-user-doc -->
5103 * <!-- end-user-doc -->
5104 * @generated
5105 * @ordered
5106 */
5107 int LOSS_CARRYFORWARD__BENEFICIARY = SPECIAL_EXPENSE_DS__BENEFICIARY;
5108
5109 /**
5110 * The feature id for the '<em><b>Regular accountability</b></em>' attribute.
5111 * <!-- begin-user-doc -->
5112 * <!-- end-user-doc -->
5113 * @generated
5114 * @ordered
5115 */
5116 int LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 0;
5117
5118 /**
5119 * The feature id for the '<em><b>Compensation by other means</b></em>' attribute.
5120 * <!-- begin-user-doc -->
5121 * <!-- end-user-doc -->
5122 * @generated
5123 * @ordered
5124 */
5125 int LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 1;
5126
5127 /**
5128 * The feature id for the '<em><b>Tax payer has inherited business ownership</b></em>' attribute.
5129 * <!-- begin-user-doc -->
5130 * <!-- end-user-doc -->
5131 * @generated
5132 * @ordered
5133 */
5134 int LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 2;
5135
5136 /**
5137 * The feature id for the '<em><b>Tax payer has been partner in business</b></em>' attribute.
5138 * <!-- begin-user-doc -->
5139 * <!-- end-user-doc -->
5140 * @generated
5141 * @ordered
5142 */
5143 int LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 3;
5144
5145 /**
5146 * The number of structural features of the '<em>Loss Carryforward</em>' class.
5147 * <!-- begin-user-doc -->
5148 * <!-- end-user-doc -->
5149 * @generated
5150 * @ordered
5151 */
5152 int LOSS_CARRYFORWARD_FEATURE_COUNT = SPECIAL_EXPENSE_DS_FEATURE_COUNT + 4;
5153
5154 /**
5155 * The number of operations of the '<em>Loss Carryforward</em>' class.
5156 * <!-- begin-user-doc -->
5157 * <!-- end-user-doc -->
5158 * @generated
5159 * @ordered
5160 */
5161 int LOSS_CARRYFORWARD_OPERATION_COUNT = SPECIAL_EXPENSE_DS_OPERATION_COUNT + 0;
5162
5163 /**
5164 * The meta object id for the '{@link Taxation.impl.Spousal_Expense_ACImpl <em>Spousal Expense AC</em>}' class.
5165 * <!-- begin-user-doc -->
5166 * <!-- end-user-doc -->
5167 * @see Taxation.impl.Spousal_Expense_ACImpl
5168 * @see Taxation.impl.TaxationPackageImpl#getSpousal_Expense_AC()
5169 * @generated
5170 */
5171 int SPOUSAL_EXPENSE_AC = 53;
5172
5173 /**
5174 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
5175 * <!-- begin-user-doc -->
5176 * <!-- end-user-doc -->
5177 * @generated
5178 * @ordered
5179 */
5180 int SPOUSAL_EXPENSE_AC__DECLARED_AMOUNT = EXPENSE__DECLARED_AMOUNT;
5181
5182 /**
5183 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
5184 * <!-- begin-user-doc -->
5185 * <!-- end-user-doc -->
5186 * @generated
5187 * @ordered
5188 */
5189 int SPOUSAL_EXPENSE_AC__EXPENSE_PURPOSE = EXPENSE__EXPENSE_PURPOSE;
5190
5191 /**
5192 * The feature id for the '<em><b>Dependent</b></em>' reference.
5193 * <!-- begin-user-doc -->
5194 * <!-- end-user-doc -->
5195 * @generated
5196 * @ordered
5197 */
5198 int SPOUSAL_EXPENSE_AC__DEPENDENT = EXPENSE__DEPENDENT;
5199
5200 /**
5201 * The feature id for the '<em><b>From agent</b></em>' reference.
5202 * <!-- begin-user-doc -->
5203 * <!-- end-user-doc -->
5204 * @generated
5205 * @ordered
5206 */
5207 int SPOUSAL_EXPENSE_AC__FROM_AGENT = EXPENSE__FROM_AGENT;
5208
5209 /**
5210 * The feature id for the '<em><b>Income</b></em>' container reference.
5211 * <!-- begin-user-doc -->
5212 * <!-- end-user-doc -->
5213 * @generated
5214 * @ordered
5215 */
5216 int SPOUSAL_EXPENSE_AC__INCOME = EXPENSE__INCOME;
5217
5218 /**
5219 * The feature id for the '<em><b>Id4</b></em>' attribute.
5220 * <!-- begin-user-doc -->
5221 * <!-- end-user-doc -->
5222 * @generated
5223 * @ordered
5224 */
5225 int SPOUSAL_EXPENSE_AC__ID4 = EXPENSE__ID4;
5226
5227 /**
5228 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
5229 * <!-- begin-user-doc -->
5230 * <!-- end-user-doc -->
5231 * @generated
5232 * @ordered
5233 */
5234 int SPOUSAL_EXPENSE_AC__BENEFICIARY = EXPENSE__BENEFICIARY;
5235
5236 /**
5237 * The number of structural features of the '<em>Spousal Expense AC</em>' class.
5238 * <!-- begin-user-doc -->
5239 * <!-- end-user-doc -->
5240 * @generated
5241 * @ordered
5242 */
5243 int SPOUSAL_EXPENSE_AC_FEATURE_COUNT = EXPENSE_FEATURE_COUNT + 0;
5244
5245 /**
5246 * The number of operations of the '<em>Spousal Expense AC</em>' class.
5247 * <!-- begin-user-doc -->
5248 * <!-- end-user-doc -->
5249 * @generated
5250 * @ordered
5251 */
5252 int SPOUSAL_EXPENSE_AC_OPERATION_COUNT = EXPENSE_OPERATION_COUNT + 0;
5253
5254 /**
5255 * The meta object id for the '{@link Taxation.impl.Extraordinary_Expense_CEImpl <em>Extraordinary Expense CE</em>}' class.
5256 * <!-- begin-user-doc -->
5257 * <!-- end-user-doc -->
5258 * @see Taxation.impl.Extraordinary_Expense_CEImpl
5259 * @see Taxation.impl.TaxationPackageImpl#getExtraordinary_Expense_CE()
5260 * @generated
5261 */
5262 int EXTRAORDINARY_EXPENSE_CE = 54;
5263
5264 /**
5265 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
5266 * <!-- begin-user-doc -->
5267 * <!-- end-user-doc -->
5268 * @generated
5269 * @ordered
5270 */
5271 int EXTRAORDINARY_EXPENSE_CE__DECLARED_AMOUNT = EXPENSE__DECLARED_AMOUNT;
5272
5273 /**
5274 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
5275 * <!-- begin-user-doc -->
5276 * <!-- end-user-doc -->
5277 * @generated
5278 * @ordered
5279 */
5280 int EXTRAORDINARY_EXPENSE_CE__EXPENSE_PURPOSE = EXPENSE__EXPENSE_PURPOSE;
5281
5282 /**
5283 * The feature id for the '<em><b>Dependent</b></em>' reference.
5284 * <!-- begin-user-doc -->
5285 * <!-- end-user-doc -->
5286 * @generated
5287 * @ordered
5288 */
5289 int EXTRAORDINARY_EXPENSE_CE__DEPENDENT = EXPENSE__DEPENDENT;
5290
5291 /**
5292 * The feature id for the '<em><b>From agent</b></em>' reference.
5293 * <!-- begin-user-doc -->
5294 * <!-- end-user-doc -->
5295 * @generated
5296 * @ordered
5297 */
5298 int EXTRAORDINARY_EXPENSE_CE__FROM_AGENT = EXPENSE__FROM_AGENT;
5299
5300 /**
5301 * The feature id for the '<em><b>Income</b></em>' container reference.
5302 * <!-- begin-user-doc -->
5303 * <!-- end-user-doc -->
5304 * @generated
5305 * @ordered
5306 */
5307 int EXTRAORDINARY_EXPENSE_CE__INCOME = EXPENSE__INCOME;
5308
5309 /**
5310 * The feature id for the '<em><b>Id4</b></em>' attribute.
5311 * <!-- begin-user-doc -->
5312 * <!-- end-user-doc -->
5313 * @generated
5314 * @ordered
5315 */
5316 int EXTRAORDINARY_EXPENSE_CE__ID4 = EXPENSE__ID4;
5317
5318 /**
5319 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
5320 * <!-- begin-user-doc -->
5321 * <!-- end-user-doc -->
5322 * @generated
5323 * @ordered
5324 */
5325 int EXTRAORDINARY_EXPENSE_CE__BENEFICIARY = EXPENSE__BENEFICIARY;
5326
5327 /**
5328 * The feature id for the '<em><b>Thresholded deduction percentage</b></em>' attribute.
5329 * <!-- begin-user-doc -->
5330 * <!-- end-user-doc -->
5331 * @generated
5332 * @ordered
5333 */
5334 int EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE = EXPENSE_FEATURE_COUNT + 0;
5335
5336 /**
5337 * The feature id for the '<em><b>Ce type</b></em>' attribute.
5338 * <!-- begin-user-doc -->
5339 * <!-- end-user-doc -->
5340 * @generated
5341 * @ordered
5342 */
5343 int EXTRAORDINARY_EXPENSE_CE__CE_TYPE = EXPENSE_FEATURE_COUNT + 1;
5344
5345 /**
5346 * The number of structural features of the '<em>Extraordinary Expense CE</em>' class.
5347 * <!-- begin-user-doc -->
5348 * <!-- end-user-doc -->
5349 * @generated
5350 * @ordered
5351 */
5352 int EXTRAORDINARY_EXPENSE_CE_FEATURE_COUNT = EXPENSE_FEATURE_COUNT + 2;
5353
5354 /**
5355 * The number of operations of the '<em>Extraordinary Expense CE</em>' class.
5356 * <!-- begin-user-doc -->
5357 * <!-- end-user-doc -->
5358 * @generated
5359 * @ordered
5360 */
5361 int EXTRAORDINARY_EXPENSE_CE_OPERATION_COUNT = EXPENSE_OPERATION_COUNT + 0;
5362
5363 /**
5364 * The meta object id for the '{@link Taxation.impl.Professional_ExpenseImpl <em>Professional Expense</em>}' class.
5365 * <!-- begin-user-doc -->
5366 * <!-- end-user-doc -->
5367 * @see Taxation.impl.Professional_ExpenseImpl
5368 * @see Taxation.impl.TaxationPackageImpl#getProfessional_Expense()
5369 * @generated
5370 */
5371 int PROFESSIONAL_EXPENSE = 56;
5372
5373 /**
5374 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
5375 * <!-- begin-user-doc -->
5376 * <!-- end-user-doc -->
5377 * @generated
5378 * @ordered
5379 */
5380 int PROFESSIONAL_EXPENSE__DECLARED_AMOUNT = EXPENSE__DECLARED_AMOUNT;
5381
5382 /**
5383 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
5384 * <!-- begin-user-doc -->
5385 * <!-- end-user-doc -->
5386 * @generated
5387 * @ordered
5388 */
5389 int PROFESSIONAL_EXPENSE__EXPENSE_PURPOSE = EXPENSE__EXPENSE_PURPOSE;
5390
5391 /**
5392 * The feature id for the '<em><b>Dependent</b></em>' reference.
5393 * <!-- begin-user-doc -->
5394 * <!-- end-user-doc -->
5395 * @generated
5396 * @ordered
5397 */
5398 int PROFESSIONAL_EXPENSE__DEPENDENT = EXPENSE__DEPENDENT;
5399
5400 /**
5401 * The feature id for the '<em><b>From agent</b></em>' reference.
5402 * <!-- begin-user-doc -->
5403 * <!-- end-user-doc -->
5404 * @generated
5405 * @ordered
5406 */
5407 int PROFESSIONAL_EXPENSE__FROM_AGENT = EXPENSE__FROM_AGENT;
5408
5409 /**
5410 * The feature id for the '<em><b>Income</b></em>' container reference.
5411 * <!-- begin-user-doc -->
5412 * <!-- end-user-doc -->
5413 * @generated
5414 * @ordered
5415 */
5416 int PROFESSIONAL_EXPENSE__INCOME = EXPENSE__INCOME;
5417
5418 /**
5419 * The feature id for the '<em><b>Id4</b></em>' attribute.
5420 * <!-- begin-user-doc -->
5421 * <!-- end-user-doc -->
5422 * @generated
5423 * @ordered
5424 */
5425 int PROFESSIONAL_EXPENSE__ID4 = EXPENSE__ID4;
5426
5427 /**
5428 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
5429 * <!-- begin-user-doc -->
5430 * <!-- end-user-doc -->
5431 * @generated
5432 * @ordered
5433 */
5434 int PROFESSIONAL_EXPENSE__BENEFICIARY = EXPENSE__BENEFICIARY;
5435
5436 /**
5437 * The number of structural features of the '<em>Professional Expense</em>' class.
5438 * <!-- begin-user-doc -->
5439 * <!-- end-user-doc -->
5440 * @generated
5441 * @ordered
5442 */
5443 int PROFESSIONAL_EXPENSE_FEATURE_COUNT = EXPENSE_FEATURE_COUNT + 0;
5444
5445 /**
5446 * The number of operations of the '<em>Professional Expense</em>' class.
5447 * <!-- begin-user-doc -->
5448 * <!-- end-user-doc -->
5449 * @generated
5450 * @ordered
5451 */
5452 int PROFESSIONAL_EXPENSE_OPERATION_COUNT = EXPENSE_OPERATION_COUNT + 0;
5453
5454 /**
5455 * The meta object id for the '{@link Taxation.impl.Travel_Expense_FDImpl <em>Travel Expense FD</em>}' class.
5456 * <!-- begin-user-doc -->
5457 * <!-- end-user-doc -->
5458 * @see Taxation.impl.Travel_Expense_FDImpl
5459 * @see Taxation.impl.TaxationPackageImpl#getTravel_Expense_FD()
5460 * @generated
5461 */
5462 int TRAVEL_EXPENSE_FD = 55;
5463
5464 /**
5465 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
5466 * <!-- begin-user-doc -->
5467 * <!-- end-user-doc -->
5468 * @generated
5469 * @ordered
5470 */
5471 int TRAVEL_EXPENSE_FD__DECLARED_AMOUNT = PROFESSIONAL_EXPENSE__DECLARED_AMOUNT;
5472
5473 /**
5474 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
5475 * <!-- begin-user-doc -->
5476 * <!-- end-user-doc -->
5477 * @generated
5478 * @ordered
5479 */
5480 int TRAVEL_EXPENSE_FD__EXPENSE_PURPOSE = PROFESSIONAL_EXPENSE__EXPENSE_PURPOSE;
5481
5482 /**
5483 * The feature id for the '<em><b>Dependent</b></em>' reference.
5484 * <!-- begin-user-doc -->
5485 * <!-- end-user-doc -->
5486 * @generated
5487 * @ordered
5488 */
5489 int TRAVEL_EXPENSE_FD__DEPENDENT = PROFESSIONAL_EXPENSE__DEPENDENT;
5490
5491 /**
5492 * The feature id for the '<em><b>From agent</b></em>' reference.
5493 * <!-- begin-user-doc -->
5494 * <!-- end-user-doc -->
5495 * @generated
5496 * @ordered
5497 */
5498 int TRAVEL_EXPENSE_FD__FROM_AGENT = PROFESSIONAL_EXPENSE__FROM_AGENT;
5499
5500 /**
5501 * The feature id for the '<em><b>Income</b></em>' container reference.
5502 * <!-- begin-user-doc -->
5503 * <!-- end-user-doc -->
5504 * @generated
5505 * @ordered
5506 */
5507 int TRAVEL_EXPENSE_FD__INCOME = PROFESSIONAL_EXPENSE__INCOME;
5508
5509 /**
5510 * The feature id for the '<em><b>Id4</b></em>' attribute.
5511 * <!-- begin-user-doc -->
5512 * <!-- end-user-doc -->
5513 * @generated
5514 * @ordered
5515 */
5516 int TRAVEL_EXPENSE_FD__ID4 = PROFESSIONAL_EXPENSE__ID4;
5517
5518 /**
5519 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
5520 * <!-- begin-user-doc -->
5521 * <!-- end-user-doc -->
5522 * @generated
5523 * @ordered
5524 */
5525 int TRAVEL_EXPENSE_FD__BENEFICIARY = PROFESSIONAL_EXPENSE__BENEFICIARY;
5526
5527 /**
5528 * The number of structural features of the '<em>Travel Expense FD</em>' class.
5529 * <!-- begin-user-doc -->
5530 * <!-- end-user-doc -->
5531 * @generated
5532 * @ordered
5533 */
5534 int TRAVEL_EXPENSE_FD_FEATURE_COUNT = PROFESSIONAL_EXPENSE_FEATURE_COUNT + 0;
5535
5536 /**
5537 * The number of operations of the '<em>Travel Expense FD</em>' class.
5538 * <!-- begin-user-doc -->
5539 * <!-- end-user-doc -->
5540 * @generated
5541 * @ordered
5542 */
5543 int TRAVEL_EXPENSE_FD_OPERATION_COUNT = PROFESSIONAL_EXPENSE_OPERATION_COUNT + 0;
5544
5545 /**
5546 * The meta object id for the '{@link Taxation.impl.Miscellaneous_Expense_FOImpl <em>Miscellaneous Expense FO</em>}' class.
5547 * <!-- begin-user-doc -->
5548 * <!-- end-user-doc -->
5549 * @see Taxation.impl.Miscellaneous_Expense_FOImpl
5550 * @see Taxation.impl.TaxationPackageImpl#getMiscellaneous_Expense_FO()
5551 * @generated
5552 */
5553 int MISCELLANEOUS_EXPENSE_FO = 57;
5554
5555 /**
5556 * The feature id for the '<em><b>Declared amount</b></em>' attribute.
5557 * <!-- begin-user-doc -->
5558 * <!-- end-user-doc -->
5559 * @generated
5560 * @ordered
5561 */
5562 int MISCELLANEOUS_EXPENSE_FO__DECLARED_AMOUNT = PROFESSIONAL_EXPENSE__DECLARED_AMOUNT;
5563
5564 /**
5565 * The feature id for the '<em><b>Expense purpose</b></em>' attribute.
5566 * <!-- begin-user-doc -->
5567 * <!-- end-user-doc -->
5568 * @generated
5569 * @ordered
5570 */
5571 int MISCELLANEOUS_EXPENSE_FO__EXPENSE_PURPOSE = PROFESSIONAL_EXPENSE__EXPENSE_PURPOSE;
5572
5573 /**
5574 * The feature id for the '<em><b>Dependent</b></em>' reference.
5575 * <!-- begin-user-doc -->
5576 * <!-- end-user-doc -->
5577 * @generated
5578 * @ordered
5579 */
5580 int MISCELLANEOUS_EXPENSE_FO__DEPENDENT = PROFESSIONAL_EXPENSE__DEPENDENT;
5581
5582 /**
5583 * The feature id for the '<em><b>From agent</b></em>' reference.
5584 * <!-- begin-user-doc -->
5585 * <!-- end-user-doc -->
5586 * @generated
5587 * @ordered
5588 */
5589 int MISCELLANEOUS_EXPENSE_FO__FROM_AGENT = PROFESSIONAL_EXPENSE__FROM_AGENT;
5590
5591 /**
5592 * The feature id for the '<em><b>Income</b></em>' container reference.
5593 * <!-- begin-user-doc -->
5594 * <!-- end-user-doc -->
5595 * @generated
5596 * @ordered
5597 */
5598 int MISCELLANEOUS_EXPENSE_FO__INCOME = PROFESSIONAL_EXPENSE__INCOME;
5599
5600 /**
5601 * The feature id for the '<em><b>Id4</b></em>' attribute.
5602 * <!-- begin-user-doc -->
5603 * <!-- end-user-doc -->
5604 * @generated
5605 * @ordered
5606 */
5607 int MISCELLANEOUS_EXPENSE_FO__ID4 = PROFESSIONAL_EXPENSE__ID4;
5608
5609 /**
5610 * The feature id for the '<em><b>Beneficiary</b></em>' reference.
5611 * <!-- begin-user-doc -->
5612 * <!-- end-user-doc -->
5613 * @generated
5614 * @ordered
5615 */
5616 int MISCELLANEOUS_EXPENSE_FO__BENEFICIARY = PROFESSIONAL_EXPENSE__BENEFICIARY;
5617
5618 /**
5619 * The number of structural features of the '<em>Miscellaneous Expense FO</em>' class.
5620 * <!-- begin-user-doc -->
5621 * <!-- end-user-doc -->
5622 * @generated
5623 * @ordered
5624 */
5625 int MISCELLANEOUS_EXPENSE_FO_FEATURE_COUNT = PROFESSIONAL_EXPENSE_FEATURE_COUNT + 0;
5626
5627 /**
5628 * The number of operations of the '<em>Miscellaneous Expense FO</em>' class.
5629 * <!-- begin-user-doc -->
5630 * <!-- end-user-doc -->
5631 * @generated
5632 * @ordered
5633 */
5634 int MISCELLANEOUS_EXPENSE_FO_OPERATION_COUNT = PROFESSIONAL_EXPENSE_OPERATION_COUNT + 0;
5635
5636 /**
5637 * The meta object id for the '{@link Taxation.Grantor <em>Grantor</em>}' enum.
5638 * <!-- begin-user-doc -->
5639 * <!-- end-user-doc -->
5640 * @see Taxation.Grantor
5641 * @see Taxation.impl.TaxationPackageImpl#getGrantor()
5642 * @generated
5643 */
5644 int GRANTOR = 58;
5645
5646 /**
5647 * The meta object id for the '{@link Taxation.Disability_Types <em>Disability Types</em>}' enum.
5648 * <!-- begin-user-doc -->
5649 * <!-- end-user-doc -->
5650 * @see Taxation.Disability_Types
5651 * @see Taxation.impl.TaxationPackageImpl#getDisability_Types()
5652 * @generated
5653 */
5654 int DISABILITY_TYPES = 59;
5655
5656 /**
5657 * The meta object id for the '{@link Taxation.Country <em>Country</em>}' enum.
5658 * <!-- begin-user-doc -->
5659 * <!-- end-user-doc -->
5660 * @see Taxation.Country
5661 * @see Taxation.impl.TaxationPackageImpl#getCountry()
5662 * @generated
5663 */
5664 int COUNTRY = 60;
5665
5666 /**
5667 * The meta object id for the '{@link Taxation.Tax_Card_Type <em>Tax Card Type</em>}' enum.
5668 * <!-- begin-user-doc -->
5669 * <!-- end-user-doc -->
5670 * @see Taxation.Tax_Card_Type
5671 * @see Taxation.impl.TaxationPackageImpl#getTax_Card_Type()
5672 * @generated
5673 */
5674 int TAX_CARD_TYPE = 61;
5675
5676 /**
5677 * The meta object id for the '{@link Taxation.Tax_Office <em>Tax Office</em>}' enum.
5678 * <!-- begin-user-doc -->
5679 * <!-- end-user-doc -->
5680 * @see Taxation.Tax_Office
5681 * @see Taxation.impl.TaxationPackageImpl#getTax_Office()
5682 * @generated
5683 */
5684 int TAX_OFFICE = 62;
5685
5686 /**
5687 * The meta object id for the '{@link Taxation.Tax_Class_Category <em>Tax Class Category</em>}' enum.
5688 * <!-- begin-user-doc -->
5689 * <!-- end-user-doc -->
5690 * @see Taxation.Tax_Class_Category
5691 * @see Taxation.impl.TaxationPackageImpl#getTax_Class_Category()
5692 * @generated
5693 */
5694 int TAX_CLASS_CATEGORY = 63;
5695
5696 /**
5697 * The meta object id for the '{@link Taxation.Job_Activity <em>Job Activity</em>}' enum.
5698 * <!-- begin-user-doc -->
5699 * <!-- end-user-doc -->
5700 * @see Taxation.Job_Activity
5701 * @see Taxation.impl.TaxationPackageImpl#getJob_Activity()
5702 * @generated
5703 */
5704 int JOB_ACTIVITY = 64;
5705
5706 /**
5707 * The meta object id for the '{@link Taxation.Town <em>Town</em>}' enum.
5708 * <!-- begin-user-doc -->
5709 * <!-- end-user-doc -->
5710 * @see Taxation.Town
5711 * @see Taxation.impl.TaxationPackageImpl#getTown()
5712 * @generated
5713 */
5714 int TOWN = 65;
5715
5716 /**
5717 * The meta object id for the '{@link Taxation.Type_of_Rate <em>Type of Rate</em>}' enum.
5718 * <!-- begin-user-doc -->
5719 * <!-- end-user-doc -->
5720 * @see Taxation.Type_of_Rate
5721 * @see Taxation.impl.TaxationPackageImpl#getType_of_Rate()
5722 * @generated
5723 */
5724 int TYPE_OF_RATE = 66;
5725
5726 /**
5727 * The meta object id for the '{@link Taxation.CE_Type <em>CE Type</em>}' enum.
5728 * <!-- begin-user-doc -->
5729 * <!-- end-user-doc -->
5730 * @see Taxation.CE_Type
5731 * @see Taxation.impl.TaxationPackageImpl#getCE_Type()
5732 * @generated
5733 */
5734 int CE_TYPE = 67;
5735
5736 /**
5737 * The meta object id for the '{@link Taxation.Expense_Purpose <em>Expense Purpose</em>}' enum.
5738 * <!-- begin-user-doc -->
5739 * <!-- end-user-doc -->
5740 * @see Taxation.Expense_Purpose
5741 * @see Taxation.impl.TaxationPackageImpl#getExpense_Purpose()
5742 * @generated
5743 */
5744 int EXPENSE_PURPOSE = 68;
5745
5746 /**
5747 * The meta object id for the '{@link Taxation.Dependent_Type <em>Dependent Type</em>}' enum.
5748 * <!-- begin-user-doc -->
5749 * <!-- end-user-doc -->
5750 * @see Taxation.Dependent_Type
5751 * @see Taxation.impl.TaxationPackageImpl#getDependent_Type()
5752 * @generated
5753 */
5754 int DEPENDENT_TYPE = 69;
5755
5756 /**
5757 * The meta object id for the '{@link Taxation.Separation_Causes <em>Separation Causes</em>}' enum.
5758 * <!-- begin-user-doc -->
5759 * <!-- end-user-doc -->
5760 * @see Taxation.Separation_Causes
5761 * @see Taxation.impl.TaxationPackageImpl#getSeparation_Causes()
5762 * @generated
5763 */
5764 int SEPARATION_CAUSES = 70;
5765
5766 /**
5767 * The meta object id for the '{@link Taxation.Category_of_Permanent_Expense <em>Category of Permanent Expense</em>}' enum.
5768 * <!-- begin-user-doc -->
5769 * <!-- end-user-doc -->
5770 * @see Taxation.Category_of_Permanent_Expense
5771 * @see Taxation.impl.TaxationPackageImpl#getCategory_of_Permanent_Expense()
5772 * @generated
5773 */
5774 int CATEGORY_OF_PERMANENT_EXPENSE = 71;
5775
5776 /**
5777 * The meta object id for the '{@link Taxation.Category_of_Health_and_Pension_Insurances <em>Category of Health and Pension Insurances</em>}' enum.
5778 * <!-- begin-user-doc -->
5779 * <!-- end-user-doc -->
5780 * @see Taxation.Category_of_Health_and_Pension_Insurances
5781 * @see Taxation.impl.TaxationPackageImpl#getCategory_of_Health_and_Pension_Insurances()
5782 * @generated
5783 */
5784 int CATEGORY_OF_HEALTH_AND_PENSION_INSURANCES = 72;
5785
5786 /**
5787 * The meta object id for the '{@link Taxation.Category_of_Private_Insurance_and_Plan <em>Category of Private Insurance and Plan</em>}' enum.
5788 * <!-- begin-user-doc -->
5789 * <!-- end-user-doc -->
5790 * @see Taxation.Category_of_Private_Insurance_and_Plan
5791 * @see Taxation.impl.TaxationPackageImpl#getCategory_of_Private_Insurance_and_Plan()
5792 * @generated
5793 */
5794 int CATEGORY_OF_PRIVATE_INSURANCE_AND_PLAN = 73;
5795
5796 /**
5797 * The meta object id for the '{@link Taxation.Legal_Union_Types <em>Legal Union Types</em>}' enum.
5798 * <!-- begin-user-doc -->
5799 * <!-- end-user-doc -->
5800 * @see Taxation.Legal_Union_Types
5801 * @see Taxation.impl.TaxationPackageImpl#getLegal_Union_Types()
5802 * @generated
5803 */
5804 int LEGAL_UNION_TYPES = 74;
5805
5806
5807 /**
5808 * Returns the meta object for class '{@link Taxation.Constants <em>Constants</em>}'.
5809 * <!-- begin-user-doc -->
5810 * <!-- end-user-doc -->
5811 * @return the meta object for class '<em>Constants</em>'.
5812 * @see Taxation.Constants
5813 * @generated
5814 */
5815 EClass getConstants();
5816
5817 /**
5818 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD <em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>}'.
5819 * <!-- begin-user-doc -->
5820 * <!-- end-user-doc -->
5821 * @return the meta object for the attribute '<em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>'.
5822 * @see Taxation.Constants#getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD()
5823 * @see #getConstants()
5824 * @generated
5825 */
5826 EAttribute getConstants_MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD();
5827
5828 /**
5829 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE <em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>}'.
5830 * <!-- begin-user-doc -->
5831 * <!-- end-user-doc -->
5832 * @return the meta object for the attribute '<em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>'.
5833 * @see Taxation.Constants#getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE()
5834 * @see #getConstants()
5835 * @generated
5836 */
5837 EAttribute getConstants_MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE();
5838
5839 /**
5840 * Returns the meta object for the attribute '{@link Taxation.Constants#getMINIMUM_SALARY <em>MINIMUM SALARY</em>}'.
5841 * <!-- begin-user-doc -->
5842 * <!-- end-user-doc -->
5843 * @return the meta object for the attribute '<em>MINIMUM SALARY</em>'.
5844 * @see Taxation.Constants#getMINIMUM_SALARY()
5845 * @see #getConstants()
5846 * @generated
5847 */
5848 EAttribute getConstants_MINIMUM_SALARY();
5849
5850 /**
5851 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION <em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>}'.
5852 * <!-- begin-user-doc -->
5853 * <!-- end-user-doc -->
5854 * @return the meta object for the attribute '<em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>'.
5855 * @see Taxation.Constants#getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION()
5856 * @see #getConstants()
5857 * @generated
5858 */
5859 EAttribute getConstants_FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION();
5860
5861 /**
5862 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS <em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>}'.
5863 * <!-- begin-user-doc -->
5864 * <!-- end-user-doc -->
5865 * @return the meta object for the attribute '<em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>'.
5866 * @see Taxation.Constants#getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS()
5867 * @see #getConstants()
5868 * @generated
5869 */
5870 EAttribute getConstants_MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS();
5871
5872 /**
5873 * Returns the meta object for the attribute '{@link Taxation.Constants#getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS <em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>}'.
5874 * <!-- begin-user-doc -->
5875 * <!-- end-user-doc -->
5876 * @return the meta object for the attribute '<em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>'.
5877 * @see Taxation.Constants#getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS()
5878 * @see #getConstants()
5879 * @generated
5880 */
5881 EAttribute getConstants_MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS();
5882
5883 /**
5884 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>}'.
5885 * <!-- begin-user-doc -->
5886 * <!-- end-user-doc -->
5887 * @return the meta object for the attribute '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>'.
5888 * @see Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC()
5889 * @see #getConstants()
5890 * @generated
5891 */
5892 EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC();
5893
5894 /**
5895 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>}'.
5896 * <!-- begin-user-doc -->
5897 * <!-- end-user-doc -->
5898 * @return the meta object for the attribute '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>'.
5899 * @see Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE()
5900 * @see #getConstants()
5901 * @generated
5902 */
5903 EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE();
5904
5905 /**
5906 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}'.
5907 * <!-- begin-user-doc -->
5908 * <!-- end-user-doc -->
5909 * @return the meta object for the attribute '<em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>'.
5910 * @see Taxation.Constants#getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
5911 * @see #getConstants()
5912 * @generated
5913 */
5914 EAttribute getConstants_MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
5915
5916 /**
5917 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}'.
5918 * <!-- begin-user-doc -->
5919 * <!-- end-user-doc -->
5920 * @return the meta object for the attribute '<em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>'.
5921 * @see Taxation.Constants#getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
5922 * @see #getConstants()
5923 * @generated
5924 */
5925 EAttribute getConstants_MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
5926
5927 /**
5928 * Returns the meta object for the attribute '{@link Taxation.Constants#getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}'.
5929 * <!-- begin-user-doc -->
5930 * <!-- end-user-doc -->
5931 * @return the meta object for the attribute '<em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>'.
5932 * @see Taxation.Constants#getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
5933 * @see #getConstants()
5934 * @generated
5935 */
5936 EAttribute getConstants_MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
5937
5938 /**
5939 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIM_DAILY <em>FLAT RATE CIM DAILY</em>}'.
5940 * <!-- begin-user-doc -->
5941 * <!-- end-user-doc -->
5942 * @return the meta object for the attribute '<em>FLAT RATE CIM DAILY</em>'.
5943 * @see Taxation.Constants#getFLAT_RATE_CIM_DAILY()
5944 * @see #getConstants()
5945 * @generated
5946 */
5947 EAttribute getConstants_FLAT_RATE_CIM_DAILY();
5948
5949 /**
5950 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIM_MONTHLY <em>FLAT RATE CIM MONTHLY</em>}'.
5951 * <!-- begin-user-doc -->
5952 * <!-- end-user-doc -->
5953 * @return the meta object for the attribute '<em>FLAT RATE CIM MONTHLY</em>'.
5954 * @see Taxation.Constants#getFLAT_RATE_CIM_MONTHLY()
5955 * @see #getConstants()
5956 * @generated
5957 */
5958 EAttribute getConstants_FLAT_RATE_CIM_MONTHLY();
5959
5960 /**
5961 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIM_YEARLY <em>FLAT RATE CIM YEARLY</em>}'.
5962 * <!-- begin-user-doc -->
5963 * <!-- end-user-doc -->
5964 * @return the meta object for the attribute '<em>FLAT RATE CIM YEARLY</em>'.
5965 * @see Taxation.Constants#getFLAT_RATE_CIM_YEARLY()
5966 * @see #getConstants()
5967 * @generated
5968 */
5969 EAttribute getConstants_FLAT_RATE_CIM_YEARLY();
5970
5971 /**
5972 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIP_DAILY <em>FLAT RATE CIP DAILY</em>}'.
5973 * <!-- begin-user-doc -->
5974 * <!-- end-user-doc -->
5975 * @return the meta object for the attribute '<em>FLAT RATE CIP DAILY</em>'.
5976 * @see Taxation.Constants#getFLAT_RATE_CIP_DAILY()
5977 * @see #getConstants()
5978 * @generated
5979 */
5980 EAttribute getConstants_FLAT_RATE_CIP_DAILY();
5981
5982 /**
5983 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIP_MONTHLY <em>FLAT RATE CIP MONTHLY</em>}'.
5984 * <!-- begin-user-doc -->
5985 * <!-- end-user-doc -->
5986 * @return the meta object for the attribute '<em>FLAT RATE CIP MONTHLY</em>'.
5987 * @see Taxation.Constants#getFLAT_RATE_CIP_MONTHLY()
5988 * @see #getConstants()
5989 * @generated
5990 */
5991 EAttribute getConstants_FLAT_RATE_CIP_MONTHLY();
5992
5993 /**
5994 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIP_YEARLY <em>FLAT RATE CIP YEARLY</em>}'.
5995 * <!-- begin-user-doc -->
5996 * <!-- end-user-doc -->
5997 * @return the meta object for the attribute '<em>FLAT RATE CIP YEARLY</em>'.
5998 * @see Taxation.Constants#getFLAT_RATE_CIP_YEARLY()
5999 * @see #getConstants()
6000 * @generated
6001 */
6002 EAttribute getConstants_FLAT_RATE_CIP_YEARLY();
6003
6004 /**
6005 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIS_DAILY <em>FLAT RATE CIS DAILY</em>}'.
6006 * <!-- begin-user-doc -->
6007 * <!-- end-user-doc -->
6008 * @return the meta object for the attribute '<em>FLAT RATE CIS DAILY</em>'.
6009 * @see Taxation.Constants#getFLAT_RATE_CIS_DAILY()
6010 * @see #getConstants()
6011 * @generated
6012 */
6013 EAttribute getConstants_FLAT_RATE_CIS_DAILY();
6014
6015 /**
6016 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIS_MONTHLY <em>FLAT RATE CIS MONTHLY</em>}'.
6017 * <!-- begin-user-doc -->
6018 * <!-- end-user-doc -->
6019 * @return the meta object for the attribute '<em>FLAT RATE CIS MONTHLY</em>'.
6020 * @see Taxation.Constants#getFLAT_RATE_CIS_MONTHLY()
6021 * @see #getConstants()
6022 * @generated
6023 */
6024 EAttribute getConstants_FLAT_RATE_CIS_MONTHLY();
6025
6026 /**
6027 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_CIS_YEARLY <em>FLAT RATE CIS YEARLY</em>}'.
6028 * <!-- begin-user-doc -->
6029 * <!-- end-user-doc -->
6030 * @return the meta object for the attribute '<em>FLAT RATE CIS YEARLY</em>'.
6031 * @see Taxation.Constants#getFLAT_RATE_CIS_YEARLY()
6032 * @see #getConstants()
6033 * @generated
6034 */
6035 EAttribute getConstants_FLAT_RATE_CIS_YEARLY();
6036
6037 /**
6038 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT <em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>}'.
6039 * <!-- begin-user-doc -->
6040 * <!-- end-user-doc -->
6041 * @return the meta object for the attribute '<em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>'.
6042 * @see Taxation.Constants#getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT()
6043 * @see #getConstants()
6044 * @generated
6045 */
6046 EAttribute getConstants_FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT();
6047
6048 /**
6049 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS <em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>}'.
6050 * <!-- begin-user-doc -->
6051 * <!-- end-user-doc -->
6052 * @return the meta object for the attribute '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>'.
6053 * @see Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS()
6054 * @see #getConstants()
6055 * @generated
6056 */
6057 EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS();
6058
6059 /**
6060 * Returns the meta object for the attribute '{@link Taxation.Constants#getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}'.
6061 * <!-- begin-user-doc -->
6062 * <!-- end-user-doc -->
6063 * @return the meta object for the attribute '<em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>'.
6064 * @see Taxation.Constants#getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
6065 * @see #getConstants()
6066 * @generated
6067 */
6068 EAttribute getConstants_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
6069
6070 /**
6071 * Returns the meta object for the attribute '{@link Taxation.Constants#getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}'.
6072 * <!-- begin-user-doc -->
6073 * <!-- end-user-doc -->
6074 * @return the meta object for the attribute '<em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>'.
6075 * @see Taxation.Constants#getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
6076 * @see #getConstants()
6077 * @generated
6078 */
6079 EAttribute getConstants_DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
6080
6081 /**
6082 * Returns the meta object for the attribute '{@link Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>}'.
6083 * <!-- begin-user-doc -->
6084 * <!-- end-user-doc -->
6085 * @return the meta object for the attribute '<em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>'.
6086 * @see Taxation.Constants#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE()
6087 * @see #getConstants()
6088 * @generated
6089 */
6090 EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE();
6091
6092 /**
6093 * Returns the meta object for class '{@link Taxation.Income_Tax <em>Income Tax</em>}'.
6094 * <!-- begin-user-doc -->
6095 * <!-- end-user-doc -->
6096 * @return the meta object for class '<em>Income Tax</em>'.
6097 * @see Taxation.Income_Tax
6098 * @generated
6099 */
6100 EClass getIncome_Tax();
6101
6102 /**
6103 * Returns the meta object for the reference '{@link Taxation.Income_Tax#getTaxPayer <em>Tax Payer</em>}'.
6104 * <!-- begin-user-doc -->
6105 * <!-- end-user-doc -->
6106 * @return the meta object for the reference '<em>Tax Payer</em>'.
6107 * @see Taxation.Income_Tax#getTaxPayer()
6108 * @see #getIncome_Tax()
6109 * @generated
6110 */
6111 EReference getIncome_Tax_TaxPayer();
6112
6113 /**
6114 * Returns the meta object for the attribute '{@link Taxation.Income_Tax#getTax_amount <em>Tax amount</em>}'.
6115 * <!-- begin-user-doc -->
6116 * <!-- end-user-doc -->
6117 * @return the meta object for the attribute '<em>Tax amount</em>'.
6118 * @see Taxation.Income_Tax#getTax_amount()
6119 * @see #getIncome_Tax()
6120 * @generated
6121 */
6122 EAttribute getIncome_Tax_Tax_amount();
6123
6124 /**
6125 * Returns the meta object for the attribute '{@link Taxation.Income_Tax#getTax_year <em>Tax year</em>}'.
6126 * <!-- begin-user-doc -->
6127 * <!-- end-user-doc -->
6128 * @return the meta object for the attribute '<em>Tax year</em>'.
6129 * @see Taxation.Income_Tax#getTax_year()
6130 * @see #getIncome_Tax()
6131 * @generated
6132 */
6133 EAttribute getIncome_Tax_Tax_year();
6134
6135 /**
6136 * Returns the meta object for the attribute '{@link Taxation.Income_Tax#getId6 <em>Id6</em>}'.
6137 * <!-- begin-user-doc -->
6138 * <!-- end-user-doc -->
6139 * @return the meta object for the attribute '<em>Id6</em>'.
6140 * @see Taxation.Income_Tax#getId6()
6141 * @see #getIncome_Tax()
6142 * @generated
6143 */
6144 EAttribute getIncome_Tax_Id6();
6145
6146 /**
6147 * Returns the meta object for class '{@link Taxation.Tax_Payer <em>Tax Payer</em>}'.
6148 * <!-- begin-user-doc -->
6149 * <!-- end-user-doc -->
6150 * @return the meta object for class '<em>Tax Payer</em>'.
6151 * @see Taxation.Tax_Payer
6152 * @generated
6153 */
6154 EClass getTax_Payer();
6155
6156 /**
6157 * Returns the meta object for the containment reference list '{@link Taxation.Tax_Payer#getDependents <em>Dependents</em>}'.
6158 * <!-- begin-user-doc -->
6159 * <!-- end-user-doc -->
6160 * @return the meta object for the containment reference list '<em>Dependents</em>'.
6161 * @see Taxation.Tax_Payer#getDependents()
6162 * @see #getTax_Payer()
6163 * @generated
6164 */
6165 EReference getTax_Payer_Dependents();
6166
6167 /**
6168 * Returns the meta object for the containment reference '{@link Taxation.Tax_Payer#getFrom_agent <em>From agent</em>}'.
6169 * <!-- begin-user-doc -->
6170 * <!-- end-user-doc -->
6171 * @return the meta object for the containment reference '<em>From agent</em>'.
6172 * @see Taxation.Tax_Payer#getFrom_agent()
6173 * @see #getTax_Payer()
6174 * @generated
6175 */
6176 EReference getTax_Payer_From_agent();
6177
6178 /**
6179 * Returns the meta object for the containment reference list '{@link Taxation.Tax_Payer#getIncomes <em>Incomes</em>}'.
6180 * <!-- begin-user-doc -->
6181 * <!-- end-user-doc -->
6182 * @return the meta object for the containment reference list '<em>Incomes</em>'.
6183 * @see Taxation.Tax_Payer#getIncomes()
6184 * @see #getTax_Payer()
6185 * @generated
6186 */
6187 EReference getTax_Payer_Incomes();
6188
6189 /**
6190 * Returns the meta object for the containment reference '{@link Taxation.Tax_Payer#getFrom_law <em>From law</em>}'.
6191 * <!-- begin-user-doc -->
6192 * <!-- end-user-doc -->
6193 * @return the meta object for the containment reference '<em>From law</em>'.
6194 * @see Taxation.Tax_Payer#getFrom_law()
6195 * @see #getTax_Payer()
6196 * @generated
6197 */
6198 EReference getTax_Payer_From_law();
6199
6200 /**
6201 * Returns the meta object for the attribute '{@link Taxation.Tax_Payer#getTaxesDue <em>Taxes Due</em>}'.
6202 * <!-- begin-user-doc -->
6203 * <!-- end-user-doc -->
6204 * @return the meta object for the attribute '<em>Taxes Due</em>'.
6205 * @see Taxation.Tax_Payer#getTaxesDue()
6206 * @see #getTax_Payer()
6207 * @generated
6208 */
6209 EAttribute getTax_Payer_TaxesDue();
6210
6211 /**
6212 * Returns the meta object for class '{@link Taxation.Physical_Person <em>Physical Person</em>}'.
6213 * <!-- begin-user-doc -->
6214 * <!-- end-user-doc -->
6215 * @return the meta object for class '<em>Physical Person</em>'.
6216 * @see Taxation.Physical_Person
6217 * @generated
6218 */
6219 EClass getPhysical_Person();
6220
6221 /**
6222 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#isIs_assisting_spouse <em>Is assisting spouse</em>}'.
6223 * <!-- begin-user-doc -->
6224 * <!-- end-user-doc -->
6225 * @return the meta object for the attribute '<em>Is assisting spouse</em>'.
6226 * @see Taxation.Physical_Person#isIs_assisting_spouse()
6227 * @see #getPhysical_Person()
6228 * @generated
6229 */
6230 EAttribute getPhysical_Person_Is_assisting_spouse();
6231
6232 /**
6233 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#getSSNo <em>SS No</em>}'.
6234 * <!-- begin-user-doc -->
6235 * <!-- end-user-doc -->
6236 * @return the meta object for the attribute '<em>SS No</em>'.
6237 * @see Taxation.Physical_Person#getSSNo()
6238 * @see #getPhysical_Person()
6239 * @generated
6240 */
6241 EAttribute getPhysical_Person_SSNo();
6242
6243 /**
6244 * Returns the meta object for the reference list '{@link Taxation.Physical_Person#getAddresses <em>Addresses</em>}'.
6245 * <!-- begin-user-doc -->
6246 * <!-- end-user-doc -->
6247 * @return the meta object for the reference list '<em>Addresses</em>'.
6248 * @see Taxation.Physical_Person#getAddresses()
6249 * @see #getPhysical_Person()
6250 * @generated
6251 */
6252 EReference getPhysical_Person_Addresses();
6253
6254 /**
6255 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#getBirth_year <em>Birth year</em>}'.
6256 * <!-- begin-user-doc -->
6257 * <!-- end-user-doc -->
6258 * @return the meta object for the attribute '<em>Birth year</em>'.
6259 * @see Taxation.Physical_Person#getBirth_year()
6260 * @see #getPhysical_Person()
6261 * @generated
6262 */
6263 EAttribute getPhysical_Person_Birth_year();
6264
6265 /**
6266 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#getDisability_percentage <em>Disability percentage</em>}'.
6267 * <!-- begin-user-doc -->
6268 * <!-- end-user-doc -->
6269 * @return the meta object for the attribute '<em>Disability percentage</em>'.
6270 * @see Taxation.Physical_Person#getDisability_percentage()
6271 * @see #getPhysical_Person()
6272 * @generated
6273 */
6274 EAttribute getPhysical_Person_Disability_percentage();
6275
6276 /**
6277 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#getDisability_type <em>Disability type</em>}'.
6278 * <!-- begin-user-doc -->
6279 * <!-- end-user-doc -->
6280 * @return the meta object for the attribute '<em>Disability type</em>'.
6281 * @see Taxation.Physical_Person#getDisability_type()
6282 * @see #getPhysical_Person()
6283 * @generated
6284 */
6285 EAttribute getPhysical_Person_Disability_type();
6286
6287 /**
6288 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#isIs_affiliated_personnaly_to_social_security <em>Is affiliated personnaly to social security</em>}'.
6289 * <!-- begin-user-doc -->
6290 * <!-- end-user-doc -->
6291 * @return the meta object for the attribute '<em>Is affiliated personnaly to social security</em>'.
6292 * @see Taxation.Physical_Person#isIs_affiliated_personnaly_to_social_security()
6293 * @see #getPhysical_Person()
6294 * @generated
6295 */
6296 EAttribute getPhysical_Person_Is_affiliated_personnaly_to_social_security();
6297
6298 /**
6299 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#getBirth_month <em>Birth month</em>}'.
6300 * <!-- begin-user-doc -->
6301 * <!-- end-user-doc -->
6302 * @return the meta object for the attribute '<em>Birth month</em>'.
6303 * @see Taxation.Physical_Person#getBirth_month()
6304 * @see #getPhysical_Person()
6305 * @generated
6306 */
6307 EAttribute getPhysical_Person_Birth_month();
6308
6309 /**
6310 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#getBirth_day <em>Birth day</em>}'.
6311 * <!-- begin-user-doc -->
6312 * <!-- end-user-doc -->
6313 * @return the meta object for the attribute '<em>Birth day</em>'.
6314 * @see Taxation.Physical_Person#getBirth_day()
6315 * @see #getPhysical_Person()
6316 * @generated
6317 */
6318 EAttribute getPhysical_Person_Birth_day();
6319
6320 /**
6321 * Returns the meta object for the reference list '{@link Taxation.Physical_Person#getExpenses <em>Expenses</em>}'.
6322 * <!-- begin-user-doc -->
6323 * <!-- end-user-doc -->
6324 * @return the meta object for the reference list '<em>Expenses</em>'.
6325 * @see Taxation.Physical_Person#getExpenses()
6326 * @see #getPhysical_Person()
6327 * @generated
6328 */
6329 EReference getPhysical_Person_Expenses();
6330
6331 /**
6332 * Returns the meta object for the attribute '{@link Taxation.Physical_Person#isIs_widower <em>Is widower</em>}'.
6333 * <!-- begin-user-doc -->
6334 * <!-- end-user-doc -->
6335 * @return the meta object for the attribute '<em>Is widower</em>'.
6336 * @see Taxation.Physical_Person#isIs_widower()
6337 * @see #getPhysical_Person()
6338 * @generated
6339 */
6340 EAttribute getPhysical_Person_Is_widower();
6341
6342 /**
6343 * Returns the meta object for the containment reference list '{@link Taxation.Physical_Person#getOwns_Address <em>Owns Address</em>}'.
6344 * <!-- begin-user-doc -->
6345 * <!-- end-user-doc -->
6346 * @return the meta object for the containment reference list '<em>Owns Address</em>'.
6347 * @see Taxation.Physical_Person#getOwns_Address()
6348 * @see #getPhysical_Person()
6349 * @generated
6350 */
6351 EReference getPhysical_Person_Owns_Address();
6352
6353 /**
6354 * Returns the meta object for class '{@link Taxation.Address <em>Address</em>}'.
6355 * <!-- begin-user-doc -->
6356 * <!-- end-user-doc -->
6357 * @return the meta object for class '<em>Address</em>'.
6358 * @see Taxation.Address
6359 * @generated
6360 */
6361 EClass getAddress();
6362
6363 /**
6364 * Returns the meta object for the attribute '{@link Taxation.Address#getCountry <em>Country</em>}'.
6365 * <!-- begin-user-doc -->
6366 * <!-- end-user-doc -->
6367 * @return the meta object for the attribute '<em>Country</em>'.
6368 * @see Taxation.Address#getCountry()
6369 * @see #getAddress()
6370 * @generated
6371 */
6372 EAttribute getAddress_Country();
6373
6374 /**
6375 * Returns the meta object for the attribute '{@link Taxation.Address#getStreet <em>Street</em>}'.
6376 * <!-- begin-user-doc -->
6377 * <!-- end-user-doc -->
6378 * @return the meta object for the attribute '<em>Street</em>'.
6379 * @see Taxation.Address#getStreet()
6380 * @see #getAddress()
6381 * @generated
6382 */
6383 EAttribute getAddress_Street();
6384
6385 /**
6386 * Returns the meta object for the attribute '{@link Taxation.Address#getZipCode <em>Zip Code</em>}'.
6387 * <!-- begin-user-doc -->
6388 * <!-- end-user-doc -->
6389 * @return the meta object for the attribute '<em>Zip Code</em>'.
6390 * @see Taxation.Address#getZipCode()
6391 * @see #getAddress()
6392 * @generated
6393 */
6394 EAttribute getAddress_ZipCode();
6395
6396 /**
6397 * Returns the meta object for the attribute '{@link Taxation.Address#getCity <em>City</em>}'.
6398 * <!-- begin-user-doc -->
6399 * <!-- end-user-doc -->
6400 * @return the meta object for the attribute '<em>City</em>'.
6401 * @see Taxation.Address#getCity()
6402 * @see #getAddress()
6403 * @generated
6404 */
6405 EAttribute getAddress_City();
6406
6407 /**
6408 * Returns the meta object for the attribute '{@link Taxation.Address#getId2 <em>Id2</em>}'.
6409 * <!-- begin-user-doc -->
6410 * <!-- end-user-doc -->
6411 * @return the meta object for the attribute '<em>Id2</em>'.
6412 * @see Taxation.Address#getId2()
6413 * @see #getAddress()
6414 * @generated
6415 */
6416 EAttribute getAddress_Id2();
6417
6418 /**
6419 * Returns the meta object for the reference list '{@link Taxation.Address#getTaxPayer <em>Tax Payer</em>}'.
6420 * <!-- begin-user-doc -->
6421 * <!-- end-user-doc -->
6422 * @return the meta object for the reference list '<em>Tax Payer</em>'.
6423 * @see Taxation.Address#getTaxPayer()
6424 * @see #getAddress()
6425 * @generated
6426 */
6427 EReference getAddress_TaxPayer();
6428
6429 /**
6430 * Returns the meta object for class '{@link Taxation.Expense <em>Expense</em>}'.
6431 * <!-- begin-user-doc -->
6432 * <!-- end-user-doc -->
6433 * @return the meta object for class '<em>Expense</em>'.
6434 * @see Taxation.Expense
6435 * @generated
6436 */
6437 EClass getExpense();
6438
6439 /**
6440 * Returns the meta object for the attribute '{@link Taxation.Expense#getDeclared_amount <em>Declared amount</em>}'.
6441 * <!-- begin-user-doc -->
6442 * <!-- end-user-doc -->
6443 * @return the meta object for the attribute '<em>Declared amount</em>'.
6444 * @see Taxation.Expense#getDeclared_amount()
6445 * @see #getExpense()
6446 * @generated
6447 */
6448 EAttribute getExpense_Declared_amount();
6449
6450 /**
6451 * Returns the meta object for the attribute '{@link Taxation.Expense#getExpense_purpose <em>Expense purpose</em>}'.
6452 * <!-- begin-user-doc -->
6453 * <!-- end-user-doc -->
6454 * @return the meta object for the attribute '<em>Expense purpose</em>'.
6455 * @see Taxation.Expense#getExpense_purpose()
6456 * @see #getExpense()
6457 * @generated
6458 */
6459 EAttribute getExpense_Expense_purpose();
6460
6461 /**
6462 * Returns the meta object for the reference '{@link Taxation.Expense#getDependent <em>Dependent</em>}'.
6463 * <!-- begin-user-doc -->
6464 * <!-- end-user-doc -->
6465 * @return the meta object for the reference '<em>Dependent</em>'.
6466 * @see Taxation.Expense#getDependent()
6467 * @see #getExpense()
6468 * @generated
6469 */
6470 EReference getExpense_Dependent();
6471
6472 /**
6473 * Returns the meta object for the reference '{@link Taxation.Expense#getFrom_agent <em>From agent</em>}'.
6474 * <!-- begin-user-doc -->
6475 * <!-- end-user-doc -->
6476 * @return the meta object for the reference '<em>From agent</em>'.
6477 * @see Taxation.Expense#getFrom_agent()
6478 * @see #getExpense()
6479 * @generated
6480 */
6481 EReference getExpense_From_agent();
6482
6483 /**
6484 * Returns the meta object for the container reference '{@link Taxation.Expense#getIncome <em>Income</em>}'.
6485 * <!-- begin-user-doc -->
6486 * <!-- end-user-doc -->
6487 * @return the meta object for the container reference '<em>Income</em>'.
6488 * @see Taxation.Expense#getIncome()
6489 * @see #getExpense()
6490 * @generated
6491 */
6492 EReference getExpense_Income();
6493
6494 /**
6495 * Returns the meta object for the attribute '{@link Taxation.Expense#getId4 <em>Id4</em>}'.
6496 * <!-- begin-user-doc -->
6497 * <!-- end-user-doc -->
6498 * @return the meta object for the attribute '<em>Id4</em>'.
6499 * @see Taxation.Expense#getId4()
6500 * @see #getExpense()
6501 * @generated
6502 */
6503 EAttribute getExpense_Id4();
6504
6505 /**
6506 * Returns the meta object for the reference '{@link Taxation.Expense#getBeneficiary <em>Beneficiary</em>}'.
6507 * <!-- begin-user-doc -->
6508 * <!-- end-user-doc -->
6509 * @return the meta object for the reference '<em>Beneficiary</em>'.
6510 * @see Taxation.Expense#getBeneficiary()
6511 * @see #getExpense()
6512 * @generated
6513 */
6514 EReference getExpense_Beneficiary();
6515
6516 /**
6517 * Returns the meta object for class '{@link Taxation.Dependent <em>Dependent</em>}'.
6518 * <!-- begin-user-doc -->
6519 * <!-- end-user-doc -->
6520 * @return the meta object for class '<em>Dependent</em>'.
6521 * @see Taxation.Dependent
6522 * @generated
6523 */
6524 EClass getDependent();
6525
6526 /**
6527 * Returns the meta object for the attribute '{@link Taxation.Dependent#getDependent_type <em>Dependent type</em>}'.
6528 * <!-- begin-user-doc -->
6529 * <!-- end-user-doc -->
6530 * @return the meta object for the attribute '<em>Dependent type</em>'.
6531 * @see Taxation.Dependent#getDependent_type()
6532 * @see #getDependent()
6533 * @generated
6534 */
6535 EAttribute getDependent_Dependent_type();
6536
6537 /**
6538 * Returns the meta object for the container reference '{@link Taxation.Dependent#getResponsible_person <em>Responsible person</em>}'.
6539 * <!-- begin-user-doc -->
6540 * <!-- end-user-doc -->
6541 * @return the meta object for the container reference '<em>Responsible person</em>'.
6542 * @see Taxation.Dependent#getResponsible_person()
6543 * @see #getDependent()
6544 * @generated
6545 */
6546 EReference getDependent_Responsible_person();
6547
6548 /**
6549 * Returns the meta object for the attribute '{@link Taxation.Dependent#isContinued_studies <em>Continued studies</em>}'.
6550 * <!-- begin-user-doc -->
6551 * <!-- end-user-doc -->
6552 * @return the meta object for the attribute '<em>Continued studies</em>'.
6553 * @see Taxation.Dependent#isContinued_studies()
6554 * @see #getDependent()
6555 * @generated
6556 */
6557 EAttribute getDependent_Continued_studies();
6558
6559 /**
6560 * Returns the meta object for the containment reference '{@link Taxation.Dependent#getAllowances <em>Allowances</em>}'.
6561 * <!-- begin-user-doc -->
6562 * <!-- end-user-doc -->
6563 * @return the meta object for the containment reference '<em>Allowances</em>'.
6564 * @see Taxation.Dependent#getAllowances()
6565 * @see #getDependent()
6566 * @generated
6567 */
6568 EReference getDependent_Allowances();
6569
6570 /**
6571 * Returns the meta object for the container reference '{@link Taxation.Dependent#getHousehold <em>Household</em>}'.
6572 * <!-- begin-user-doc -->
6573 * <!-- end-user-doc -->
6574 * @return the meta object for the container reference '<em>Household</em>'.
6575 * @see Taxation.Dependent#getHousehold()
6576 * @see #getDependent()
6577 * @generated
6578 */
6579 EReference getDependent_Household();
6580
6581 /**
6582 * Returns the meta object for the reference '{@link Taxation.Dependent#getFrom_agent <em>From agent</em>}'.
6583 * <!-- begin-user-doc -->
6584 * <!-- end-user-doc -->
6585 * @return the meta object for the reference '<em>From agent</em>'.
6586 * @see Taxation.Dependent#getFrom_agent()
6587 * @see #getDependent()
6588 * @generated
6589 */
6590 EReference getDependent_From_agent();
6591
6592 /**
6593 * Returns the meta object for the reference list '{@link Taxation.Dependent#getExpense <em>Expense</em>}'.
6594 * <!-- begin-user-doc -->
6595 * <!-- end-user-doc -->
6596 * @return the meta object for the reference list '<em>Expense</em>'.
6597 * @see Taxation.Dependent#getExpense()
6598 * @see #getDependent()
6599 * @generated
6600 */
6601 EReference getDependent_Expense();
6602
6603 /**
6604 * Returns the meta object for class '{@link Taxation.External_Allowance <em>External Allowance</em>}'.
6605 * <!-- begin-user-doc -->
6606 * <!-- end-user-doc -->
6607 * @return the meta object for class '<em>External Allowance</em>'.
6608 * @see Taxation.External_Allowance
6609 * @generated
6610 */
6611 EClass getExternal_Allowance();
6612
6613 /**
6614 * Returns the meta object for the attribute '{@link Taxation.External_Allowance#getAmount <em>Amount</em>}'.
6615 * <!-- begin-user-doc -->
6616 * <!-- end-user-doc -->
6617 * @return the meta object for the attribute '<em>Amount</em>'.
6618 * @see Taxation.External_Allowance#getAmount()
6619 * @see #getExternal_Allowance()
6620 * @generated
6621 */
6622 EAttribute getExternal_Allowance_Amount();
6623
6624 /**
6625 * Returns the meta object for the attribute '{@link Taxation.External_Allowance#getGrantor <em>Grantor</em>}'.
6626 * <!-- begin-user-doc -->
6627 * <!-- end-user-doc -->
6628 * @return the meta object for the attribute '<em>Grantor</em>'.
6629 * @see Taxation.External_Allowance#getGrantor()
6630 * @see #getExternal_Allowance()
6631 * @generated
6632 */
6633 EAttribute getExternal_Allowance_Grantor();
6634
6635 /**
6636 * Returns the meta object for the attribute '{@link Taxation.External_Allowance#getStarting_year <em>Starting year</em>}'.
6637 * <!-- begin-user-doc -->
6638 * <!-- end-user-doc -->
6639 * @return the meta object for the attribute '<em>Starting year</em>'.
6640 * @see Taxation.External_Allowance#getStarting_year()
6641 * @see #getExternal_Allowance()
6642 * @generated
6643 */
6644 EAttribute getExternal_Allowance_Starting_year();
6645
6646 /**
6647 * Returns the meta object for the attribute '{@link Taxation.External_Allowance#getEnding_year <em>Ending year</em>}'.
6648 * <!-- begin-user-doc -->
6649 * <!-- end-user-doc -->
6650 * @return the meta object for the attribute '<em>Ending year</em>'.
6651 * @see Taxation.External_Allowance#getEnding_year()
6652 * @see #getExternal_Allowance()
6653 * @generated
6654 */
6655 EAttribute getExternal_Allowance_Ending_year();
6656
6657 /**
6658 * Returns the meta object for the reference '{@link Taxation.External_Allowance#getReciver <em>Reciver</em>}'.
6659 * <!-- begin-user-doc -->
6660 * <!-- end-user-doc -->
6661 * @return the meta object for the reference '<em>Reciver</em>'.
6662 * @see Taxation.External_Allowance#getReciver()
6663 * @see #getExternal_Allowance()
6664 * @generated
6665 */
6666 EReference getExternal_Allowance_Reciver();
6667
6668 /**
6669 * Returns the meta object for the attribute '{@link Taxation.External_Allowance#getId5 <em>Id5</em>}'.
6670 * <!-- begin-user-doc -->
6671 * <!-- end-user-doc -->
6672 * @return the meta object for the attribute '<em>Id5</em>'.
6673 * @see Taxation.External_Allowance#getId5()
6674 * @see #getExternal_Allowance()
6675 * @generated
6676 */
6677 EAttribute getExternal_Allowance_Id5();
6678
6679 /**
6680 * Returns the meta object for the container reference '{@link Taxation.External_Allowance#getPerson <em>Person</em>}'.
6681 * <!-- begin-user-doc -->
6682 * <!-- end-user-doc -->
6683 * @return the meta object for the container reference '<em>Person</em>'.
6684 * @see Taxation.External_Allowance#getPerson()
6685 * @see #getExternal_Allowance()
6686 * @generated
6687 */
6688 EReference getExternal_Allowance_Person();
6689
6690 /**
6691 * Returns the meta object for class '{@link Taxation.Household <em>Household</em>}'.
6692 * <!-- begin-user-doc -->
6693 * <!-- end-user-doc -->
6694 * @return the meta object for class '<em>Household</em>'.
6695 * @see Taxation.Household
6696 * @generated
6697 */
6698 EClass getHousehold();
6699
6700 /**
6701 * Returns the meta object for the containment reference '{@link Taxation.Household#getParents <em>Parents</em>}'.
6702 * <!-- begin-user-doc -->
6703 * <!-- end-user-doc -->
6704 * @return the meta object for the containment reference '<em>Parents</em>'.
6705 * @see Taxation.Household#getParents()
6706 * @see #getHousehold()
6707 * @generated
6708 */
6709 EReference getHousehold_Parents();
6710
6711 /**
6712 * Returns the meta object for the attribute '{@link Taxation.Household#getId1 <em>Id1</em>}'.
6713 * <!-- begin-user-doc -->
6714 * <!-- end-user-doc -->
6715 * @return the meta object for the attribute '<em>Id1</em>'.
6716 * @see Taxation.Household#getId1()
6717 * @see #getHousehold()
6718 * @generated
6719 */
6720 EAttribute getHousehold_Id1();
6721
6722 /**
6723 * Returns the meta object for the containment reference list '{@link Taxation.Household#getChildren <em>Children</em>}'.
6724 * <!-- begin-user-doc -->
6725 * <!-- end-user-doc -->
6726 * @return the meta object for the containment reference list '<em>Children</em>'.
6727 * @see Taxation.Household#getChildren()
6728 * @see #getHousehold()
6729 * @generated
6730 */
6731 EReference getHousehold_Children();
6732
6733 /**
6734 * Returns the meta object for class '{@link Taxation.Legal_Union_Record <em>Legal Union Record</em>}'.
6735 * <!-- begin-user-doc -->
6736 * <!-- end-user-doc -->
6737 * @return the meta object for class '<em>Legal Union Record</em>'.
6738 * @see Taxation.Legal_Union_Record
6739 * @generated
6740 */
6741 EClass getLegal_Union_Record();
6742
6743 /**
6744 * Returns the meta object for the attribute '{@link Taxation.Legal_Union_Record#getStart_year <em>Start year</em>}'.
6745 * <!-- begin-user-doc -->
6746 * <!-- end-user-doc -->
6747 * @return the meta object for the attribute '<em>Start year</em>'.
6748 * @see Taxation.Legal_Union_Record#getStart_year()
6749 * @see #getLegal_Union_Record()
6750 * @generated
6751 */
6752 EAttribute getLegal_Union_Record_Start_year();
6753
6754 /**
6755 * Returns the meta object for the attribute '{@link Taxation.Legal_Union_Record#getEnd_year <em>End year</em>}'.
6756 * <!-- begin-user-doc -->
6757 * <!-- end-user-doc -->
6758 * @return the meta object for the attribute '<em>End year</em>'.
6759 * @see Taxation.Legal_Union_Record#getEnd_year()
6760 * @see #getLegal_Union_Record()
6761 * @generated
6762 */
6763 EAttribute getLegal_Union_Record_End_year();
6764
6765 /**
6766 * Returns the meta object for the attribute '{@link Taxation.Legal_Union_Record#getSeparation_cause <em>Separation cause</em>}'.
6767 * <!-- begin-user-doc -->
6768 * <!-- end-user-doc -->
6769 * @return the meta object for the attribute '<em>Separation cause</em>'.
6770 * @see Taxation.Legal_Union_Record#getSeparation_cause()
6771 * @see #getLegal_Union_Record()
6772 * @generated
6773 */
6774 EAttribute getLegal_Union_Record_Separation_cause();
6775
6776 /**
6777 * Returns the meta object for the containment reference '{@link Taxation.Legal_Union_Record#getIndividual_A <em>Individual A</em>}'.
6778 * <!-- begin-user-doc -->
6779 * <!-- end-user-doc -->
6780 * @return the meta object for the containment reference '<em>Individual A</em>'.
6781 * @see Taxation.Legal_Union_Record#getIndividual_A()
6782 * @see #getLegal_Union_Record()
6783 * @generated
6784 */
6785 EReference getLegal_Union_Record_Individual_A();
6786
6787 /**
6788 * Returns the meta object for the containment reference list '{@link Taxation.Legal_Union_Record#getIndividual_B <em>Individual B</em>}'.
6789 * <!-- begin-user-doc -->
6790 * <!-- end-user-doc -->
6791 * @return the meta object for the containment reference list '<em>Individual B</em>'.
6792 * @see Taxation.Legal_Union_Record#getIndividual_B()
6793 * @see #getLegal_Union_Record()
6794 * @generated
6795 */
6796 EReference getLegal_Union_Record_Individual_B();
6797
6798 /**
6799 * Returns the meta object for the containment reference list '{@link Taxation.Legal_Union_Record#getProperties <em>Properties</em>}'.
6800 * <!-- begin-user-doc -->
6801 * <!-- end-user-doc -->
6802 * @return the meta object for the containment reference list '<em>Properties</em>'.
6803 * @see Taxation.Legal_Union_Record#getProperties()
6804 * @see #getLegal_Union_Record()
6805 * @generated
6806 */
6807 EReference getLegal_Union_Record_Properties();
6808
6809 /**
6810 * Returns the meta object for the attribute '{@link Taxation.Legal_Union_Record#isMutual_agreement <em>Mutual agreement</em>}'.
6811 * <!-- begin-user-doc -->
6812 * <!-- end-user-doc -->
6813 * @return the meta object for the attribute '<em>Mutual agreement</em>'.
6814 * @see Taxation.Legal_Union_Record#isMutual_agreement()
6815 * @see #getLegal_Union_Record()
6816 * @generated
6817 */
6818 EAttribute getLegal_Union_Record_Mutual_agreement();
6819
6820 /**
6821 * Returns the meta object for the attribute '{@link Taxation.Legal_Union_Record#getId9 <em>Id9</em>}'.
6822 * <!-- begin-user-doc -->
6823 * <!-- end-user-doc -->
6824 * @return the meta object for the attribute '<em>Id9</em>'.
6825 * @see Taxation.Legal_Union_Record#getId9()
6826 * @see #getLegal_Union_Record()
6827 * @generated
6828 */
6829 EAttribute getLegal_Union_Record_Id9();
6830
6831 /**
6832 * Returns the meta object for the container reference '{@link Taxation.Legal_Union_Record#getHousehold <em>Household</em>}'.
6833 * <!-- begin-user-doc -->
6834 * <!-- end-user-doc -->
6835 * @return the meta object for the container reference '<em>Household</em>'.
6836 * @see Taxation.Legal_Union_Record#getHousehold()
6837 * @see #getLegal_Union_Record()
6838 * @generated
6839 */
6840 EReference getLegal_Union_Record_Household();
6841
6842 /**
6843 * Returns the meta object for class '{@link Taxation.Tax_Property <em>Tax Property</em>}'.
6844 * <!-- begin-user-doc -->
6845 * <!-- end-user-doc -->
6846 * @return the meta object for class '<em>Tax Property</em>'.
6847 * @see Taxation.Tax_Property
6848 * @generated
6849 */
6850 EClass getTax_Property();
6851
6852 /**
6853 * Returns the meta object for the attribute '{@link Taxation.Tax_Property#getStarting_year <em>Starting year</em>}'.
6854 * <!-- begin-user-doc -->
6855 * <!-- end-user-doc -->
6856 * @return the meta object for the attribute '<em>Starting year</em>'.
6857 * @see Taxation.Tax_Property#getStarting_year()
6858 * @see #getTax_Property()
6859 * @generated
6860 */
6861 EAttribute getTax_Property_Starting_year();
6862
6863 /**
6864 * Returns the meta object for the attribute '{@link Taxation.Tax_Property#getId10 <em>Id10</em>}'.
6865 * <!-- begin-user-doc -->
6866 * <!-- end-user-doc -->
6867 * @return the meta object for the attribute '<em>Id10</em>'.
6868 * @see Taxation.Tax_Property#getId10()
6869 * @see #getTax_Property()
6870 * @generated
6871 */
6872 EAttribute getTax_Property_Id10();
6873
6874 /**
6875 * Returns the meta object for the container reference '{@link Taxation.Tax_Property#getUnion_record <em>Union record</em>}'.
6876 * <!-- begin-user-doc -->
6877 * <!-- end-user-doc -->
6878 * @return the meta object for the container reference '<em>Union record</em>'.
6879 * @see Taxation.Tax_Property#getUnion_record()
6880 * @see #getTax_Property()
6881 * @generated
6882 */
6883 EReference getTax_Property_Union_record();
6884
6885 /**
6886 * Returns the meta object for class '{@link Taxation.Tax_Case <em>Tax Case</em>}'.
6887 * <!-- begin-user-doc -->
6888 * <!-- end-user-doc -->
6889 * @return the meta object for class '<em>Tax Case</em>'.
6890 * @see Taxation.Tax_Case
6891 * @generated
6892 */
6893 EClass getTax_Case();
6894
6895 /**
6896 * Returns the meta object for class '{@link Taxation.FromAgent <em>From Agent</em>}'.
6897 * <!-- begin-user-doc -->
6898 * <!-- end-user-doc -->
6899 * @return the meta object for class '<em>From Agent</em>'.
6900 * @see Taxation.FromAgent
6901 * @generated
6902 */
6903 EClass getFromAgent();
6904
6905 /**
6906 * Returns the meta object for the container reference '{@link Taxation.FromAgent#getTaxPayer <em>Tax Payer</em>}'.
6907 * <!-- begin-user-doc -->
6908 * <!-- end-user-doc -->
6909 * @return the meta object for the container reference '<em>Tax Payer</em>'.
6910 * @see Taxation.FromAgent#getTaxPayer()
6911 * @see #getFromAgent()
6912 * @generated
6913 */
6914 EReference getFromAgent_TaxPayer();
6915
6916 /**
6917 * Returns the meta object for the attribute '{@link Taxation.FromAgent#isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care <em>Is dependent eligible for CE Not In Houshold Children Care</em>}'.
6918 * <!-- begin-user-doc -->
6919 * <!-- end-user-doc -->
6920 * @return the meta object for the attribute '<em>Is dependent eligible for CE Not In Houshold Children Care</em>'.
6921 * @see Taxation.FromAgent#isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care()
6922 * @see #getFromAgent()
6923 * @generated
6924 */
6925 EAttribute getFromAgent_Is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care();
6926
6927 /**
6928 * Returns the meta object for the reference '{@link Taxation.FromAgent#getExpense <em>Expense</em>}'.
6929 * <!-- begin-user-doc -->
6930 * <!-- end-user-doc -->
6931 * @return the meta object for the reference '<em>Expense</em>'.
6932 * @see Taxation.FromAgent#getExpense()
6933 * @see #getFromAgent()
6934 * @generated
6935 */
6936 EReference getFromAgent_Expense();
6937
6938 /**
6939 * Returns the meta object for the attribute '{@link Taxation.FromAgent#isIs_eligible_debt <em>Is eligible debt</em>}'.
6940 * <!-- begin-user-doc -->
6941 * <!-- end-user-doc -->
6942 * @return the meta object for the attribute '<em>Is eligible debt</em>'.
6943 * @see Taxation.FromAgent#isIs_eligible_debt()
6944 * @see #getFromAgent()
6945 * @generated
6946 */
6947 EAttribute getFromAgent_Is_eligible_debt();
6948
6949 /**
6950 * Returns the meta object for the reference '{@link Taxation.FromAgent#getDependent <em>Dependent</em>}'.
6951 * <!-- begin-user-doc -->
6952 * <!-- end-user-doc -->
6953 * @return the meta object for the reference '<em>Dependent</em>'.
6954 * @see Taxation.FromAgent#getDependent()
6955 * @see #getFromAgent()
6956 * @generated
6957 */
6958 EReference getFromAgent_Dependent();
6959
6960 /**
6961 * Returns the meta object for class '{@link Taxation.Income <em>Income</em>}'.
6962 * <!-- begin-user-doc -->
6963 * <!-- end-user-doc -->
6964 * @return the meta object for class '<em>Income</em>'.
6965 * @see Taxation.Income
6966 * @generated
6967 */
6968 EClass getIncome();
6969
6970 /**
6971 * Returns the meta object for the attribute '{@link Taxation.Income#getIncome_amount <em>Income amount</em>}'.
6972 * <!-- begin-user-doc -->
6973 * <!-- end-user-doc -->
6974 * @return the meta object for the attribute '<em>Income amount</em>'.
6975 * @see Taxation.Income#getIncome_amount()
6976 * @see #getIncome()
6977 * @generated
6978 */
6979 EAttribute getIncome_Income_amount();
6980
6981 /**
6982 * Returns the meta object for the containment reference '{@link Taxation.Income#getIncome_type <em>Income type</em>}'.
6983 * <!-- begin-user-doc -->
6984 * <!-- end-user-doc -->
6985 * @return the meta object for the containment reference '<em>Income type</em>'.
6986 * @see Taxation.Income#getIncome_type()
6987 * @see #getIncome()
6988 * @generated
6989 */
6990 EReference getIncome_Income_type();
6991
6992 /**
6993 * Returns the meta object for the attribute '{@link Taxation.Income#getStart_date_within_taxation_year <em>Start date within taxation year</em>}'.
6994 * <!-- begin-user-doc -->
6995 * <!-- end-user-doc -->
6996 * @return the meta object for the attribute '<em>Start date within taxation year</em>'.
6997 * @see Taxation.Income#getStart_date_within_taxation_year()
6998 * @see #getIncome()
6999 * @generated
7000 */
7001 EAttribute getIncome_Start_date_within_taxation_year();
7002
7003 /**
7004 * Returns the meta object for the attribute '{@link Taxation.Income#getStart_date_of_contract <em>Start date of contract</em>}'.
7005 * <!-- begin-user-doc -->
7006 * <!-- end-user-doc -->
7007 * @return the meta object for the attribute '<em>Start date of contract</em>'.
7008 * @see Taxation.Income#getStart_date_of_contract()
7009 * @see #getIncome()
7010 * @generated
7011 */
7012 EAttribute getIncome_Start_date_of_contract();
7013
7014 /**
7015 * Returns the meta object for the attribute '{@link Taxation.Income#getEnd_date_within_taxation_year <em>End date within taxation year</em>}'.
7016 * <!-- begin-user-doc -->
7017 * <!-- end-user-doc -->
7018 * @return the meta object for the attribute '<em>End date within taxation year</em>'.
7019 * @see Taxation.Income#getEnd_date_within_taxation_year()
7020 * @see #getIncome()
7021 * @generated
7022 */
7023 EAttribute getIncome_End_date_within_taxation_year();
7024
7025 /**
7026 * Returns the meta object for the containment reference '{@link Taxation.Income#getTax_card <em>Tax card</em>}'.
7027 * <!-- begin-user-doc -->
7028 * <!-- end-user-doc -->
7029 * @return the meta object for the containment reference '<em>Tax card</em>'.
7030 * @see Taxation.Income#getTax_card()
7031 * @see #getIncome()
7032 * @generated
7033 */
7034 EReference getIncome_Tax_card();
7035
7036 /**
7037 * Returns the meta object for the attribute '{@link Taxation.Income#getTax_liability <em>Tax liability</em>}'.
7038 * <!-- begin-user-doc -->
7039 * <!-- end-user-doc -->
7040 * @return the meta object for the attribute '<em>Tax liability</em>'.
7041 * @see Taxation.Income#getTax_liability()
7042 * @see #getIncome()
7043 * @generated
7044 */
7045 EAttribute getIncome_Tax_liability();
7046
7047 /**
7048 * Returns the meta object for the container reference '{@link Taxation.Income#getTaxPayer <em>Tax Payer</em>}'.
7049 * <!-- begin-user-doc -->
7050 * <!-- end-user-doc -->
7051 * @return the meta object for the container reference '<em>Tax Payer</em>'.
7052 * @see Taxation.Income#getTaxPayer()
7053 * @see #getIncome()
7054 * @generated
7055 */
7056 EReference getIncome_TaxPayer();
7057
7058 /**
7059 * Returns the meta object for the containment reference list '{@link Taxation.Income#getDetails <em>Details</em>}'.
7060 * <!-- begin-user-doc -->
7061 * <!-- end-user-doc -->
7062 * @return the meta object for the containment reference list '<em>Details</em>'.
7063 * @see Taxation.Income#getDetails()
7064 * @see #getIncome()
7065 * @generated
7066 */
7067 EReference getIncome_Details();
7068
7069 /**
7070 * Returns the meta object for the attribute '{@link Taxation.Income#getNum <em>Num</em>}'.
7071 * <!-- begin-user-doc -->
7072 * <!-- end-user-doc -->
7073 * @return the meta object for the attribute '<em>Num</em>'.
7074 * @see Taxation.Income#getNum()
7075 * @see #getIncome()
7076 * @generated
7077 */
7078 EAttribute getIncome_Num();
7079
7080 /**
7081 * Returns the meta object for the containment reference list '{@link Taxation.Income#getExpenses <em>Expenses</em>}'.
7082 * <!-- begin-user-doc -->
7083 * <!-- end-user-doc -->
7084 * @return the meta object for the containment reference list '<em>Expenses</em>'.
7085 * @see Taxation.Income#getExpenses()
7086 * @see #getIncome()
7087 * @generated
7088 */
7089 EReference getIncome_Expenses();
7090
7091 /**
7092 * Returns the meta object for class '{@link Taxation.Income_Type <em>Income Type</em>}'.
7093 * <!-- begin-user-doc -->
7094 * <!-- end-user-doc -->
7095 * @return the meta object for class '<em>Income Type</em>'.
7096 * @see Taxation.Income_Type
7097 * @generated
7098 */
7099 EClass getIncome_Type();
7100
7101 /**
7102 * Returns the meta object for the attribute '{@link Taxation.Income_Type#isSubjectToWithholdingTax <em>Subject To Withholding Tax</em>}'.
7103 * <!-- begin-user-doc -->
7104 * <!-- end-user-doc -->
7105 * @return the meta object for the attribute '<em>Subject To Withholding Tax</em>'.
7106 * @see Taxation.Income_Type#isSubjectToWithholdingTax()
7107 * @see #getIncome_Type()
7108 * @generated
7109 */
7110 EAttribute getIncome_Type_SubjectToWithholdingTax();
7111
7112 /**
7113 * Returns the meta object for the attribute '{@link Taxation.Income_Type#getId8 <em>Id8</em>}'.
7114 * <!-- begin-user-doc -->
7115 * <!-- end-user-doc -->
7116 * @return the meta object for the attribute '<em>Id8</em>'.
7117 * @see Taxation.Income_Type#getId8()
7118 * @see #getIncome_Type()
7119 * @generated
7120 */
7121 EAttribute getIncome_Type_Id8();
7122
7123 /**
7124 * Returns the meta object for the container reference '{@link Taxation.Income_Type#getIncome <em>Income</em>}'.
7125 * <!-- begin-user-doc -->
7126 * <!-- end-user-doc -->
7127 * @return the meta object for the container reference '<em>Income</em>'.
7128 * @see Taxation.Income_Type#getIncome()
7129 * @see #getIncome_Type()
7130 * @generated
7131 */
7132 EReference getIncome_Type_Income();
7133
7134 /**
7135 * Returns the meta object for class '{@link Taxation.Tax_Card <em>Tax Card</em>}'.
7136 * <!-- begin-user-doc -->
7137 * <!-- end-user-doc -->
7138 * @return the meta object for class '<em>Tax Card</em>'.
7139 * @see Taxation.Tax_Card
7140 * @generated
7141 */
7142 EClass getTax_Card();
7143
7144 /**
7145 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getCard_identifier <em>Card identifier</em>}'.
7146 * <!-- begin-user-doc -->
7147 * <!-- end-user-doc -->
7148 * @return the meta object for the attribute '<em>Card identifier</em>'.
7149 * @see Taxation.Tax_Card#getCard_identifier()
7150 * @see #getTax_Card()
7151 * @generated
7152 */
7153 EAttribute getTax_Card_Card_identifier();
7154
7155 /**
7156 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getTax_card_type <em>Tax card type</em>}'.
7157 * <!-- begin-user-doc -->
7158 * <!-- end-user-doc -->
7159 * @return the meta object for the attribute '<em>Tax card type</em>'.
7160 * @see Taxation.Tax_Card#getTax_card_type()
7161 * @see #getTax_Card()
7162 * @generated
7163 */
7164 EAttribute getTax_Card_Tax_card_type();
7165
7166 /**
7167 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getTax_office <em>Tax office</em>}'.
7168 * <!-- begin-user-doc -->
7169 * <!-- end-user-doc -->
7170 * @return the meta object for the attribute '<em>Tax office</em>'.
7171 * @see Taxation.Tax_Card#getTax_office()
7172 * @see #getTax_Card()
7173 * @generated
7174 */
7175 EAttribute getTax_Card_Tax_office();
7176
7177 /**
7178 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getValid_from_date <em>Valid from date</em>}'.
7179 * <!-- begin-user-doc -->
7180 * <!-- end-user-doc -->
7181 * @return the meta object for the attribute '<em>Valid from date</em>'.
7182 * @see Taxation.Tax_Card#getValid_from_date()
7183 * @see #getTax_Card()
7184 * @generated
7185 */
7186 EAttribute getTax_Card_Valid_from_date();
7187
7188 /**
7189 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getValid_until_date <em>Valid until date</em>}'.
7190 * <!-- begin-user-doc -->
7191 * <!-- end-user-doc -->
7192 * @return the meta object for the attribute '<em>Valid until date</em>'.
7193 * @see Taxation.Tax_Card#getValid_until_date()
7194 * @see #getTax_Card()
7195 * @generated
7196 */
7197 EAttribute getTax_Card_Valid_until_date();
7198
7199 /**
7200 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getPercentage_of_witholding <em>Percentage of witholding</em>}'.
7201 * <!-- begin-user-doc -->
7202 * <!-- end-user-doc -->
7203 * @return the meta object for the attribute '<em>Percentage of witholding</em>'.
7204 * @see Taxation.Tax_Card#getPercentage_of_witholding()
7205 * @see #getTax_Card()
7206 * @generated
7207 */
7208 EAttribute getTax_Card_Percentage_of_witholding();
7209
7210 /**
7211 * Returns the meta object for the attribute list '{@link Taxation.Tax_Card#getTax_payers_name_surname <em>Tax payers name surname</em>}'.
7212 * <!-- begin-user-doc -->
7213 * <!-- end-user-doc -->
7214 * @return the meta object for the attribute list '<em>Tax payers name surname</em>'.
7215 * @see Taxation.Tax_Card#getTax_payers_name_surname()
7216 * @see #getTax_Card()
7217 * @generated
7218 */
7219 EAttribute getTax_Card_Tax_payers_name_surname();
7220
7221 /**
7222 * Returns the meta object for the attribute list '{@link Taxation.Tax_Card#getTax_payers_partner_name_surname <em>Tax payers partner name surname</em>}'.
7223 * <!-- begin-user-doc -->
7224 * <!-- end-user-doc -->
7225 * @return the meta object for the attribute list '<em>Tax payers partner name surname</em>'.
7226 * @see Taxation.Tax_Card#getTax_payers_partner_name_surname()
7227 * @see #getTax_Card()
7228 * @generated
7229 */
7230 EAttribute getTax_Card_Tax_payers_partner_name_surname();
7231
7232 /**
7233 * Returns the meta object for the reference '{@link Taxation.Tax_Card#getTax_payers_address <em>Tax payers address</em>}'.
7234 * <!-- begin-user-doc -->
7235 * <!-- end-user-doc -->
7236 * @return the meta object for the reference '<em>Tax payers address</em>'.
7237 * @see Taxation.Tax_Card#getTax_payers_address()
7238 * @see #getTax_Card()
7239 * @generated
7240 */
7241 EReference getTax_Card_Tax_payers_address();
7242
7243 /**
7244 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getJobs_Employer_SSNo <em>Jobs Employer SS No</em>}'.
7245 * <!-- begin-user-doc -->
7246 * <!-- end-user-doc -->
7247 * @return the meta object for the attribute '<em>Jobs Employer SS No</em>'.
7248 * @see Taxation.Tax_Card#getJobs_Employer_SSNo()
7249 * @see #getTax_Card()
7250 * @generated
7251 */
7252 EAttribute getTax_Card_Jobs_Employer_SSNo();
7253
7254 /**
7255 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getJobs_employers_name <em>Jobs employers name</em>}'.
7256 * <!-- begin-user-doc -->
7257 * <!-- end-user-doc -->
7258 * @return the meta object for the attribute '<em>Jobs employers name</em>'.
7259 * @see Taxation.Tax_Card#getJobs_employers_name()
7260 * @see #getTax_Card()
7261 * @generated
7262 */
7263 EAttribute getTax_Card_Jobs_employers_name();
7264
7265 /**
7266 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getJobs_activity_type <em>Jobs activity type</em>}'.
7267 * <!-- begin-user-doc -->
7268 * <!-- end-user-doc -->
7269 * @return the meta object for the attribute '<em>Jobs activity type</em>'.
7270 * @see Taxation.Tax_Card#getJobs_activity_type()
7271 * @see #getTax_Card()
7272 * @generated
7273 */
7274 EAttribute getTax_Card_Jobs_activity_type();
7275
7276 /**
7277 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getJobs_place_of_work <em>Jobs place of work</em>}'.
7278 * <!-- begin-user-doc -->
7279 * <!-- end-user-doc -->
7280 * @return the meta object for the attribute '<em>Jobs place of work</em>'.
7281 * @see Taxation.Tax_Card#getJobs_place_of_work()
7282 * @see #getTax_Card()
7283 * @generated
7284 */
7285 EAttribute getTax_Card_Jobs_place_of_work();
7286
7287 /**
7288 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_FD_daily <em>Deduction FD daily</em>}'.
7289 * <!-- begin-user-doc -->
7290 * <!-- end-user-doc -->
7291 * @return the meta object for the attribute '<em>Deduction FD daily</em>'.
7292 * @see Taxation.Tax_Card#getDeduction_FD_daily()
7293 * @see #getTax_Card()
7294 * @generated
7295 */
7296 EAttribute getTax_Card_Deduction_FD_daily();
7297
7298 /**
7299 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_FD_monthly <em>Deduction FD monthly</em>}'.
7300 * <!-- begin-user-doc -->
7301 * <!-- end-user-doc -->
7302 * @return the meta object for the attribute '<em>Deduction FD monthly</em>'.
7303 * @see Taxation.Tax_Card#getDeduction_FD_monthly()
7304 * @see #getTax_Card()
7305 * @generated
7306 */
7307 EAttribute getTax_Card_Deduction_FD_monthly();
7308
7309 /**
7310 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_AC_daily <em>Deduction AC daily</em>}'.
7311 * <!-- begin-user-doc -->
7312 * <!-- end-user-doc -->
7313 * @return the meta object for the attribute '<em>Deduction AC daily</em>'.
7314 * @see Taxation.Tax_Card#getDeduction_AC_daily()
7315 * @see #getTax_Card()
7316 * @generated
7317 */
7318 EAttribute getTax_Card_Deduction_AC_daily();
7319
7320 /**
7321 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_AC_monthly <em>Deduction AC monthly</em>}'.
7322 * <!-- begin-user-doc -->
7323 * <!-- end-user-doc -->
7324 * @return the meta object for the attribute '<em>Deduction AC monthly</em>'.
7325 * @see Taxation.Tax_Card#getDeduction_AC_monthly()
7326 * @see #getTax_Card()
7327 * @generated
7328 */
7329 EAttribute getTax_Card_Deduction_AC_monthly();
7330
7331 /**
7332 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_AC_yearly <em>Deduction AC yearly</em>}'.
7333 * <!-- begin-user-doc -->
7334 * <!-- end-user-doc -->
7335 * @return the meta object for the attribute '<em>Deduction AC yearly</em>'.
7336 * @see Taxation.Tax_Card#getDeduction_AC_yearly()
7337 * @see #getTax_Card()
7338 * @generated
7339 */
7340 EAttribute getTax_Card_Deduction_AC_yearly();
7341
7342 /**
7343 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_CE_daily <em>Deduction CE daily</em>}'.
7344 * <!-- begin-user-doc -->
7345 * <!-- end-user-doc -->
7346 * @return the meta object for the attribute '<em>Deduction CE daily</em>'.
7347 * @see Taxation.Tax_Card#getDeduction_CE_daily()
7348 * @see #getTax_Card()
7349 * @generated
7350 */
7351 EAttribute getTax_Card_Deduction_CE_daily();
7352
7353 /**
7354 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_CE_monthly <em>Deduction CE monthly</em>}'.
7355 * <!-- begin-user-doc -->
7356 * <!-- end-user-doc -->
7357 * @return the meta object for the attribute '<em>Deduction CE monthly</em>'.
7358 * @see Taxation.Tax_Card#getDeduction_CE_monthly()
7359 * @see #getTax_Card()
7360 * @generated
7361 */
7362 EAttribute getTax_Card_Deduction_CE_monthly();
7363
7364 /**
7365 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_CE_yearly <em>Deduction CE yearly</em>}'.
7366 * <!-- begin-user-doc -->
7367 * <!-- end-user-doc -->
7368 * @return the meta object for the attribute '<em>Deduction CE yearly</em>'.
7369 * @see Taxation.Tax_Card#getDeduction_CE_yearly()
7370 * @see #getTax_Card()
7371 * @generated
7372 */
7373 EAttribute getTax_Card_Deduction_CE_yearly();
7374
7375 /**
7376 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_DS_daily <em>Deduction DS daily</em>}'.
7377 * <!-- begin-user-doc -->
7378 * <!-- end-user-doc -->
7379 * @return the meta object for the attribute '<em>Deduction DS daily</em>'.
7380 * @see Taxation.Tax_Card#getDeduction_DS_daily()
7381 * @see #getTax_Card()
7382 * @generated
7383 */
7384 EAttribute getTax_Card_Deduction_DS_daily();
7385
7386 /**
7387 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_DS_monthly <em>Deduction DS monthly</em>}'.
7388 * <!-- begin-user-doc -->
7389 * <!-- end-user-doc -->
7390 * @return the meta object for the attribute '<em>Deduction DS monthly</em>'.
7391 * @see Taxation.Tax_Card#getDeduction_DS_monthly()
7392 * @see #getTax_Card()
7393 * @generated
7394 */
7395 EAttribute getTax_Card_Deduction_DS_monthly();
7396
7397 /**
7398 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_FO_daily <em>Deduction FO daily</em>}'.
7399 * <!-- begin-user-doc -->
7400 * <!-- end-user-doc -->
7401 * @return the meta object for the attribute '<em>Deduction FO daily</em>'.
7402 * @see Taxation.Tax_Card#getDeduction_FO_daily()
7403 * @see #getTax_Card()
7404 * @generated
7405 */
7406 EAttribute getTax_Card_Deduction_FO_daily();
7407
7408 /**
7409 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_FO_monthly <em>Deduction FO monthly</em>}'.
7410 * <!-- begin-user-doc -->
7411 * <!-- end-user-doc -->
7412 * @return the meta object for the attribute '<em>Deduction FO monthly</em>'.
7413 * @see Taxation.Tax_Card#getDeduction_FO_monthly()
7414 * @see #getTax_Card()
7415 * @generated
7416 */
7417 EAttribute getTax_Card_Deduction_FO_monthly();
7418
7419 /**
7420 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_FO_yearly <em>Deduction FO yearly</em>}'.
7421 * <!-- begin-user-doc -->
7422 * <!-- end-user-doc -->
7423 * @return the meta object for the attribute '<em>Deduction FO yearly</em>'.
7424 * @see Taxation.Tax_Card#getDeduction_FO_yearly()
7425 * @see #getTax_Card()
7426 * @generated
7427 */
7428 EAttribute getTax_Card_Deduction_FO_yearly();
7429
7430 /**
7431 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getCredit_CIS_daily <em>Credit CIS daily</em>}'.
7432 * <!-- begin-user-doc -->
7433 * <!-- end-user-doc -->
7434 * @return the meta object for the attribute '<em>Credit CIS daily</em>'.
7435 * @see Taxation.Tax_Card#getCredit_CIS_daily()
7436 * @see #getTax_Card()
7437 * @generated
7438 */
7439 EAttribute getTax_Card_Credit_CIS_daily();
7440
7441 /**
7442 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getCredit_CIS_monthly <em>Credit CIS monthly</em>}'.
7443 * <!-- begin-user-doc -->
7444 * <!-- end-user-doc -->
7445 * @return the meta object for the attribute '<em>Credit CIS monthly</em>'.
7446 * @see Taxation.Tax_Card#getCredit_CIS_monthly()
7447 * @see #getTax_Card()
7448 * @generated
7449 */
7450 EAttribute getTax_Card_Credit_CIS_monthly();
7451
7452 /**
7453 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getCredit_CIM_daily <em>Credit CIM daily</em>}'.
7454 * <!-- begin-user-doc -->
7455 * <!-- end-user-doc -->
7456 * @return the meta object for the attribute '<em>Credit CIM daily</em>'.
7457 * @see Taxation.Tax_Card#getCredit_CIM_daily()
7458 * @see #getTax_Card()
7459 * @generated
7460 */
7461 EAttribute getTax_Card_Credit_CIM_daily();
7462
7463 /**
7464 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#isValidity <em>Validity</em>}'.
7465 * <!-- begin-user-doc -->
7466 * <!-- end-user-doc -->
7467 * @return the meta object for the attribute '<em>Validity</em>'.
7468 * @see Taxation.Tax_Card#isValidity()
7469 * @see #getTax_Card()
7470 * @generated
7471 */
7472 EAttribute getTax_Card_Validity();
7473
7474 /**
7475 * Returns the meta object for the reference list '{@link Taxation.Tax_Card#getIncome_Tax_Credit <em>Income Tax Credit</em>}'.
7476 * <!-- begin-user-doc -->
7477 * <!-- end-user-doc -->
7478 * @return the meta object for the reference list '<em>Income Tax Credit</em>'.
7479 * @see Taxation.Tax_Card#getIncome_Tax_Credit()
7480 * @see #getTax_Card()
7481 * @generated
7482 */
7483 EReference getTax_Card_Income_Tax_Credit();
7484
7485 /**
7486 * Returns the meta object for the reference '{@link Taxation.Tax_Card#getPrevious <em>Previous</em>}'.
7487 * <!-- begin-user-doc -->
7488 * <!-- end-user-doc -->
7489 * @return the meta object for the reference '<em>Previous</em>'.
7490 * @see Taxation.Tax_Card#getPrevious()
7491 * @see #getTax_Card()
7492 * @generated
7493 */
7494 EReference getTax_Card_Previous();
7495
7496 /**
7497 * Returns the meta object for the reference '{@link Taxation.Tax_Card#getCurrent_tax_card <em>Current tax card</em>}'.
7498 * <!-- begin-user-doc -->
7499 * <!-- end-user-doc -->
7500 * @return the meta object for the reference '<em>Current tax card</em>'.
7501 * @see Taxation.Tax_Card#getCurrent_tax_card()
7502 * @see #getTax_Card()
7503 * @generated
7504 */
7505 EReference getTax_Card_Current_tax_card();
7506
7507 /**
7508 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getCredit_CIM_yearly <em>Credit CIM yearly</em>}'.
7509 * <!-- begin-user-doc -->
7510 * <!-- end-user-doc -->
7511 * @return the meta object for the attribute '<em>Credit CIM yearly</em>'.
7512 * @see Taxation.Tax_Card#getCredit_CIM_yearly()
7513 * @see #getTax_Card()
7514 * @generated
7515 */
7516 EAttribute getTax_Card_Credit_CIM_yearly();
7517
7518 /**
7519 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_DS_Alimony_yearly <em>Deduction DS Alimony yearly</em>}'.
7520 * <!-- begin-user-doc -->
7521 * <!-- end-user-doc -->
7522 * @return the meta object for the attribute '<em>Deduction DS Alimony yearly</em>'.
7523 * @see Taxation.Tax_Card#getDeduction_DS_Alimony_yearly()
7524 * @see #getTax_Card()
7525 * @generated
7526 */
7527 EAttribute getTax_Card_Deduction_DS_Alimony_yearly();
7528
7529 /**
7530 * Returns the meta object for the attribute '{@link Taxation.Tax_Card#getDeduction_DS_Debt_yearly <em>Deduction DS Debt yearly</em>}'.
7531 * <!-- begin-user-doc -->
7532 * <!-- end-user-doc -->
7533 * @return the meta object for the attribute '<em>Deduction DS Debt yearly</em>'.
7534 * @see Taxation.Tax_Card#getDeduction_DS_Debt_yearly()
7535 * @see #getTax_Card()
7536 * @generated
7537 */
7538 EAttribute getTax_Card_Deduction_DS_Debt_yearly();
7539
7540 /**
7541 * Returns the meta object for the container reference '{@link Taxation.Tax_Card#getIncome <em>Income</em>}'.
7542 * <!-- begin-user-doc -->
7543 * <!-- end-user-doc -->
7544 * @return the meta object for the container reference '<em>Income</em>'.
7545 * @see Taxation.Tax_Card#getIncome()
7546 * @see #getTax_Card()
7547 * @generated
7548 */
7549 EReference getTax_Card_Income();
7550
7551 /**
7552 * Returns the meta object for class '{@link Taxation.Income_Tax_Credit <em>Income Tax Credit</em>}'.
7553 * <!-- begin-user-doc -->
7554 * <!-- end-user-doc -->
7555 * @return the meta object for class '<em>Income Tax Credit</em>'.
7556 * @see Taxation.Income_Tax_Credit
7557 * @generated
7558 */
7559 EClass getIncome_Tax_Credit();
7560
7561 /**
7562 * Returns the meta object for the attribute '{@link Taxation.Income_Tax_Credit#getGrantedBy <em>Granted By</em>}'.
7563 * <!-- begin-user-doc -->
7564 * <!-- end-user-doc -->
7565 * @return the meta object for the attribute '<em>Granted By</em>'.
7566 * @see Taxation.Income_Tax_Credit#getGrantedBy()
7567 * @see #getIncome_Tax_Credit()
7568 * @generated
7569 */
7570 EAttribute getIncome_Tax_Credit_GrantedBy();
7571
7572 /**
7573 * Returns the meta object for the reference '{@link Taxation.Income_Tax_Credit#getTaxPayer <em>Tax Payer</em>}'.
7574 * <!-- begin-user-doc -->
7575 * <!-- end-user-doc -->
7576 * @return the meta object for the reference '<em>Tax Payer</em>'.
7577 * @see Taxation.Income_Tax_Credit#getTaxPayer()
7578 * @see #getIncome_Tax_Credit()
7579 * @generated
7580 */
7581 EReference getIncome_Tax_Credit_TaxPayer();
7582
7583 /**
7584 * Returns the meta object for the attribute '{@link Taxation.Income_Tax_Credit#getTax_year <em>Tax year</em>}'.
7585 * <!-- begin-user-doc -->
7586 * <!-- end-user-doc -->
7587 * @return the meta object for the attribute '<em>Tax year</em>'.
7588 * @see Taxation.Income_Tax_Credit#getTax_year()
7589 * @see #getIncome_Tax_Credit()
7590 * @generated
7591 */
7592 EAttribute getIncome_Tax_Credit_Tax_year();
7593
7594 /**
7595 * Returns the meta object for the attribute '{@link Taxation.Income_Tax_Credit#getYearly <em>Yearly</em>}'.
7596 * <!-- begin-user-doc -->
7597 * <!-- end-user-doc -->
7598 * @return the meta object for the attribute '<em>Yearly</em>'.
7599 * @see Taxation.Income_Tax_Credit#getYearly()
7600 * @see #getIncome_Tax_Credit()
7601 * @generated
7602 */
7603 EAttribute getIncome_Tax_Credit_Yearly();
7604
7605 /**
7606 * Returns the meta object for the attribute '{@link Taxation.Income_Tax_Credit#getMonthly <em>Monthly</em>}'.
7607 * <!-- begin-user-doc -->
7608 * <!-- end-user-doc -->
7609 * @return the meta object for the attribute '<em>Monthly</em>'.
7610 * @see Taxation.Income_Tax_Credit#getMonthly()
7611 * @see #getIncome_Tax_Credit()
7612 * @generated
7613 */
7614 EAttribute getIncome_Tax_Credit_Monthly();
7615
7616 /**
7617 * Returns the meta object for the attribute '{@link Taxation.Income_Tax_Credit#getDaily <em>Daily</em>}'.
7618 * <!-- begin-user-doc -->
7619 * <!-- end-user-doc -->
7620 * @return the meta object for the attribute '<em>Daily</em>'.
7621 * @see Taxation.Income_Tax_Credit#getDaily()
7622 * @see #getIncome_Tax_Credit()
7623 * @generated
7624 */
7625 EAttribute getIncome_Tax_Credit_Daily();
7626
7627 /**
7628 * Returns the meta object for the attribute '{@link Taxation.Income_Tax_Credit#getId7 <em>Id7</em>}'.
7629 * <!-- begin-user-doc -->
7630 * <!-- end-user-doc -->
7631 * @return the meta object for the attribute '<em>Id7</em>'.
7632 * @see Taxation.Income_Tax_Credit#getId7()
7633 * @see #getIncome_Tax_Credit()
7634 * @generated
7635 */
7636 EAttribute getIncome_Tax_Credit_Id7();
7637
7638 /**
7639 * Returns the meta object for the reference '{@link Taxation.Income_Tax_Credit#getTaxation_Frame <em>Taxation Frame</em>}'.
7640 * <!-- begin-user-doc -->
7641 * <!-- end-user-doc -->
7642 * @return the meta object for the reference '<em>Taxation Frame</em>'.
7643 * @see Taxation.Income_Tax_Credit#getTaxation_Frame()
7644 * @see #getIncome_Tax_Credit()
7645 * @generated
7646 */
7647 EReference getIncome_Tax_Credit_Taxation_Frame();
7648
7649 /**
7650 * Returns the meta object for class '{@link Taxation.Income_Detail <em>Income Detail</em>}'.
7651 * <!-- begin-user-doc -->
7652 * <!-- end-user-doc -->
7653 * @return the meta object for class '<em>Income Detail</em>'.
7654 * @see Taxation.Income_Detail
7655 * @generated
7656 */
7657 EClass getIncome_Detail();
7658
7659 /**
7660 * Returns the meta object for the attribute '{@link Taxation.Income_Detail#getAmount <em>Amount</em>}'.
7661 * <!-- begin-user-doc -->
7662 * <!-- end-user-doc -->
7663 * @return the meta object for the attribute '<em>Amount</em>'.
7664 * @see Taxation.Income_Detail#getAmount()
7665 * @see #getIncome_Detail()
7666 * @generated
7667 */
7668 EAttribute getIncome_Detail_Amount();
7669
7670 /**
7671 * Returns the meta object for the attribute '{@link Taxation.Income_Detail#isIs_worked <em>Is worked</em>}'.
7672 * <!-- begin-user-doc -->
7673 * <!-- end-user-doc -->
7674 * @return the meta object for the attribute '<em>Is worked</em>'.
7675 * @see Taxation.Income_Detail#isIs_worked()
7676 * @see #getIncome_Detail()
7677 * @generated
7678 */
7679 EAttribute getIncome_Detail_Is_worked();
7680
7681 /**
7682 * Returns the meta object for the attribute '{@link Taxation.Income_Detail#getDistance <em>Distance</em>}'.
7683 * <!-- begin-user-doc -->
7684 * <!-- end-user-doc -->
7685 * @return the meta object for the attribute '<em>Distance</em>'.
7686 * @see Taxation.Income_Detail#getDistance()
7687 * @see #getIncome_Detail()
7688 * @generated
7689 */
7690 EAttribute getIncome_Detail_Distance();
7691
7692 /**
7693 * Returns the meta object for the attribute '{@link Taxation.Income_Detail#getWorked_days <em>Worked days</em>}'.
7694 * <!-- begin-user-doc -->
7695 * <!-- end-user-doc -->
7696 * @return the meta object for the attribute '<em>Worked days</em>'.
7697 * @see Taxation.Income_Detail#getWorked_days()
7698 * @see #getIncome_Detail()
7699 * @generated
7700 */
7701 EAttribute getIncome_Detail_Worked_days();
7702
7703 /**
7704 * Returns the meta object for the attribute '{@link Taxation.Income_Detail#isIs_contributing_CNS <em>Is contributing CNS</em>}'.
7705 * <!-- begin-user-doc -->
7706 * <!-- end-user-doc -->
7707 * @return the meta object for the attribute '<em>Is contributing CNS</em>'.
7708 * @see Taxation.Income_Detail#isIs_contributing_CNS()
7709 * @see #getIncome_Detail()
7710 * @generated
7711 */
7712 EAttribute getIncome_Detail_Is_contributing_CNS();
7713
7714 /**
7715 * Returns the meta object for the attribute '{@link Taxation.Income_Detail#getId5 <em>Id5</em>}'.
7716 * <!-- begin-user-doc -->
7717 * <!-- end-user-doc -->
7718 * @return the meta object for the attribute '<em>Id5</em>'.
7719 * @see Taxation.Income_Detail#getId5()
7720 * @see #getIncome_Detail()
7721 * @generated
7722 */
7723 EAttribute getIncome_Detail_Id5();
7724
7725 /**
7726 * Returns the meta object for the container reference '{@link Taxation.Income_Detail#getIncome <em>Income</em>}'.
7727 * <!-- begin-user-doc -->
7728 * <!-- end-user-doc -->
7729 * @return the meta object for the container reference '<em>Income</em>'.
7730 * @see Taxation.Income_Detail#getIncome()
7731 * @see #getIncome_Detail()
7732 * @generated
7733 */
7734 EReference getIncome_Detail_Income();
7735
7736 /**
7737 * Returns the meta object for class '{@link Taxation.FromLaw <em>From Law</em>}'.
7738 * <!-- begin-user-doc -->
7739 * <!-- end-user-doc -->
7740 * @return the meta object for class '<em>From Law</em>'.
7741 * @see Taxation.FromLaw
7742 * @generated
7743 */
7744 EClass getFromLaw();
7745
7746 /**
7747 * Returns the meta object for the attribute '{@link Taxation.FromLaw#getId <em>Id</em>}'.
7748 * <!-- begin-user-doc -->
7749 * <!-- end-user-doc -->
7750 * @return the meta object for the attribute '<em>Id</em>'.
7751 * @see Taxation.FromLaw#getId()
7752 * @see #getFromLaw()
7753 * @generated
7754 */
7755 EAttribute getFromLaw_Id();
7756
7757 /**
7758 * Returns the meta object for the container reference '{@link Taxation.FromLaw#getTaxPayer <em>Tax Payer</em>}'.
7759 * <!-- begin-user-doc -->
7760 * <!-- end-user-doc -->
7761 * @return the meta object for the container reference '<em>Tax Payer</em>'.
7762 * @see Taxation.FromLaw#getTaxPayer()
7763 * @see #getFromLaw()
7764 * @generated
7765 */
7766 EReference getFromLaw_TaxPayer();
7767
7768 /**
7769 * Returns the meta object for class '{@link Taxation.Fiscal_Address <em>Fiscal Address</em>}'.
7770 * <!-- begin-user-doc -->
7771 * <!-- end-user-doc -->
7772 * @return the meta object for class '<em>Fiscal Address</em>'.
7773 * @see Taxation.Fiscal_Address
7774 * @generated
7775 */
7776 EClass getFiscal_Address();
7777
7778 /**
7779 * Returns the meta object for class '{@link Taxation.Habitual_Address <em>Habitual Address</em>}'.
7780 * <!-- begin-user-doc -->
7781 * <!-- end-user-doc -->
7782 * @return the meta object for class '<em>Habitual Address</em>'.
7783 * @see Taxation.Habitual_Address
7784 * @generated
7785 */
7786 EClass getHabitual_Address();
7787
7788 /**
7789 * Returns the meta object for class '{@link Taxation.Marriage_Record <em>Marriage Record</em>}'.
7790 * <!-- begin-user-doc -->
7791 * <!-- end-user-doc -->
7792 * @return the meta object for class '<em>Marriage Record</em>'.
7793 * @see Taxation.Marriage_Record
7794 * @generated
7795 */
7796 EClass getMarriage_Record();
7797
7798 /**
7799 * Returns the meta object for class '{@link Taxation.Non_Resident_Tax_Payer <em>Non Resident Tax Payer</em>}'.
7800 * <!-- begin-user-doc -->
7801 * <!-- end-user-doc -->
7802 * @return the meta object for class '<em>Non Resident Tax Payer</em>'.
7803 * @see Taxation.Non_Resident_Tax_Payer
7804 * @generated
7805 */
7806 EClass getNon_Resident_Tax_Payer();
7807
7808 /**
7809 * Returns the meta object for the attribute '{@link Taxation.Non_Resident_Tax_Payer#isIs_assimilated_to_resident <em>Is assimilated to resident</em>}'.
7810 * <!-- begin-user-doc -->
7811 * <!-- end-user-doc -->
7812 * @return the meta object for the attribute '<em>Is assimilated to resident</em>'.
7813 * @see Taxation.Non_Resident_Tax_Payer#isIs_assimilated_to_resident()
7814 * @see #getNon_Resident_Tax_Payer()
7815 * @generated
7816 */
7817 EAttribute getNon_Resident_Tax_Payer_Is_assimilated_to_resident();
7818
7819 /**
7820 * Returns the meta object for class '{@link Taxation.Partnership_Record <em>Partnership Record</em>}'.
7821 * <!-- begin-user-doc -->
7822 * <!-- end-user-doc -->
7823 * @return the meta object for class '<em>Partnership Record</em>'.
7824 * @see Taxation.Partnership_Record
7825 * @generated
7826 */
7827 EClass getPartnership_Record();
7828
7829 /**
7830 * Returns the meta object for class '{@link Taxation.Resident_Tax_Payer <em>Resident Tax Payer</em>}'.
7831 * <!-- begin-user-doc -->
7832 * <!-- end-user-doc -->
7833 * @return the meta object for class '<em>Resident Tax Payer</em>'.
7834 * @see Taxation.Resident_Tax_Payer
7835 * @generated
7836 */
7837 EClass getResident_Tax_Payer();
7838
7839 /**
7840 * Returns the meta object for class '{@link Taxation.Trade_and_Business_Income <em>Trade and Business Income</em>}'.
7841 * <!-- begin-user-doc -->
7842 * <!-- end-user-doc -->
7843 * @return the meta object for class '<em>Trade and Business Income</em>'.
7844 * @see Taxation.Trade_and_Business_Income
7845 * @generated
7846 */
7847 EClass getTrade_and_Business_Income();
7848
7849 /**
7850 * Returns the meta object for class '{@link Taxation.Agriculture_and_Forestry_Income <em>Agriculture and Forestry Income</em>}'.
7851 * <!-- begin-user-doc -->
7852 * <!-- end-user-doc -->
7853 * @return the meta object for class '<em>Agriculture and Forestry Income</em>'.
7854 * @see Taxation.Agriculture_and_Forestry_Income
7855 * @generated
7856 */
7857 EClass getAgriculture_and_Forestry_Income();
7858
7859 /**
7860 * Returns the meta object for class '{@link Taxation.Pensions_and_Annuities_Income <em>Pensions and Annuities Income</em>}'.
7861 * <!-- begin-user-doc -->
7862 * <!-- end-user-doc -->
7863 * @return the meta object for class '<em>Pensions and Annuities Income</em>'.
7864 * @see Taxation.Pensions_and_Annuities_Income
7865 * @generated
7866 */
7867 EClass getPensions_and_Annuities_Income();
7868
7869 /**
7870 * Returns the meta object for the attribute '{@link Taxation.Pensions_and_Annuities_Income#isOccasional_payement <em>Occasional payement</em>}'.
7871 * <!-- begin-user-doc -->
7872 * <!-- end-user-doc -->
7873 * @return the meta object for the attribute '<em>Occasional payement</em>'.
7874 * @see Taxation.Pensions_and_Annuities_Income#isOccasional_payement()
7875 * @see #getPensions_and_Annuities_Income()
7876 * @generated
7877 */
7878 EAttribute getPensions_and_Annuities_Income_Occasional_payement();
7879
7880 /**
7881 * Returns the meta object for class '{@link Taxation.Capital_and_Investments_Income <em>Capital and Investments Income</em>}'.
7882 * <!-- begin-user-doc -->
7883 * <!-- end-user-doc -->
7884 * @return the meta object for class '<em>Capital and Investments Income</em>'.
7885 * @see Taxation.Capital_and_Investments_Income
7886 * @generated
7887 */
7888 EClass getCapital_and_Investments_Income();
7889
7890 /**
7891 * Returns the meta object for class '{@link Taxation.Employment_Income <em>Employment Income</em>}'.
7892 * <!-- begin-user-doc -->
7893 * <!-- end-user-doc -->
7894 * @return the meta object for class '<em>Employment Income</em>'.
7895 * @see Taxation.Employment_Income
7896 * @generated
7897 */
7898 EClass getEmployment_Income();
7899
7900 /**
7901 * Returns the meta object for class '{@link Taxation.Rentals_and_Leases_Income <em>Rentals and Leases Income</em>}'.
7902 * <!-- begin-user-doc -->
7903 * <!-- end-user-doc -->
7904 * @return the meta object for class '<em>Rentals and Leases Income</em>'.
7905 * @see Taxation.Rentals_and_Leases_Income
7906 * @generated
7907 */
7908 EClass getRentals_and_Leases_Income();
7909
7910 /**
7911 * Returns the meta object for the attribute '{@link Taxation.Rentals_and_Leases_Income#isIs_periodic <em>Is periodic</em>}'.
7912 * <!-- begin-user-doc -->
7913 * <!-- end-user-doc -->
7914 * @return the meta object for the attribute '<em>Is periodic</em>'.
7915 * @see Taxation.Rentals_and_Leases_Income#isIs_periodic()
7916 * @see #getRentals_and_Leases_Income()
7917 * @generated
7918 */
7919 EAttribute getRentals_and_Leases_Income_Is_periodic();
7920
7921 /**
7922 * Returns the meta object for class '{@link Taxation.Foreign_Income <em>Foreign Income</em>}'.
7923 * <!-- begin-user-doc -->
7924 * <!-- end-user-doc -->
7925 * @return the meta object for class '<em>Foreign Income</em>'.
7926 * @see Taxation.Foreign_Income
7927 * @generated
7928 */
7929 EClass getForeign_Income();
7930
7931 /**
7932 * Returns the meta object for class '{@link Taxation.Local_Income <em>Local Income</em>}'.
7933 * <!-- begin-user-doc -->
7934 * <!-- end-user-doc -->
7935 * @return the meta object for class '<em>Local Income</em>'.
7936 * @see Taxation.Local_Income
7937 * @generated
7938 */
7939 EClass getLocal_Income();
7940
7941 /**
7942 * Returns the meta object for class '{@link Taxation.CIM <em>CIM</em>}'.
7943 * <!-- begin-user-doc -->
7944 * <!-- end-user-doc -->
7945 * @return the meta object for class '<em>CIM</em>'.
7946 * @see Taxation.CIM
7947 * @generated
7948 */
7949 EClass getCIM();
7950
7951 /**
7952 * Returns the meta object for class '{@link Taxation.CIP <em>CIP</em>}'.
7953 * <!-- begin-user-doc -->
7954 * <!-- end-user-doc -->
7955 * @return the meta object for class '<em>CIP</em>'.
7956 * @see Taxation.CIP
7957 * @generated
7958 */
7959 EClass getCIP();
7960
7961 /**
7962 * Returns the meta object for class '{@link Taxation.CIS <em>CIS</em>}'.
7963 * <!-- begin-user-doc -->
7964 * <!-- end-user-doc -->
7965 * @return the meta object for class '<em>CIS</em>'.
7966 * @see Taxation.CIS
7967 * @generated
7968 */
7969 EClass getCIS();
7970
7971 /**
7972 * Returns the meta object for class '{@link Taxation.FD <em>FD</em>}'.
7973 * <!-- begin-user-doc -->
7974 * <!-- end-user-doc -->
7975 * @return the meta object for class '<em>FD</em>'.
7976 * @see Taxation.FD
7977 * @generated
7978 */
7979 EClass getFD();
7980
7981 /**
7982 * Returns the meta object for the attribute '{@link Taxation.FD#getDistance_declared_in_january <em>Distance declared in january</em>}'.
7983 * <!-- begin-user-doc -->
7984 * <!-- end-user-doc -->
7985 * @return the meta object for the attribute '<em>Distance declared in january</em>'.
7986 * @see Taxation.FD#getDistance_declared_in_january()
7987 * @see #getFD()
7988 * @generated
7989 */
7990 EAttribute getFD_Distance_declared_in_january();
7991
7992 /**
7993 * Returns the meta object for the attribute '{@link Taxation.FD#getCalculated_distance <em>Calculated distance</em>}'.
7994 * <!-- begin-user-doc -->
7995 * <!-- end-user-doc -->
7996 * @return the meta object for the attribute '<em>Calculated distance</em>'.
7997 * @see Taxation.FD#getCalculated_distance()
7998 * @see #getFD()
7999 * @generated
8000 */
8001 EAttribute getFD_Calculated_distance();
8002
8003 /**
8004 * Returns the meta object for class '{@link Taxation.Professional_Expenses_Deduction <em>Professional Expenses Deduction</em>}'.
8005 * <!-- begin-user-doc -->
8006 * <!-- end-user-doc -->
8007 * @return the meta object for class '<em>Professional Expenses Deduction</em>'.
8008 * @see Taxation.Professional_Expenses_Deduction
8009 * @generated
8010 */
8011 EClass getProfessional_Expenses_Deduction();
8012
8013 /**
8014 * Returns the meta object for class '{@link Taxation.FO <em>FO</em>}'.
8015 * <!-- begin-user-doc -->
8016 * <!-- end-user-doc -->
8017 * @return the meta object for class '<em>FO</em>'.
8018 * @see Taxation.FO
8019 * @generated
8020 */
8021 EClass getFO();
8022
8023 /**
8024 * Returns the meta object for the attribute '{@link Taxation.FO#getRate_type_for_FO <em>Rate type for FO</em>}'.
8025 * <!-- begin-user-doc -->
8026 * <!-- end-user-doc -->
8027 * @return the meta object for the attribute '<em>Rate type for FO</em>'.
8028 * @see Taxation.FO#getRate_type_for_FO()
8029 * @see #getFO()
8030 * @generated
8031 */
8032 EAttribute getFO_Rate_type_for_FO();
8033
8034 /**
8035 * Returns the meta object for class '{@link Taxation.DS_for_Permanent_Expense <em>DS for Permanent Expense</em>}'.
8036 * <!-- begin-user-doc -->
8037 * <!-- end-user-doc -->
8038 * @return the meta object for class '<em>DS for Permanent Expense</em>'.
8039 * @see Taxation.DS_for_Permanent_Expense
8040 * @generated
8041 */
8042 EClass getDS_for_Permanent_Expense();
8043
8044 /**
8045 * Returns the meta object for the attribute '{@link Taxation.DS_for_Permanent_Expense#getPermanent_expense_category <em>Permanent expense category</em>}'.
8046 * <!-- begin-user-doc -->
8047 * <!-- end-user-doc -->
8048 * @return the meta object for the attribute '<em>Permanent expense category</em>'.
8049 * @see Taxation.DS_for_Permanent_Expense#getPermanent_expense_category()
8050 * @see #getDS_for_Permanent_Expense()
8051 * @generated
8052 */
8053 EAttribute getDS_for_Permanent_Expense_Permanent_expense_category();
8054
8055 /**
8056 * Returns the meta object for class '{@link Taxation.DS <em>DS</em>}'.
8057 * <!-- begin-user-doc -->
8058 * <!-- end-user-doc -->
8059 * @return the meta object for class '<em>DS</em>'.
8060 * @see Taxation.DS
8061 * @generated
8062 */
8063 EClass getDS();
8064
8065 /**
8066 * Returns the meta object for the attribute '{@link Taxation.DS#getMaximum_deductible_amount <em>Maximum deductible amount</em>}'.
8067 * <!-- begin-user-doc -->
8068 * <!-- end-user-doc -->
8069 * @return the meta object for the attribute '<em>Maximum deductible amount</em>'.
8070 * @see Taxation.DS#getMaximum_deductible_amount()
8071 * @see #getDS()
8072 * @generated
8073 */
8074 EAttribute getDS_Maximum_deductible_amount();
8075
8076 /**
8077 * Returns the meta object for the attribute '{@link Taxation.DS#getId3 <em>Id3</em>}'.
8078 * <!-- begin-user-doc -->
8079 * <!-- end-user-doc -->
8080 * @return the meta object for the attribute '<em>Id3</em>'.
8081 * @see Taxation.DS#getId3()
8082 * @see #getDS()
8083 * @generated
8084 */
8085 EAttribute getDS_Id3();
8086
8087 /**
8088 * Returns the meta object for class '{@link Taxation.DS_for_Interest_Expense <em>DS for Interest Expense</em>}'.
8089 * <!-- begin-user-doc -->
8090 * <!-- end-user-doc -->
8091 * @return the meta object for class '<em>DS for Interest Expense</em>'.
8092 * @see Taxation.DS_for_Interest_Expense
8093 * @generated
8094 */
8095 EClass getDS_for_Interest_Expense();
8096
8097 /**
8098 * Returns the meta object for class '{@link Taxation.DS_for_Health_and_Pension_Insurance <em>DS for Health and Pension Insurance</em>}'.
8099 * <!-- begin-user-doc -->
8100 * <!-- end-user-doc -->
8101 * @return the meta object for class '<em>DS for Health and Pension Insurance</em>'.
8102 * @see Taxation.DS_for_Health_and_Pension_Insurance
8103 * @generated
8104 */
8105 EClass getDS_for_Health_and_Pension_Insurance();
8106
8107 /**
8108 * Returns the meta object for the attribute '{@link Taxation.DS_for_Health_and_Pension_Insurance#getInsurance_category <em>Insurance category</em>}'.
8109 * <!-- begin-user-doc -->
8110 * <!-- end-user-doc -->
8111 * @return the meta object for the attribute '<em>Insurance category</em>'.
8112 * @see Taxation.DS_for_Health_and_Pension_Insurance#getInsurance_category()
8113 * @see #getDS_for_Health_and_Pension_Insurance()
8114 * @generated
8115 */
8116 EAttribute getDS_for_Health_and_Pension_Insurance_Insurance_category();
8117
8118 /**
8119 * Returns the meta object for class '{@link Taxation.DS_for_Private_Insurance_and_Plan <em>DS for Private Insurance and Plan</em>}'.
8120 * <!-- begin-user-doc -->
8121 * <!-- end-user-doc -->
8122 * @return the meta object for class '<em>DS for Private Insurance and Plan</em>'.
8123 * @see Taxation.DS_for_Private_Insurance_and_Plan
8124 * @generated
8125 */
8126 EClass getDS_for_Private_Insurance_and_Plan();
8127
8128 /**
8129 * Returns the meta object for the attribute '{@link Taxation.DS_for_Private_Insurance_and_Plan#getPrivate_insurance_and_plan_category <em>Private insurance and plan category</em>}'.
8130 * <!-- begin-user-doc -->
8131 * <!-- end-user-doc -->
8132 * @return the meta object for the attribute '<em>Private insurance and plan category</em>'.
8133 * @see Taxation.DS_for_Private_Insurance_and_Plan#getPrivate_insurance_and_plan_category()
8134 * @see #getDS_for_Private_Insurance_and_Plan()
8135 * @generated
8136 */
8137 EAttribute getDS_for_Private_Insurance_and_Plan_Private_insurance_and_plan_category();
8138
8139 /**
8140 * Returns the meta object for the attribute '{@link Taxation.DS_for_Private_Insurance_and_Plan#getIncrease_for_life_insurance <em>Increase for life insurance</em>}'.
8141 * <!-- begin-user-doc -->
8142 * <!-- end-user-doc -->
8143 * @return the meta object for the attribute '<em>Increase for life insurance</em>'.
8144 * @see Taxation.DS_for_Private_Insurance_and_Plan#getIncrease_for_life_insurance()
8145 * @see #getDS_for_Private_Insurance_and_Plan()
8146 * @generated
8147 */
8148 EAttribute getDS_for_Private_Insurance_and_Plan_Increase_for_life_insurance();
8149
8150 /**
8151 * Returns the meta object for the attribute '{@link Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_private_insurance <em>Maximum deductible amount for private insurance</em>}'.
8152 * <!-- begin-user-doc -->
8153 * <!-- end-user-doc -->
8154 * @return the meta object for the attribute '<em>Maximum deductible amount for private insurance</em>'.
8155 * @see Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_private_insurance()
8156 * @see #getDS_for_Private_Insurance_and_Plan()
8157 * @generated
8158 */
8159 EAttribute getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_private_insurance();
8160
8161 /**
8162 * Returns the meta object for the attribute '{@link Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_old_age_pension_plan <em>Maximum deductible amount for old age pension plan</em>}'.
8163 * <!-- begin-user-doc -->
8164 * <!-- end-user-doc -->
8165 * @return the meta object for the attribute '<em>Maximum deductible amount for old age pension plan</em>'.
8166 * @see Taxation.DS_for_Private_Insurance_and_Plan#getMaximum_deductible_amount_for_old_age_pension_plan()
8167 * @see #getDS_for_Private_Insurance_and_Plan()
8168 * @generated
8169 */
8170 EAttribute getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_old_age_pension_plan();
8171
8172 /**
8173 * Returns the meta object for class '{@link Taxation.DS_for_Loss_Carryforward <em>DS for Loss Carryforward</em>}'.
8174 * <!-- begin-user-doc -->
8175 * <!-- end-user-doc -->
8176 * @return the meta object for class '<em>DS for Loss Carryforward</em>'.
8177 * @see Taxation.DS_for_Loss_Carryforward
8178 * @generated
8179 */
8180 EClass getDS_for_Loss_Carryforward();
8181
8182 /**
8183 * Returns the meta object for class '{@link Taxation.DS_for_Donation <em>DS for Donation</em>}'.
8184 * <!-- begin-user-doc -->
8185 * <!-- end-user-doc -->
8186 * @return the meta object for class '<em>DS for Donation</em>'.
8187 * @see Taxation.DS_for_Donation
8188 * @generated
8189 */
8190 EClass getDS_for_Donation();
8191
8192 /**
8193 * Returns the meta object for class '{@link Taxation.Permanent_Expense <em>Permanent Expense</em>}'.
8194 * <!-- begin-user-doc -->
8195 * <!-- end-user-doc -->
8196 * @return the meta object for class '<em>Permanent Expense</em>'.
8197 * @see Taxation.Permanent_Expense
8198 * @generated
8199 */
8200 EClass getPermanent_Expense();
8201
8202 /**
8203 * Returns the meta object for the attribute '{@link Taxation.Permanent_Expense#getCategory <em>Category</em>}'.
8204 * <!-- begin-user-doc -->
8205 * <!-- end-user-doc -->
8206 * @return the meta object for the attribute '<em>Category</em>'.
8207 * @see Taxation.Permanent_Expense#getCategory()
8208 * @see #getPermanent_Expense()
8209 * @generated
8210 */
8211 EAttribute getPermanent_Expense_Category();
8212
8213 /**
8214 * Returns the meta object for the attribute '{@link Taxation.Permanent_Expense#isIs_eligible_for_deduction <em>Is eligible for deduction</em>}'.
8215 * <!-- begin-user-doc -->
8216 * <!-- end-user-doc -->
8217 * @return the meta object for the attribute '<em>Is eligible for deduction</em>'.
8218 * @see Taxation.Permanent_Expense#isIs_eligible_for_deduction()
8219 * @see #getPermanent_Expense()
8220 * @generated
8221 */
8222 EAttribute getPermanent_Expense_Is_eligible_for_deduction();
8223
8224 /**
8225 * Returns the meta object for class '{@link Taxation.Special_Expense_DS <em>Special Expense DS</em>}'.
8226 * <!-- begin-user-doc -->
8227 * <!-- end-user-doc -->
8228 * @return the meta object for class '<em>Special Expense DS</em>'.
8229 * @see Taxation.Special_Expense_DS
8230 * @generated
8231 */
8232 EClass getSpecial_Expense_DS();
8233
8234 /**
8235 * Returns the meta object for class '{@link Taxation.Interest_Expense <em>Interest Expense</em>}'.
8236 * <!-- begin-user-doc -->
8237 * <!-- end-user-doc -->
8238 * @return the meta object for class '<em>Interest Expense</em>'.
8239 * @see Taxation.Interest_Expense
8240 * @generated
8241 */
8242 EClass getInterest_Expense();
8243
8244 /**
8245 * Returns the meta object for class '{@link Taxation.Private_Insurance_and_Plan <em>Private Insurance and Plan</em>}'.
8246 * <!-- begin-user-doc -->
8247 * <!-- end-user-doc -->
8248 * @return the meta object for class '<em>Private Insurance and Plan</em>'.
8249 * @see Taxation.Private_Insurance_and_Plan
8250 * @generated
8251 */
8252 EClass getPrivate_Insurance_and_Plan();
8253
8254 /**
8255 * Returns the meta object for the attribute '{@link Taxation.Private_Insurance_and_Plan#getCategory <em>Category</em>}'.
8256 * <!-- begin-user-doc -->
8257 * <!-- end-user-doc -->
8258 * @return the meta object for the attribute '<em>Category</em>'.
8259 * @see Taxation.Private_Insurance_and_Plan#getCategory()
8260 * @see #getPrivate_Insurance_and_Plan()
8261 * @generated
8262 */
8263 EAttribute getPrivate_Insurance_and_Plan_Category();
8264
8265 /**
8266 * Returns the meta object for the attribute '{@link Taxation.Private_Insurance_and_Plan#getDuration_of_contract <em>Duration of contract</em>}'.
8267 * <!-- begin-user-doc -->
8268 * <!-- end-user-doc -->
8269 * @return the meta object for the attribute '<em>Duration of contract</em>'.
8270 * @see Taxation.Private_Insurance_and_Plan#getDuration_of_contract()
8271 * @see #getPrivate_Insurance_and_Plan()
8272 * @generated
8273 */
8274 EAttribute getPrivate_Insurance_and_Plan_Duration_of_contract();
8275
8276 /**
8277 * Returns the meta object for the attribute '{@link Taxation.Private_Insurance_and_Plan#isIs_private_insurance_and_plan_eligible_for_deduction <em>Is private insurance and plan eligible for deduction</em>}'.
8278 * <!-- begin-user-doc -->
8279 * <!-- end-user-doc -->
8280 * @return the meta object for the attribute '<em>Is private insurance and plan eligible for deduction</em>'.
8281 * @see Taxation.Private_Insurance_and_Plan#isIs_private_insurance_and_plan_eligible_for_deduction()
8282 * @see #getPrivate_Insurance_and_Plan()
8283 * @generated
8284 */
8285 EAttribute getPrivate_Insurance_and_Plan_Is_private_insurance_and_plan_eligible_for_deduction();
8286
8287 /**
8288 * Returns the meta object for class '{@link Taxation.Health_and_Pension_Insurance <em>Health and Pension Insurance</em>}'.
8289 * <!-- begin-user-doc -->
8290 * <!-- end-user-doc -->
8291 * @return the meta object for class '<em>Health and Pension Insurance</em>'.
8292 * @see Taxation.Health_and_Pension_Insurance
8293 * @generated
8294 */
8295 EClass getHealth_and_Pension_Insurance();
8296
8297 /**
8298 * Returns the meta object for the attribute '{@link Taxation.Health_and_Pension_Insurance#getCategory <em>Category</em>}'.
8299 * <!-- begin-user-doc -->
8300 * <!-- end-user-doc -->
8301 * @return the meta object for the attribute '<em>Category</em>'.
8302 * @see Taxation.Health_and_Pension_Insurance#getCategory()
8303 * @see #getHealth_and_Pension_Insurance()
8304 * @generated
8305 */
8306 EAttribute getHealth_and_Pension_Insurance_Category();
8307
8308 /**
8309 * Returns the meta object for the attribute '{@link Taxation.Health_and_Pension_Insurance#isIs_related_to_additional_salary <em>Is related to additional salary</em>}'.
8310 * <!-- begin-user-doc -->
8311 * <!-- end-user-doc -->
8312 * @return the meta object for the attribute '<em>Is related to additional salary</em>'.
8313 * @see Taxation.Health_and_Pension_Insurance#isIs_related_to_additional_salary()
8314 * @see #getHealth_and_Pension_Insurance()
8315 * @generated
8316 */
8317 EAttribute getHealth_and_Pension_Insurance_Is_related_to_additional_salary();
8318
8319 /**
8320 * Returns the meta object for class '{@link Taxation.Donation <em>Donation</em>}'.
8321 * <!-- begin-user-doc -->
8322 * <!-- end-user-doc -->
8323 * @return the meta object for class '<em>Donation</em>'.
8324 * @see Taxation.Donation
8325 * @generated
8326 */
8327 EClass getDonation();
8328
8329 /**
8330 * Returns the meta object for the attribute '{@link Taxation.Donation#getBeneficiary1 <em>Beneficiary1</em>}'.
8331 * <!-- begin-user-doc -->
8332 * <!-- end-user-doc -->
8333 * @return the meta object for the attribute '<em>Beneficiary1</em>'.
8334 * @see Taxation.Donation#getBeneficiary1()
8335 * @see #getDonation()
8336 * @generated
8337 */
8338 EAttribute getDonation_Beneficiary1();
8339
8340 /**
8341 * Returns the meta object for the attribute '{@link Taxation.Donation#isIs_beneficiary_eligible <em>Is beneficiary eligible</em>}'.
8342 * <!-- begin-user-doc -->
8343 * <!-- end-user-doc -->
8344 * @return the meta object for the attribute '<em>Is beneficiary eligible</em>'.
8345 * @see Taxation.Donation#isIs_beneficiary_eligible()
8346 * @see #getDonation()
8347 * @generated
8348 */
8349 EAttribute getDonation_Is_beneficiary_eligible();
8350
8351 /**
8352 * Returns the meta object for the attribute '{@link Taxation.Donation#isIs_donation_reported <em>Is donation reported</em>}'.
8353 * <!-- begin-user-doc -->
8354 * <!-- end-user-doc -->
8355 * @return the meta object for the attribute '<em>Is donation reported</em>'.
8356 * @see Taxation.Donation#isIs_donation_reported()
8357 * @see #getDonation()
8358 * @generated
8359 */
8360 EAttribute getDonation_Is_donation_reported();
8361
8362 /**
8363 * Returns the meta object for class '{@link Taxation.Loss_Carryforward <em>Loss Carryforward</em>}'.
8364 * <!-- begin-user-doc -->
8365 * <!-- end-user-doc -->
8366 * @return the meta object for class '<em>Loss Carryforward</em>'.
8367 * @see Taxation.Loss_Carryforward
8368 * @generated
8369 */
8370 EClass getLoss_Carryforward();
8371
8372 /**
8373 * Returns the meta object for the attribute '{@link Taxation.Loss_Carryforward#isRegular_accountability <em>Regular accountability</em>}'.
8374 * <!-- begin-user-doc -->
8375 * <!-- end-user-doc -->
8376 * @return the meta object for the attribute '<em>Regular accountability</em>'.
8377 * @see Taxation.Loss_Carryforward#isRegular_accountability()
8378 * @see #getLoss_Carryforward()
8379 * @generated
8380 */
8381 EAttribute getLoss_Carryforward_Regular_accountability();
8382
8383 /**
8384 * Returns the meta object for the attribute '{@link Taxation.Loss_Carryforward#isCompensation_by_other_means <em>Compensation by other means</em>}'.
8385 * <!-- begin-user-doc -->
8386 * <!-- end-user-doc -->
8387 * @return the meta object for the attribute '<em>Compensation by other means</em>'.
8388 * @see Taxation.Loss_Carryforward#isCompensation_by_other_means()
8389 * @see #getLoss_Carryforward()
8390 * @generated
8391 */
8392 EAttribute getLoss_Carryforward_Compensation_by_other_means();
8393
8394 /**
8395 * Returns the meta object for the attribute '{@link Taxation.Loss_Carryforward#isTax_payer_has_inherited_business_ownership <em>Tax payer has inherited business ownership</em>}'.
8396 * <!-- begin-user-doc -->
8397 * <!-- end-user-doc -->
8398 * @return the meta object for the attribute '<em>Tax payer has inherited business ownership</em>'.
8399 * @see Taxation.Loss_Carryforward#isTax_payer_has_inherited_business_ownership()
8400 * @see #getLoss_Carryforward()
8401 * @generated
8402 */
8403 EAttribute getLoss_Carryforward_Tax_payer_has_inherited_business_ownership();
8404
8405 /**
8406 * Returns the meta object for the attribute '{@link Taxation.Loss_Carryforward#isTax_payer_has_been_partner_in_business <em>Tax payer has been partner in business</em>}'.
8407 * <!-- begin-user-doc -->
8408 * <!-- end-user-doc -->
8409 * @return the meta object for the attribute '<em>Tax payer has been partner in business</em>'.
8410 * @see Taxation.Loss_Carryforward#isTax_payer_has_been_partner_in_business()
8411 * @see #getLoss_Carryforward()
8412 * @generated
8413 */
8414 EAttribute getLoss_Carryforward_Tax_payer_has_been_partner_in_business();
8415
8416 /**
8417 * Returns the meta object for class '{@link Taxation.Spousal_Expense_AC <em>Spousal Expense AC</em>}'.
8418 * <!-- begin-user-doc -->
8419 * <!-- end-user-doc -->
8420 * @return the meta object for class '<em>Spousal Expense AC</em>'.
8421 * @see Taxation.Spousal_Expense_AC
8422 * @generated
8423 */
8424 EClass getSpousal_Expense_AC();
8425
8426 /**
8427 * Returns the meta object for class '{@link Taxation.Extraordinary_Expense_CE <em>Extraordinary Expense CE</em>}'.
8428 * <!-- begin-user-doc -->
8429 * <!-- end-user-doc -->
8430 * @return the meta object for class '<em>Extraordinary Expense CE</em>'.
8431 * @see Taxation.Extraordinary_Expense_CE
8432 * @generated
8433 */
8434 EClass getExtraordinary_Expense_CE();
8435
8436 /**
8437 * Returns the meta object for the attribute '{@link Taxation.Extraordinary_Expense_CE#getThresholded_deduction_percentage <em>Thresholded deduction percentage</em>}'.
8438 * <!-- begin-user-doc -->
8439 * <!-- end-user-doc -->
8440 * @return the meta object for the attribute '<em>Thresholded deduction percentage</em>'.
8441 * @see Taxation.Extraordinary_Expense_CE#getThresholded_deduction_percentage()
8442 * @see #getExtraordinary_Expense_CE()
8443 * @generated
8444 */
8445 EAttribute getExtraordinary_Expense_CE_Thresholded_deduction_percentage();
8446
8447 /**
8448 * Returns the meta object for the attribute '{@link Taxation.Extraordinary_Expense_CE#getCe_type <em>Ce type</em>}'.
8449 * <!-- begin-user-doc -->
8450 * <!-- end-user-doc -->
8451 * @return the meta object for the attribute '<em>Ce type</em>'.
8452 * @see Taxation.Extraordinary_Expense_CE#getCe_type()
8453 * @see #getExtraordinary_Expense_CE()
8454 * @generated
8455 */
8456 EAttribute getExtraordinary_Expense_CE_Ce_type();
8457
8458 /**
8459 * Returns the meta object for class '{@link Taxation.Travel_Expense_FD <em>Travel Expense FD</em>}'.
8460 * <!-- begin-user-doc -->
8461 * <!-- end-user-doc -->
8462 * @return the meta object for class '<em>Travel Expense FD</em>'.
8463 * @see Taxation.Travel_Expense_FD
8464 * @generated
8465 */
8466 EClass getTravel_Expense_FD();
8467
8468 /**
8469 * Returns the meta object for class '{@link Taxation.Professional_Expense <em>Professional Expense</em>}'.
8470 * <!-- begin-user-doc -->
8471 * <!-- end-user-doc -->
8472 * @return the meta object for class '<em>Professional Expense</em>'.
8473 * @see Taxation.Professional_Expense
8474 * @generated
8475 */
8476 EClass getProfessional_Expense();
8477
8478 /**
8479 * Returns the meta object for class '{@link Taxation.Miscellaneous_Expense_FO <em>Miscellaneous Expense FO</em>}'.
8480 * <!-- begin-user-doc -->
8481 * <!-- end-user-doc -->
8482 * @return the meta object for class '<em>Miscellaneous Expense FO</em>'.
8483 * @see Taxation.Miscellaneous_Expense_FO
8484 * @generated
8485 */
8486 EClass getMiscellaneous_Expense_FO();
8487
8488 /**
8489 * Returns the meta object for enum '{@link Taxation.Grantor <em>Grantor</em>}'.
8490 * <!-- begin-user-doc -->
8491 * <!-- end-user-doc -->
8492 * @return the meta object for enum '<em>Grantor</em>'.
8493 * @see Taxation.Grantor
8494 * @generated
8495 */
8496 EEnum getGrantor();
8497
8498 /**
8499 * Returns the meta object for enum '{@link Taxation.Disability_Types <em>Disability Types</em>}'.
8500 * <!-- begin-user-doc -->
8501 * <!-- end-user-doc -->
8502 * @return the meta object for enum '<em>Disability Types</em>'.
8503 * @see Taxation.Disability_Types
8504 * @generated
8505 */
8506 EEnum getDisability_Types();
8507
8508 /**
8509 * Returns the meta object for enum '{@link Taxation.Country <em>Country</em>}'.
8510 * <!-- begin-user-doc -->
8511 * <!-- end-user-doc -->
8512 * @return the meta object for enum '<em>Country</em>'.
8513 * @see Taxation.Country
8514 * @generated
8515 */
8516 EEnum getCountry();
8517
8518 /**
8519 * Returns the meta object for enum '{@link Taxation.Tax_Card_Type <em>Tax Card Type</em>}'.
8520 * <!-- begin-user-doc -->
8521 * <!-- end-user-doc -->
8522 * @return the meta object for enum '<em>Tax Card Type</em>'.
8523 * @see Taxation.Tax_Card_Type
8524 * @generated
8525 */
8526 EEnum getTax_Card_Type();
8527
8528 /**
8529 * Returns the meta object for enum '{@link Taxation.Tax_Office <em>Tax Office</em>}'.
8530 * <!-- begin-user-doc -->
8531 * <!-- end-user-doc -->
8532 * @return the meta object for enum '<em>Tax Office</em>'.
8533 * @see Taxation.Tax_Office
8534 * @generated
8535 */
8536 EEnum getTax_Office();
8537
8538 /**
8539 * Returns the meta object for enum '{@link Taxation.Tax_Class_Category <em>Tax Class Category</em>}'.
8540 * <!-- begin-user-doc -->
8541 * <!-- end-user-doc -->
8542 * @return the meta object for enum '<em>Tax Class Category</em>'.
8543 * @see Taxation.Tax_Class_Category
8544 * @generated
8545 */
8546 EEnum getTax_Class_Category();
8547
8548 /**
8549 * Returns the meta object for enum '{@link Taxation.Job_Activity <em>Job Activity</em>}'.
8550 * <!-- begin-user-doc -->
8551 * <!-- end-user-doc -->
8552 * @return the meta object for enum '<em>Job Activity</em>'.
8553 * @see Taxation.Job_Activity
8554 * @generated
8555 */
8556 EEnum getJob_Activity();
8557
8558 /**
8559 * Returns the meta object for enum '{@link Taxation.Town <em>Town</em>}'.
8560 * <!-- begin-user-doc -->
8561 * <!-- end-user-doc -->
8562 * @return the meta object for enum '<em>Town</em>'.
8563 * @see Taxation.Town
8564 * @generated
8565 */
8566 EEnum getTown();
8567
8568 /**
8569 * Returns the meta object for enum '{@link Taxation.Type_of_Rate <em>Type of Rate</em>}'.
8570 * <!-- begin-user-doc -->
8571 * <!-- end-user-doc -->
8572 * @return the meta object for enum '<em>Type of Rate</em>'.
8573 * @see Taxation.Type_of_Rate
8574 * @generated
8575 */
8576 EEnum getType_of_Rate();
8577
8578 /**
8579 * Returns the meta object for enum '{@link Taxation.CE_Type <em>CE Type</em>}'.
8580 * <!-- begin-user-doc -->
8581 * <!-- end-user-doc -->
8582 * @return the meta object for enum '<em>CE Type</em>'.
8583 * @see Taxation.CE_Type
8584 * @generated
8585 */
8586 EEnum getCE_Type();
8587
8588 /**
8589 * Returns the meta object for enum '{@link Taxation.Expense_Purpose <em>Expense Purpose</em>}'.
8590 * <!-- begin-user-doc -->
8591 * <!-- end-user-doc -->
8592 * @return the meta object for enum '<em>Expense Purpose</em>'.
8593 * @see Taxation.Expense_Purpose
8594 * @generated
8595 */
8596 EEnum getExpense_Purpose();
8597
8598 /**
8599 * Returns the meta object for enum '{@link Taxation.Dependent_Type <em>Dependent Type</em>}'.
8600 * <!-- begin-user-doc -->
8601 * <!-- end-user-doc -->
8602 * @return the meta object for enum '<em>Dependent Type</em>'.
8603 * @see Taxation.Dependent_Type
8604 * @generated
8605 */
8606 EEnum getDependent_Type();
8607
8608 /**
8609 * Returns the meta object for enum '{@link Taxation.Separation_Causes <em>Separation Causes</em>}'.
8610 * <!-- begin-user-doc -->
8611 * <!-- end-user-doc -->
8612 * @return the meta object for enum '<em>Separation Causes</em>'.
8613 * @see Taxation.Separation_Causes
8614 * @generated
8615 */
8616 EEnum getSeparation_Causes();
8617
8618 /**
8619 * Returns the meta object for enum '{@link Taxation.Category_of_Permanent_Expense <em>Category of Permanent Expense</em>}'.
8620 * <!-- begin-user-doc -->
8621 * <!-- end-user-doc -->
8622 * @return the meta object for enum '<em>Category of Permanent Expense</em>'.
8623 * @see Taxation.Category_of_Permanent_Expense
8624 * @generated
8625 */
8626 EEnum getCategory_of_Permanent_Expense();
8627
8628 /**
8629 * Returns the meta object for enum '{@link Taxation.Category_of_Health_and_Pension_Insurances <em>Category of Health and Pension Insurances</em>}'.
8630 * <!-- begin-user-doc -->
8631 * <!-- end-user-doc -->
8632 * @return the meta object for enum '<em>Category of Health and Pension Insurances</em>'.
8633 * @see Taxation.Category_of_Health_and_Pension_Insurances
8634 * @generated
8635 */
8636 EEnum getCategory_of_Health_and_Pension_Insurances();
8637
8638 /**
8639 * Returns the meta object for enum '{@link Taxation.Category_of_Private_Insurance_and_Plan <em>Category of Private Insurance and Plan</em>}'.
8640 * <!-- begin-user-doc -->
8641 * <!-- end-user-doc -->
8642 * @return the meta object for enum '<em>Category of Private Insurance and Plan</em>'.
8643 * @see Taxation.Category_of_Private_Insurance_and_Plan
8644 * @generated
8645 */
8646 EEnum getCategory_of_Private_Insurance_and_Plan();
8647
8648 /**
8649 * Returns the meta object for enum '{@link Taxation.Legal_Union_Types <em>Legal Union Types</em>}'.
8650 * <!-- begin-user-doc -->
8651 * <!-- end-user-doc -->
8652 * @return the meta object for enum '<em>Legal Union Types</em>'.
8653 * @see Taxation.Legal_Union_Types
8654 * @generated
8655 */
8656 EEnum getLegal_Union_Types();
8657
8658 /**
8659 * Returns the factory that creates the instances of the model.
8660 * <!-- begin-user-doc -->
8661 * <!-- end-user-doc -->
8662 * @return the factory that creates the instances of the model.
8663 * @generated
8664 */
8665 TaxationFactory getTaxationFactory();
8666
8667 /**
8668 * <!-- begin-user-doc -->
8669 * Defines literals for the meta objects that represent
8670 * <ul>
8671 * <li>each class,</li>
8672 * <li>each feature of each class,</li>
8673 * <li>each operation of each class,</li>
8674 * <li>each enum,</li>
8675 * <li>and each data type</li>
8676 * </ul>
8677 * <!-- end-user-doc -->
8678 * @generated
8679 */
8680 interface Literals {
8681 /**
8682 * The meta object literal for the '{@link Taxation.impl.ConstantsImpl <em>Constants</em>}' class.
8683 * <!-- begin-user-doc -->
8684 * <!-- end-user-doc -->
8685 * @see Taxation.impl.ConstantsImpl
8686 * @see Taxation.impl.TaxationPackageImpl#getConstants()
8687 * @generated
8688 */
8689 EClass CONSTANTS = eINSTANCE.getConstants();
8690
8691 /**
8692 * The meta object literal for the '<em><b>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</b></em>' attribute feature.
8693 * <!-- begin-user-doc -->
8694 * <!-- end-user-doc -->
8695 * @generated
8696 */
8697 EAttribute CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD = eINSTANCE.getConstants_MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD();
8698
8699 /**
8700 * The meta object literal for the '<em><b>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</b></em>' attribute feature.
8701 * <!-- begin-user-doc -->
8702 * <!-- end-user-doc -->
8703 * @generated
8704 */
8705 EAttribute CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE = eINSTANCE.getConstants_MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE();
8706
8707 /**
8708 * The meta object literal for the '<em><b>MINIMUM SALARY</b></em>' attribute feature.
8709 * <!-- begin-user-doc -->
8710 * <!-- end-user-doc -->
8711 * @generated
8712 */
8713 EAttribute CONSTANTS__MINIMUM_SALARY = eINSTANCE.getConstants_MINIMUM_SALARY();
8714
8715 /**
8716 * The meta object literal for the '<em><b>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</b></em>' attribute feature.
8717 * <!-- begin-user-doc -->
8718 * <!-- end-user-doc -->
8719 * @generated
8720 */
8721 EAttribute CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION = eINSTANCE.getConstants_FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION();
8722
8723 /**
8724 * The meta object literal for the '<em><b>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</b></em>' attribute feature.
8725 * <!-- begin-user-doc -->
8726 * <!-- end-user-doc -->
8727 * @generated
8728 */
8729 EAttribute CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS = eINSTANCE.getConstants_MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS();
8730
8731 /**
8732 * The meta object literal for the '<em><b>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</b></em>' attribute feature.
8733 * <!-- begin-user-doc -->
8734 * <!-- end-user-doc -->
8735 * @generated
8736 */
8737 EAttribute CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS = eINSTANCE.getConstants_MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS();
8738
8739 /**
8740 * The meta object literal for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</b></em>' attribute feature.
8741 * <!-- begin-user-doc -->
8742 * <!-- end-user-doc -->
8743 * @generated
8744 */
8745 EAttribute CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC = eINSTANCE.getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC();
8746
8747 /**
8748 * The meta object literal for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</b></em>' attribute feature.
8749 * <!-- begin-user-doc -->
8750 * <!-- end-user-doc -->
8751 * @generated
8752 */
8753 EAttribute CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE = eINSTANCE.getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE();
8754
8755 /**
8756 * The meta object literal for the '<em><b>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute feature.
8757 * <!-- begin-user-doc -->
8758 * <!-- end-user-doc -->
8759 * @generated
8760 */
8761 EAttribute CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = eINSTANCE.getConstants_MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
8762
8763 /**
8764 * The meta object literal for the '<em><b>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute feature.
8765 * <!-- begin-user-doc -->
8766 * <!-- end-user-doc -->
8767 * @generated
8768 */
8769 EAttribute CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = eINSTANCE.getConstants_MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
8770
8771 /**
8772 * The meta object literal for the '<em><b>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</b></em>' attribute feature.
8773 * <!-- begin-user-doc -->
8774 * <!-- end-user-doc -->
8775 * @generated
8776 */
8777 EAttribute CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = eINSTANCE.getConstants_MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
8778
8779 /**
8780 * The meta object literal for the '<em><b>FLAT RATE CIM DAILY</b></em>' attribute feature.
8781 * <!-- begin-user-doc -->
8782 * <!-- end-user-doc -->
8783 * @generated
8784 */
8785 EAttribute CONSTANTS__FLAT_RATE_CIM_DAILY = eINSTANCE.getConstants_FLAT_RATE_CIM_DAILY();
8786
8787 /**
8788 * The meta object literal for the '<em><b>FLAT RATE CIM MONTHLY</b></em>' attribute feature.
8789 * <!-- begin-user-doc -->
8790 * <!-- end-user-doc -->
8791 * @generated
8792 */
8793 EAttribute CONSTANTS__FLAT_RATE_CIM_MONTHLY = eINSTANCE.getConstants_FLAT_RATE_CIM_MONTHLY();
8794
8795 /**
8796 * The meta object literal for the '<em><b>FLAT RATE CIM YEARLY</b></em>' attribute feature.
8797 * <!-- begin-user-doc -->
8798 * <!-- end-user-doc -->
8799 * @generated
8800 */
8801 EAttribute CONSTANTS__FLAT_RATE_CIM_YEARLY = eINSTANCE.getConstants_FLAT_RATE_CIM_YEARLY();
8802
8803 /**
8804 * The meta object literal for the '<em><b>FLAT RATE CIP DAILY</b></em>' attribute feature.
8805 * <!-- begin-user-doc -->
8806 * <!-- end-user-doc -->
8807 * @generated
8808 */
8809 EAttribute CONSTANTS__FLAT_RATE_CIP_DAILY = eINSTANCE.getConstants_FLAT_RATE_CIP_DAILY();
8810
8811 /**
8812 * The meta object literal for the '<em><b>FLAT RATE CIP MONTHLY</b></em>' attribute feature.
8813 * <!-- begin-user-doc -->
8814 * <!-- end-user-doc -->
8815 * @generated
8816 */
8817 EAttribute CONSTANTS__FLAT_RATE_CIP_MONTHLY = eINSTANCE.getConstants_FLAT_RATE_CIP_MONTHLY();
8818
8819 /**
8820 * The meta object literal for the '<em><b>FLAT RATE CIP YEARLY</b></em>' attribute feature.
8821 * <!-- begin-user-doc -->
8822 * <!-- end-user-doc -->
8823 * @generated
8824 */
8825 EAttribute CONSTANTS__FLAT_RATE_CIP_YEARLY = eINSTANCE.getConstants_FLAT_RATE_CIP_YEARLY();
8826
8827 /**
8828 * The meta object literal for the '<em><b>FLAT RATE CIS DAILY</b></em>' attribute feature.
8829 * <!-- begin-user-doc -->
8830 * <!-- end-user-doc -->
8831 * @generated
8832 */
8833 EAttribute CONSTANTS__FLAT_RATE_CIS_DAILY = eINSTANCE.getConstants_FLAT_RATE_CIS_DAILY();
8834
8835 /**
8836 * The meta object literal for the '<em><b>FLAT RATE CIS MONTHLY</b></em>' attribute feature.
8837 * <!-- begin-user-doc -->
8838 * <!-- end-user-doc -->
8839 * @generated
8840 */
8841 EAttribute CONSTANTS__FLAT_RATE_CIS_MONTHLY = eINSTANCE.getConstants_FLAT_RATE_CIS_MONTHLY();
8842
8843 /**
8844 * The meta object literal for the '<em><b>FLAT RATE CIS YEARLY</b></em>' attribute feature.
8845 * <!-- begin-user-doc -->
8846 * <!-- end-user-doc -->
8847 * @generated
8848 */
8849 EAttribute CONSTANTS__FLAT_RATE_CIS_YEARLY = eINSTANCE.getConstants_FLAT_RATE_CIS_YEARLY();
8850
8851 /**
8852 * The meta object literal for the '<em><b>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</b></em>' attribute feature.
8853 * <!-- begin-user-doc -->
8854 * <!-- end-user-doc -->
8855 * @generated
8856 */
8857 EAttribute CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT = eINSTANCE.getConstants_FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT();
8858
8859 /**
8860 * The meta object literal for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</b></em>' attribute feature.
8861 * <!-- begin-user-doc -->
8862 * <!-- end-user-doc -->
8863 * @generated
8864 */
8865 EAttribute CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS = eINSTANCE.getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS();
8866
8867 /**
8868 * The meta object literal for the '<em><b>FLAT RATE FOR MISCELLANEOUS EXPENSE</b></em>' attribute feature.
8869 * <!-- begin-user-doc -->
8870 * <!-- end-user-doc -->
8871 * @generated
8872 */
8873 EAttribute CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = eINSTANCE.getConstants_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
8874
8875 /**
8876 * The meta object literal for the '<em><b>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</b></em>' attribute feature.
8877 * <!-- begin-user-doc -->
8878 * <!-- end-user-doc -->
8879 * @generated
8880 */
8881 EAttribute CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = eINSTANCE.getConstants_DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
8882
8883 /**
8884 * The meta object literal for the '<em><b>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</b></em>' attribute feature.
8885 * <!-- begin-user-doc -->
8886 * <!-- end-user-doc -->
8887 * @generated
8888 */
8889 EAttribute CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE = eINSTANCE.getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE();
8890
8891 /**
8892 * The meta object literal for the '{@link Taxation.impl.Income_TaxImpl <em>Income Tax</em>}' class.
8893 * <!-- begin-user-doc -->
8894 * <!-- end-user-doc -->
8895 * @see Taxation.impl.Income_TaxImpl
8896 * @see Taxation.impl.TaxationPackageImpl#getIncome_Tax()
8897 * @generated
8898 */
8899 EClass INCOME_TAX = eINSTANCE.getIncome_Tax();
8900
8901 /**
8902 * The meta object literal for the '<em><b>Tax Payer</b></em>' reference feature.
8903 * <!-- begin-user-doc -->
8904 * <!-- end-user-doc -->
8905 * @generated
8906 */
8907 EReference INCOME_TAX__TAX_PAYER = eINSTANCE.getIncome_Tax_TaxPayer();
8908
8909 /**
8910 * The meta object literal for the '<em><b>Tax amount</b></em>' attribute feature.
8911 * <!-- begin-user-doc -->
8912 * <!-- end-user-doc -->
8913 * @generated
8914 */
8915 EAttribute INCOME_TAX__TAX_AMOUNT = eINSTANCE.getIncome_Tax_Tax_amount();
8916
8917 /**
8918 * The meta object literal for the '<em><b>Tax year</b></em>' attribute feature.
8919 * <!-- begin-user-doc -->
8920 * <!-- end-user-doc -->
8921 * @generated
8922 */
8923 EAttribute INCOME_TAX__TAX_YEAR = eINSTANCE.getIncome_Tax_Tax_year();
8924
8925 /**
8926 * The meta object literal for the '<em><b>Id6</b></em>' attribute feature.
8927 * <!-- begin-user-doc -->
8928 * <!-- end-user-doc -->
8929 * @generated
8930 */
8931 EAttribute INCOME_TAX__ID6 = eINSTANCE.getIncome_Tax_Id6();
8932
8933 /**
8934 * The meta object literal for the '{@link Taxation.impl.Tax_PayerImpl <em>Tax Payer</em>}' class.
8935 * <!-- begin-user-doc -->
8936 * <!-- end-user-doc -->
8937 * @see Taxation.impl.Tax_PayerImpl
8938 * @see Taxation.impl.TaxationPackageImpl#getTax_Payer()
8939 * @generated
8940 */
8941 EClass TAX_PAYER = eINSTANCE.getTax_Payer();
8942
8943 /**
8944 * The meta object literal for the '<em><b>Dependents</b></em>' containment reference list feature.
8945 * <!-- begin-user-doc -->
8946 * <!-- end-user-doc -->
8947 * @generated
8948 */
8949 EReference TAX_PAYER__DEPENDENTS = eINSTANCE.getTax_Payer_Dependents();
8950
8951 /**
8952 * The meta object literal for the '<em><b>From agent</b></em>' containment reference feature.
8953 * <!-- begin-user-doc -->
8954 * <!-- end-user-doc -->
8955 * @generated
8956 */
8957 EReference TAX_PAYER__FROM_AGENT = eINSTANCE.getTax_Payer_From_agent();
8958
8959 /**
8960 * The meta object literal for the '<em><b>Incomes</b></em>' containment reference list feature.
8961 * <!-- begin-user-doc -->
8962 * <!-- end-user-doc -->
8963 * @generated
8964 */
8965 EReference TAX_PAYER__INCOMES = eINSTANCE.getTax_Payer_Incomes();
8966
8967 /**
8968 * The meta object literal for the '<em><b>From law</b></em>' containment reference feature.
8969 * <!-- begin-user-doc -->
8970 * <!-- end-user-doc -->
8971 * @generated
8972 */
8973 EReference TAX_PAYER__FROM_LAW = eINSTANCE.getTax_Payer_From_law();
8974
8975 /**
8976 * The meta object literal for the '<em><b>Taxes Due</b></em>' attribute feature.
8977 * <!-- begin-user-doc -->
8978 * <!-- end-user-doc -->
8979 * @generated
8980 */
8981 EAttribute TAX_PAYER__TAXES_DUE = eINSTANCE.getTax_Payer_TaxesDue();
8982
8983 /**
8984 * The meta object literal for the '{@link Taxation.impl.Physical_PersonImpl <em>Physical Person</em>}' class.
8985 * <!-- begin-user-doc -->
8986 * <!-- end-user-doc -->
8987 * @see Taxation.impl.Physical_PersonImpl
8988 * @see Taxation.impl.TaxationPackageImpl#getPhysical_Person()
8989 * @generated
8990 */
8991 EClass PHYSICAL_PERSON = eINSTANCE.getPhysical_Person();
8992
8993 /**
8994 * The meta object literal for the '<em><b>Is assisting spouse</b></em>' attribute feature.
8995 * <!-- begin-user-doc -->
8996 * <!-- end-user-doc -->
8997 * @generated
8998 */
8999 EAttribute PHYSICAL_PERSON__IS_ASSISTING_SPOUSE = eINSTANCE.getPhysical_Person_Is_assisting_spouse();
9000
9001 /**
9002 * The meta object literal for the '<em><b>SS No</b></em>' attribute feature.
9003 * <!-- begin-user-doc -->
9004 * <!-- end-user-doc -->
9005 * @generated
9006 */
9007 EAttribute PHYSICAL_PERSON__SS_NO = eINSTANCE.getPhysical_Person_SSNo();
9008
9009 /**
9010 * The meta object literal for the '<em><b>Addresses</b></em>' reference list feature.
9011 * <!-- begin-user-doc -->
9012 * <!-- end-user-doc -->
9013 * @generated
9014 */
9015 EReference PHYSICAL_PERSON__ADDRESSES = eINSTANCE.getPhysical_Person_Addresses();
9016
9017 /**
9018 * The meta object literal for the '<em><b>Birth year</b></em>' attribute feature.
9019 * <!-- begin-user-doc -->
9020 * <!-- end-user-doc -->
9021 * @generated
9022 */
9023 EAttribute PHYSICAL_PERSON__BIRTH_YEAR = eINSTANCE.getPhysical_Person_Birth_year();
9024
9025 /**
9026 * The meta object literal for the '<em><b>Disability percentage</b></em>' attribute feature.
9027 * <!-- begin-user-doc -->
9028 * <!-- end-user-doc -->
9029 * @generated
9030 */
9031 EAttribute PHYSICAL_PERSON__DISABILITY_PERCENTAGE = eINSTANCE.getPhysical_Person_Disability_percentage();
9032
9033 /**
9034 * The meta object literal for the '<em><b>Disability type</b></em>' attribute feature.
9035 * <!-- begin-user-doc -->
9036 * <!-- end-user-doc -->
9037 * @generated
9038 */
9039 EAttribute PHYSICAL_PERSON__DISABILITY_TYPE = eINSTANCE.getPhysical_Person_Disability_type();
9040
9041 /**
9042 * The meta object literal for the '<em><b>Is affiliated personnaly to social security</b></em>' attribute feature.
9043 * <!-- begin-user-doc -->
9044 * <!-- end-user-doc -->
9045 * @generated
9046 */
9047 EAttribute PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY = eINSTANCE.getPhysical_Person_Is_affiliated_personnaly_to_social_security();
9048
9049 /**
9050 * The meta object literal for the '<em><b>Birth month</b></em>' attribute feature.
9051 * <!-- begin-user-doc -->
9052 * <!-- end-user-doc -->
9053 * @generated
9054 */
9055 EAttribute PHYSICAL_PERSON__BIRTH_MONTH = eINSTANCE.getPhysical_Person_Birth_month();
9056
9057 /**
9058 * The meta object literal for the '<em><b>Birth day</b></em>' attribute feature.
9059 * <!-- begin-user-doc -->
9060 * <!-- end-user-doc -->
9061 * @generated
9062 */
9063 EAttribute PHYSICAL_PERSON__BIRTH_DAY = eINSTANCE.getPhysical_Person_Birth_day();
9064
9065 /**
9066 * The meta object literal for the '<em><b>Expenses</b></em>' reference list feature.
9067 * <!-- begin-user-doc -->
9068 * <!-- end-user-doc -->
9069 * @generated
9070 */
9071 EReference PHYSICAL_PERSON__EXPENSES = eINSTANCE.getPhysical_Person_Expenses();
9072
9073 /**
9074 * The meta object literal for the '<em><b>Is widower</b></em>' attribute feature.
9075 * <!-- begin-user-doc -->
9076 * <!-- end-user-doc -->
9077 * @generated
9078 */
9079 EAttribute PHYSICAL_PERSON__IS_WIDOWER = eINSTANCE.getPhysical_Person_Is_widower();
9080
9081 /**
9082 * The meta object literal for the '<em><b>Owns Address</b></em>' containment reference list feature.
9083 * <!-- begin-user-doc -->
9084 * <!-- end-user-doc -->
9085 * @generated
9086 */
9087 EReference PHYSICAL_PERSON__OWNS_ADDRESS = eINSTANCE.getPhysical_Person_Owns_Address();
9088
9089 /**
9090 * The meta object literal for the '{@link Taxation.impl.AddressImpl <em>Address</em>}' class.
9091 * <!-- begin-user-doc -->
9092 * <!-- end-user-doc -->
9093 * @see Taxation.impl.AddressImpl
9094 * @see Taxation.impl.TaxationPackageImpl#getAddress()
9095 * @generated
9096 */
9097 EClass ADDRESS = eINSTANCE.getAddress();
9098
9099 /**
9100 * The meta object literal for the '<em><b>Country</b></em>' attribute feature.
9101 * <!-- begin-user-doc -->
9102 * <!-- end-user-doc -->
9103 * @generated
9104 */
9105 EAttribute ADDRESS__COUNTRY = eINSTANCE.getAddress_Country();
9106
9107 /**
9108 * The meta object literal for the '<em><b>Street</b></em>' attribute feature.
9109 * <!-- begin-user-doc -->
9110 * <!-- end-user-doc -->
9111 * @generated
9112 */
9113 EAttribute ADDRESS__STREET = eINSTANCE.getAddress_Street();
9114
9115 /**
9116 * The meta object literal for the '<em><b>Zip Code</b></em>' attribute feature.
9117 * <!-- begin-user-doc -->
9118 * <!-- end-user-doc -->
9119 * @generated
9120 */
9121 EAttribute ADDRESS__ZIP_CODE = eINSTANCE.getAddress_ZipCode();
9122
9123 /**
9124 * The meta object literal for the '<em><b>City</b></em>' attribute feature.
9125 * <!-- begin-user-doc -->
9126 * <!-- end-user-doc -->
9127 * @generated
9128 */
9129 EAttribute ADDRESS__CITY = eINSTANCE.getAddress_City();
9130
9131 /**
9132 * The meta object literal for the '<em><b>Id2</b></em>' attribute feature.
9133 * <!-- begin-user-doc -->
9134 * <!-- end-user-doc -->
9135 * @generated
9136 */
9137 EAttribute ADDRESS__ID2 = eINSTANCE.getAddress_Id2();
9138
9139 /**
9140 * The meta object literal for the '<em><b>Tax Payer</b></em>' reference list feature.
9141 * <!-- begin-user-doc -->
9142 * <!-- end-user-doc -->
9143 * @generated
9144 */
9145 EReference ADDRESS__TAX_PAYER = eINSTANCE.getAddress_TaxPayer();
9146
9147 /**
9148 * The meta object literal for the '{@link Taxation.impl.ExpenseImpl <em>Expense</em>}' class.
9149 * <!-- begin-user-doc -->
9150 * <!-- end-user-doc -->
9151 * @see Taxation.impl.ExpenseImpl
9152 * @see Taxation.impl.TaxationPackageImpl#getExpense()
9153 * @generated
9154 */
9155 EClass EXPENSE = eINSTANCE.getExpense();
9156
9157 /**
9158 * The meta object literal for the '<em><b>Declared amount</b></em>' attribute feature.
9159 * <!-- begin-user-doc -->
9160 * <!-- end-user-doc -->
9161 * @generated
9162 */
9163 EAttribute EXPENSE__DECLARED_AMOUNT = eINSTANCE.getExpense_Declared_amount();
9164
9165 /**
9166 * The meta object literal for the '<em><b>Expense purpose</b></em>' attribute feature.
9167 * <!-- begin-user-doc -->
9168 * <!-- end-user-doc -->
9169 * @generated
9170 */
9171 EAttribute EXPENSE__EXPENSE_PURPOSE = eINSTANCE.getExpense_Expense_purpose();
9172
9173 /**
9174 * The meta object literal for the '<em><b>Dependent</b></em>' reference feature.
9175 * <!-- begin-user-doc -->
9176 * <!-- end-user-doc -->
9177 * @generated
9178 */
9179 EReference EXPENSE__DEPENDENT = eINSTANCE.getExpense_Dependent();
9180
9181 /**
9182 * The meta object literal for the '<em><b>From agent</b></em>' reference feature.
9183 * <!-- begin-user-doc -->
9184 * <!-- end-user-doc -->
9185 * @generated
9186 */
9187 EReference EXPENSE__FROM_AGENT = eINSTANCE.getExpense_From_agent();
9188
9189 /**
9190 * The meta object literal for the '<em><b>Income</b></em>' container reference feature.
9191 * <!-- begin-user-doc -->
9192 * <!-- end-user-doc -->
9193 * @generated
9194 */
9195 EReference EXPENSE__INCOME = eINSTANCE.getExpense_Income();
9196
9197 /**
9198 * The meta object literal for the '<em><b>Id4</b></em>' attribute feature.
9199 * <!-- begin-user-doc -->
9200 * <!-- end-user-doc -->
9201 * @generated
9202 */
9203 EAttribute EXPENSE__ID4 = eINSTANCE.getExpense_Id4();
9204
9205 /**
9206 * The meta object literal for the '<em><b>Beneficiary</b></em>' reference feature.
9207 * <!-- begin-user-doc -->
9208 * <!-- end-user-doc -->
9209 * @generated
9210 */
9211 EReference EXPENSE__BENEFICIARY = eINSTANCE.getExpense_Beneficiary();
9212
9213 /**
9214 * The meta object literal for the '{@link Taxation.impl.DependentImpl <em>Dependent</em>}' class.
9215 * <!-- begin-user-doc -->
9216 * <!-- end-user-doc -->
9217 * @see Taxation.impl.DependentImpl
9218 * @see Taxation.impl.TaxationPackageImpl#getDependent()
9219 * @generated
9220 */
9221 EClass DEPENDENT = eINSTANCE.getDependent();
9222
9223 /**
9224 * The meta object literal for the '<em><b>Dependent type</b></em>' attribute feature.
9225 * <!-- begin-user-doc -->
9226 * <!-- end-user-doc -->
9227 * @generated
9228 */
9229 EAttribute DEPENDENT__DEPENDENT_TYPE = eINSTANCE.getDependent_Dependent_type();
9230
9231 /**
9232 * The meta object literal for the '<em><b>Responsible person</b></em>' container reference feature.
9233 * <!-- begin-user-doc -->
9234 * <!-- end-user-doc -->
9235 * @generated
9236 */
9237 EReference DEPENDENT__RESPONSIBLE_PERSON = eINSTANCE.getDependent_Responsible_person();
9238
9239 /**
9240 * The meta object literal for the '<em><b>Continued studies</b></em>' attribute feature.
9241 * <!-- begin-user-doc -->
9242 * <!-- end-user-doc -->
9243 * @generated
9244 */
9245 EAttribute DEPENDENT__CONTINUED_STUDIES = eINSTANCE.getDependent_Continued_studies();
9246
9247 /**
9248 * The meta object literal for the '<em><b>Allowances</b></em>' containment reference feature.
9249 * <!-- begin-user-doc -->
9250 * <!-- end-user-doc -->
9251 * @generated
9252 */
9253 EReference DEPENDENT__ALLOWANCES = eINSTANCE.getDependent_Allowances();
9254
9255 /**
9256 * The meta object literal for the '<em><b>Household</b></em>' container reference feature.
9257 * <!-- begin-user-doc -->
9258 * <!-- end-user-doc -->
9259 * @generated
9260 */
9261 EReference DEPENDENT__HOUSEHOLD = eINSTANCE.getDependent_Household();
9262
9263 /**
9264 * The meta object literal for the '<em><b>From agent</b></em>' reference feature.
9265 * <!-- begin-user-doc -->
9266 * <!-- end-user-doc -->
9267 * @generated
9268 */
9269 EReference DEPENDENT__FROM_AGENT = eINSTANCE.getDependent_From_agent();
9270
9271 /**
9272 * The meta object literal for the '<em><b>Expense</b></em>' reference list feature.
9273 * <!-- begin-user-doc -->
9274 * <!-- end-user-doc -->
9275 * @generated
9276 */
9277 EReference DEPENDENT__EXPENSE = eINSTANCE.getDependent_Expense();
9278
9279 /**
9280 * The meta object literal for the '{@link Taxation.impl.External_AllowanceImpl <em>External Allowance</em>}' class.
9281 * <!-- begin-user-doc -->
9282 * <!-- end-user-doc -->
9283 * @see Taxation.impl.External_AllowanceImpl
9284 * @see Taxation.impl.TaxationPackageImpl#getExternal_Allowance()
9285 * @generated
9286 */
9287 EClass EXTERNAL_ALLOWANCE = eINSTANCE.getExternal_Allowance();
9288
9289 /**
9290 * The meta object literal for the '<em><b>Amount</b></em>' attribute feature.
9291 * <!-- begin-user-doc -->
9292 * <!-- end-user-doc -->
9293 * @generated
9294 */
9295 EAttribute EXTERNAL_ALLOWANCE__AMOUNT = eINSTANCE.getExternal_Allowance_Amount();
9296
9297 /**
9298 * The meta object literal for the '<em><b>Grantor</b></em>' attribute feature.
9299 * <!-- begin-user-doc -->
9300 * <!-- end-user-doc -->
9301 * @generated
9302 */
9303 EAttribute EXTERNAL_ALLOWANCE__GRANTOR = eINSTANCE.getExternal_Allowance_Grantor();
9304
9305 /**
9306 * The meta object literal for the '<em><b>Starting year</b></em>' attribute feature.
9307 * <!-- begin-user-doc -->
9308 * <!-- end-user-doc -->
9309 * @generated
9310 */
9311 EAttribute EXTERNAL_ALLOWANCE__STARTING_YEAR = eINSTANCE.getExternal_Allowance_Starting_year();
9312
9313 /**
9314 * The meta object literal for the '<em><b>Ending year</b></em>' attribute feature.
9315 * <!-- begin-user-doc -->
9316 * <!-- end-user-doc -->
9317 * @generated
9318 */
9319 EAttribute EXTERNAL_ALLOWANCE__ENDING_YEAR = eINSTANCE.getExternal_Allowance_Ending_year();
9320
9321 /**
9322 * The meta object literal for the '<em><b>Reciver</b></em>' reference feature.
9323 * <!-- begin-user-doc -->
9324 * <!-- end-user-doc -->
9325 * @generated
9326 */
9327 EReference EXTERNAL_ALLOWANCE__RECIVER = eINSTANCE.getExternal_Allowance_Reciver();
9328
9329 /**
9330 * The meta object literal for the '<em><b>Id5</b></em>' attribute feature.
9331 * <!-- begin-user-doc -->
9332 * <!-- end-user-doc -->
9333 * @generated
9334 */
9335 EAttribute EXTERNAL_ALLOWANCE__ID5 = eINSTANCE.getExternal_Allowance_Id5();
9336
9337 /**
9338 * The meta object literal for the '<em><b>Person</b></em>' container reference feature.
9339 * <!-- begin-user-doc -->
9340 * <!-- end-user-doc -->
9341 * @generated
9342 */
9343 EReference EXTERNAL_ALLOWANCE__PERSON = eINSTANCE.getExternal_Allowance_Person();
9344
9345 /**
9346 * The meta object literal for the '{@link Taxation.impl.HouseholdImpl <em>Household</em>}' class.
9347 * <!-- begin-user-doc -->
9348 * <!-- end-user-doc -->
9349 * @see Taxation.impl.HouseholdImpl
9350 * @see Taxation.impl.TaxationPackageImpl#getHousehold()
9351 * @generated
9352 */
9353 EClass HOUSEHOLD = eINSTANCE.getHousehold();
9354
9355 /**
9356 * The meta object literal for the '<em><b>Parents</b></em>' containment reference feature.
9357 * <!-- begin-user-doc -->
9358 * <!-- end-user-doc -->
9359 * @generated
9360 */
9361 EReference HOUSEHOLD__PARENTS = eINSTANCE.getHousehold_Parents();
9362
9363 /**
9364 * The meta object literal for the '<em><b>Id1</b></em>' attribute feature.
9365 * <!-- begin-user-doc -->
9366 * <!-- end-user-doc -->
9367 * @generated
9368 */
9369 EAttribute HOUSEHOLD__ID1 = eINSTANCE.getHousehold_Id1();
9370
9371 /**
9372 * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
9373 * <!-- begin-user-doc -->
9374 * <!-- end-user-doc -->
9375 * @generated
9376 */
9377 EReference HOUSEHOLD__CHILDREN = eINSTANCE.getHousehold_Children();
9378
9379 /**
9380 * The meta object literal for the '{@link Taxation.impl.Legal_Union_RecordImpl <em>Legal Union Record</em>}' class.
9381 * <!-- begin-user-doc -->
9382 * <!-- end-user-doc -->
9383 * @see Taxation.impl.Legal_Union_RecordImpl
9384 * @see Taxation.impl.TaxationPackageImpl#getLegal_Union_Record()
9385 * @generated
9386 */
9387 EClass LEGAL_UNION_RECORD = eINSTANCE.getLegal_Union_Record();
9388
9389 /**
9390 * The meta object literal for the '<em><b>Start year</b></em>' attribute feature.
9391 * <!-- begin-user-doc -->
9392 * <!-- end-user-doc -->
9393 * @generated
9394 */
9395 EAttribute LEGAL_UNION_RECORD__START_YEAR = eINSTANCE.getLegal_Union_Record_Start_year();
9396
9397 /**
9398 * The meta object literal for the '<em><b>End year</b></em>' attribute feature.
9399 * <!-- begin-user-doc -->
9400 * <!-- end-user-doc -->
9401 * @generated
9402 */
9403 EAttribute LEGAL_UNION_RECORD__END_YEAR = eINSTANCE.getLegal_Union_Record_End_year();
9404
9405 /**
9406 * The meta object literal for the '<em><b>Separation cause</b></em>' attribute feature.
9407 * <!-- begin-user-doc -->
9408 * <!-- end-user-doc -->
9409 * @generated
9410 */
9411 EAttribute LEGAL_UNION_RECORD__SEPARATION_CAUSE = eINSTANCE.getLegal_Union_Record_Separation_cause();
9412
9413 /**
9414 * The meta object literal for the '<em><b>Individual A</b></em>' containment reference feature.
9415 * <!-- begin-user-doc -->
9416 * <!-- end-user-doc -->
9417 * @generated
9418 */
9419 EReference LEGAL_UNION_RECORD__INDIVIDUAL_A = eINSTANCE.getLegal_Union_Record_Individual_A();
9420
9421 /**
9422 * The meta object literal for the '<em><b>Individual B</b></em>' containment reference list feature.
9423 * <!-- begin-user-doc -->
9424 * <!-- end-user-doc -->
9425 * @generated
9426 */
9427 EReference LEGAL_UNION_RECORD__INDIVIDUAL_B = eINSTANCE.getLegal_Union_Record_Individual_B();
9428
9429 /**
9430 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
9431 * <!-- begin-user-doc -->
9432 * <!-- end-user-doc -->
9433 * @generated
9434 */
9435 EReference LEGAL_UNION_RECORD__PROPERTIES = eINSTANCE.getLegal_Union_Record_Properties();
9436
9437 /**
9438 * The meta object literal for the '<em><b>Mutual agreement</b></em>' attribute feature.
9439 * <!-- begin-user-doc -->
9440 * <!-- end-user-doc -->
9441 * @generated
9442 */
9443 EAttribute LEGAL_UNION_RECORD__MUTUAL_AGREEMENT = eINSTANCE.getLegal_Union_Record_Mutual_agreement();
9444
9445 /**
9446 * The meta object literal for the '<em><b>Id9</b></em>' attribute feature.
9447 * <!-- begin-user-doc -->
9448 * <!-- end-user-doc -->
9449 * @generated
9450 */
9451 EAttribute LEGAL_UNION_RECORD__ID9 = eINSTANCE.getLegal_Union_Record_Id9();
9452
9453 /**
9454 * The meta object literal for the '<em><b>Household</b></em>' container reference feature.
9455 * <!-- begin-user-doc -->
9456 * <!-- end-user-doc -->
9457 * @generated
9458 */
9459 EReference LEGAL_UNION_RECORD__HOUSEHOLD = eINSTANCE.getLegal_Union_Record_Household();
9460
9461 /**
9462 * The meta object literal for the '{@link Taxation.impl.Tax_PropertyImpl <em>Tax Property</em>}' class.
9463 * <!-- begin-user-doc -->
9464 * <!-- end-user-doc -->
9465 * @see Taxation.impl.Tax_PropertyImpl
9466 * @see Taxation.impl.TaxationPackageImpl#getTax_Property()
9467 * @generated
9468 */
9469 EClass TAX_PROPERTY = eINSTANCE.getTax_Property();
9470
9471 /**
9472 * The meta object literal for the '<em><b>Starting year</b></em>' attribute feature.
9473 * <!-- begin-user-doc -->
9474 * <!-- end-user-doc -->
9475 * @generated
9476 */
9477 EAttribute TAX_PROPERTY__STARTING_YEAR = eINSTANCE.getTax_Property_Starting_year();
9478
9479 /**
9480 * The meta object literal for the '<em><b>Id10</b></em>' attribute feature.
9481 * <!-- begin-user-doc -->
9482 * <!-- end-user-doc -->
9483 * @generated
9484 */
9485 EAttribute TAX_PROPERTY__ID10 = eINSTANCE.getTax_Property_Id10();
9486
9487 /**
9488 * The meta object literal for the '<em><b>Union record</b></em>' container reference feature.
9489 * <!-- begin-user-doc -->
9490 * <!-- end-user-doc -->
9491 * @generated
9492 */
9493 EReference TAX_PROPERTY__UNION_RECORD = eINSTANCE.getTax_Property_Union_record();
9494
9495 /**
9496 * The meta object literal for the '{@link Taxation.Tax_Case <em>Tax Case</em>}' class.
9497 * <!-- begin-user-doc -->
9498 * <!-- end-user-doc -->
9499 * @see Taxation.Tax_Case
9500 * @see Taxation.impl.TaxationPackageImpl#getTax_Case()
9501 * @generated
9502 */
9503 EClass TAX_CASE = eINSTANCE.getTax_Case();
9504
9505 /**
9506 * The meta object literal for the '{@link Taxation.impl.FromAgentImpl <em>From Agent</em>}' class.
9507 * <!-- begin-user-doc -->
9508 * <!-- end-user-doc -->
9509 * @see Taxation.impl.FromAgentImpl
9510 * @see Taxation.impl.TaxationPackageImpl#getFromAgent()
9511 * @generated
9512 */
9513 EClass FROM_AGENT = eINSTANCE.getFromAgent();
9514
9515 /**
9516 * The meta object literal for the '<em><b>Tax Payer</b></em>' container reference feature.
9517 * <!-- begin-user-doc -->
9518 * <!-- end-user-doc -->
9519 * @generated
9520 */
9521 EReference FROM_AGENT__TAX_PAYER = eINSTANCE.getFromAgent_TaxPayer();
9522
9523 /**
9524 * The meta object literal for the '<em><b>Is dependent eligible for CE Not In Houshold Children Care</b></em>' attribute feature.
9525 * <!-- begin-user-doc -->
9526 * <!-- end-user-doc -->
9527 * @generated
9528 */
9529 EAttribute FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE = eINSTANCE.getFromAgent_Is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care();
9530
9531 /**
9532 * The meta object literal for the '<em><b>Expense</b></em>' reference feature.
9533 * <!-- begin-user-doc -->
9534 * <!-- end-user-doc -->
9535 * @generated
9536 */
9537 EReference FROM_AGENT__EXPENSE = eINSTANCE.getFromAgent_Expense();
9538
9539 /**
9540 * The meta object literal for the '<em><b>Is eligible debt</b></em>' attribute feature.
9541 * <!-- begin-user-doc -->
9542 * <!-- end-user-doc -->
9543 * @generated
9544 */
9545 EAttribute FROM_AGENT__IS_ELIGIBLE_DEBT = eINSTANCE.getFromAgent_Is_eligible_debt();
9546
9547 /**
9548 * The meta object literal for the '<em><b>Dependent</b></em>' reference feature.
9549 * <!-- begin-user-doc -->
9550 * <!-- end-user-doc -->
9551 * @generated
9552 */
9553 EReference FROM_AGENT__DEPENDENT = eINSTANCE.getFromAgent_Dependent();
9554
9555 /**
9556 * The meta object literal for the '{@link Taxation.impl.IncomeImpl <em>Income</em>}' class.
9557 * <!-- begin-user-doc -->
9558 * <!-- end-user-doc -->
9559 * @see Taxation.impl.IncomeImpl
9560 * @see Taxation.impl.TaxationPackageImpl#getIncome()
9561 * @generated
9562 */
9563 EClass INCOME = eINSTANCE.getIncome();
9564
9565 /**
9566 * The meta object literal for the '<em><b>Income amount</b></em>' attribute feature.
9567 * <!-- begin-user-doc -->
9568 * <!-- end-user-doc -->
9569 * @generated
9570 */
9571 EAttribute INCOME__INCOME_AMOUNT = eINSTANCE.getIncome_Income_amount();
9572
9573 /**
9574 * The meta object literal for the '<em><b>Income type</b></em>' containment reference feature.
9575 * <!-- begin-user-doc -->
9576 * <!-- end-user-doc -->
9577 * @generated
9578 */
9579 EReference INCOME__INCOME_TYPE = eINSTANCE.getIncome_Income_type();
9580
9581 /**
9582 * The meta object literal for the '<em><b>Start date within taxation year</b></em>' attribute feature.
9583 * <!-- begin-user-doc -->
9584 * <!-- end-user-doc -->
9585 * @generated
9586 */
9587 EAttribute INCOME__START_DATE_WITHIN_TAXATION_YEAR = eINSTANCE.getIncome_Start_date_within_taxation_year();
9588
9589 /**
9590 * The meta object literal for the '<em><b>Start date of contract</b></em>' attribute feature.
9591 * <!-- begin-user-doc -->
9592 * <!-- end-user-doc -->
9593 * @generated
9594 */
9595 EAttribute INCOME__START_DATE_OF_CONTRACT = eINSTANCE.getIncome_Start_date_of_contract();
9596
9597 /**
9598 * The meta object literal for the '<em><b>End date within taxation year</b></em>' attribute feature.
9599 * <!-- begin-user-doc -->
9600 * <!-- end-user-doc -->
9601 * @generated
9602 */
9603 EAttribute INCOME__END_DATE_WITHIN_TAXATION_YEAR = eINSTANCE.getIncome_End_date_within_taxation_year();
9604
9605 /**
9606 * The meta object literal for the '<em><b>Tax card</b></em>' containment reference feature.
9607 * <!-- begin-user-doc -->
9608 * <!-- end-user-doc -->
9609 * @generated
9610 */
9611 EReference INCOME__TAX_CARD = eINSTANCE.getIncome_Tax_card();
9612
9613 /**
9614 * The meta object literal for the '<em><b>Tax liability</b></em>' attribute feature.
9615 * <!-- begin-user-doc -->
9616 * <!-- end-user-doc -->
9617 * @generated
9618 */
9619 EAttribute INCOME__TAX_LIABILITY = eINSTANCE.getIncome_Tax_liability();
9620
9621 /**
9622 * The meta object literal for the '<em><b>Tax Payer</b></em>' container reference feature.
9623 * <!-- begin-user-doc -->
9624 * <!-- end-user-doc -->
9625 * @generated
9626 */
9627 EReference INCOME__TAX_PAYER = eINSTANCE.getIncome_TaxPayer();
9628
9629 /**
9630 * The meta object literal for the '<em><b>Details</b></em>' containment reference list feature.
9631 * <!-- begin-user-doc -->
9632 * <!-- end-user-doc -->
9633 * @generated
9634 */
9635 EReference INCOME__DETAILS = eINSTANCE.getIncome_Details();
9636
9637 /**
9638 * The meta object literal for the '<em><b>Num</b></em>' attribute feature.
9639 * <!-- begin-user-doc -->
9640 * <!-- end-user-doc -->
9641 * @generated
9642 */
9643 EAttribute INCOME__NUM = eINSTANCE.getIncome_Num();
9644
9645 /**
9646 * The meta object literal for the '<em><b>Expenses</b></em>' containment reference list feature.
9647 * <!-- begin-user-doc -->
9648 * <!-- end-user-doc -->
9649 * @generated
9650 */
9651 EReference INCOME__EXPENSES = eINSTANCE.getIncome_Expenses();
9652
9653 /**
9654 * The meta object literal for the '{@link Taxation.impl.Income_TypeImpl <em>Income Type</em>}' class.
9655 * <!-- begin-user-doc -->
9656 * <!-- end-user-doc -->
9657 * @see Taxation.impl.Income_TypeImpl
9658 * @see Taxation.impl.TaxationPackageImpl#getIncome_Type()
9659 * @generated
9660 */
9661 EClass INCOME_TYPE = eINSTANCE.getIncome_Type();
9662
9663 /**
9664 * The meta object literal for the '<em><b>Subject To Withholding Tax</b></em>' attribute feature.
9665 * <!-- begin-user-doc -->
9666 * <!-- end-user-doc -->
9667 * @generated
9668 */
9669 EAttribute INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX = eINSTANCE.getIncome_Type_SubjectToWithholdingTax();
9670
9671 /**
9672 * The meta object literal for the '<em><b>Id8</b></em>' attribute feature.
9673 * <!-- begin-user-doc -->
9674 * <!-- end-user-doc -->
9675 * @generated
9676 */
9677 EAttribute INCOME_TYPE__ID8 = eINSTANCE.getIncome_Type_Id8();
9678
9679 /**
9680 * The meta object literal for the '<em><b>Income</b></em>' container reference feature.
9681 * <!-- begin-user-doc -->
9682 * <!-- end-user-doc -->
9683 * @generated
9684 */
9685 EReference INCOME_TYPE__INCOME = eINSTANCE.getIncome_Type_Income();
9686
9687 /**
9688 * The meta object literal for the '{@link Taxation.impl.Tax_CardImpl <em>Tax Card</em>}' class.
9689 * <!-- begin-user-doc -->
9690 * <!-- end-user-doc -->
9691 * @see Taxation.impl.Tax_CardImpl
9692 * @see Taxation.impl.TaxationPackageImpl#getTax_Card()
9693 * @generated
9694 */
9695 EClass TAX_CARD = eINSTANCE.getTax_Card();
9696
9697 /**
9698 * The meta object literal for the '<em><b>Card identifier</b></em>' attribute feature.
9699 * <!-- begin-user-doc -->
9700 * <!-- end-user-doc -->
9701 * @generated
9702 */
9703 EAttribute TAX_CARD__CARD_IDENTIFIER = eINSTANCE.getTax_Card_Card_identifier();
9704
9705 /**
9706 * The meta object literal for the '<em><b>Tax card type</b></em>' attribute feature.
9707 * <!-- begin-user-doc -->
9708 * <!-- end-user-doc -->
9709 * @generated
9710 */
9711 EAttribute TAX_CARD__TAX_CARD_TYPE = eINSTANCE.getTax_Card_Tax_card_type();
9712
9713 /**
9714 * The meta object literal for the '<em><b>Tax office</b></em>' attribute feature.
9715 * <!-- begin-user-doc -->
9716 * <!-- end-user-doc -->
9717 * @generated
9718 */
9719 EAttribute TAX_CARD__TAX_OFFICE = eINSTANCE.getTax_Card_Tax_office();
9720
9721 /**
9722 * The meta object literal for the '<em><b>Valid from date</b></em>' attribute feature.
9723 * <!-- begin-user-doc -->
9724 * <!-- end-user-doc -->
9725 * @generated
9726 */
9727 EAttribute TAX_CARD__VALID_FROM_DATE = eINSTANCE.getTax_Card_Valid_from_date();
9728
9729 /**
9730 * The meta object literal for the '<em><b>Valid until date</b></em>' attribute feature.
9731 * <!-- begin-user-doc -->
9732 * <!-- end-user-doc -->
9733 * @generated
9734 */
9735 EAttribute TAX_CARD__VALID_UNTIL_DATE = eINSTANCE.getTax_Card_Valid_until_date();
9736
9737 /**
9738 * The meta object literal for the '<em><b>Percentage of witholding</b></em>' attribute feature.
9739 * <!-- begin-user-doc -->
9740 * <!-- end-user-doc -->
9741 * @generated
9742 */
9743 EAttribute TAX_CARD__PERCENTAGE_OF_WITHOLDING = eINSTANCE.getTax_Card_Percentage_of_witholding();
9744
9745 /**
9746 * The meta object literal for the '<em><b>Tax payers name surname</b></em>' attribute list feature.
9747 * <!-- begin-user-doc -->
9748 * <!-- end-user-doc -->
9749 * @generated
9750 */
9751 EAttribute TAX_CARD__TAX_PAYERS_NAME_SURNAME = eINSTANCE.getTax_Card_Tax_payers_name_surname();
9752
9753 /**
9754 * The meta object literal for the '<em><b>Tax payers partner name surname</b></em>' attribute list feature.
9755 * <!-- begin-user-doc -->
9756 * <!-- end-user-doc -->
9757 * @generated
9758 */
9759 EAttribute TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME = eINSTANCE.getTax_Card_Tax_payers_partner_name_surname();
9760
9761 /**
9762 * The meta object literal for the '<em><b>Tax payers address</b></em>' reference feature.
9763 * <!-- begin-user-doc -->
9764 * <!-- end-user-doc -->
9765 * @generated
9766 */
9767 EReference TAX_CARD__TAX_PAYERS_ADDRESS = eINSTANCE.getTax_Card_Tax_payers_address();
9768
9769 /**
9770 * The meta object literal for the '<em><b>Jobs Employer SS No</b></em>' attribute feature.
9771 * <!-- begin-user-doc -->
9772 * <!-- end-user-doc -->
9773 * @generated
9774 */
9775 EAttribute TAX_CARD__JOBS_EMPLOYER_SS_NO = eINSTANCE.getTax_Card_Jobs_Employer_SSNo();
9776
9777 /**
9778 * The meta object literal for the '<em><b>Jobs employers name</b></em>' attribute feature.
9779 * <!-- begin-user-doc -->
9780 * <!-- end-user-doc -->
9781 * @generated
9782 */
9783 EAttribute TAX_CARD__JOBS_EMPLOYERS_NAME = eINSTANCE.getTax_Card_Jobs_employers_name();
9784
9785 /**
9786 * The meta object literal for the '<em><b>Jobs activity type</b></em>' attribute feature.
9787 * <!-- begin-user-doc -->
9788 * <!-- end-user-doc -->
9789 * @generated
9790 */
9791 EAttribute TAX_CARD__JOBS_ACTIVITY_TYPE = eINSTANCE.getTax_Card_Jobs_activity_type();
9792
9793 /**
9794 * The meta object literal for the '<em><b>Jobs place of work</b></em>' attribute feature.
9795 * <!-- begin-user-doc -->
9796 * <!-- end-user-doc -->
9797 * @generated
9798 */
9799 EAttribute TAX_CARD__JOBS_PLACE_OF_WORK = eINSTANCE.getTax_Card_Jobs_place_of_work();
9800
9801 /**
9802 * The meta object literal for the '<em><b>Deduction FD daily</b></em>' attribute feature.
9803 * <!-- begin-user-doc -->
9804 * <!-- end-user-doc -->
9805 * @generated
9806 */
9807 EAttribute TAX_CARD__DEDUCTION_FD_DAILY = eINSTANCE.getTax_Card_Deduction_FD_daily();
9808
9809 /**
9810 * The meta object literal for the '<em><b>Deduction FD monthly</b></em>' attribute feature.
9811 * <!-- begin-user-doc -->
9812 * <!-- end-user-doc -->
9813 * @generated
9814 */
9815 EAttribute TAX_CARD__DEDUCTION_FD_MONTHLY = eINSTANCE.getTax_Card_Deduction_FD_monthly();
9816
9817 /**
9818 * The meta object literal for the '<em><b>Deduction AC daily</b></em>' attribute feature.
9819 * <!-- begin-user-doc -->
9820 * <!-- end-user-doc -->
9821 * @generated
9822 */
9823 EAttribute TAX_CARD__DEDUCTION_AC_DAILY = eINSTANCE.getTax_Card_Deduction_AC_daily();
9824
9825 /**
9826 * The meta object literal for the '<em><b>Deduction AC monthly</b></em>' attribute feature.
9827 * <!-- begin-user-doc -->
9828 * <!-- end-user-doc -->
9829 * @generated
9830 */
9831 EAttribute TAX_CARD__DEDUCTION_AC_MONTHLY = eINSTANCE.getTax_Card_Deduction_AC_monthly();
9832
9833 /**
9834 * The meta object literal for the '<em><b>Deduction AC yearly</b></em>' attribute feature.
9835 * <!-- begin-user-doc -->
9836 * <!-- end-user-doc -->
9837 * @generated
9838 */
9839 EAttribute TAX_CARD__DEDUCTION_AC_YEARLY = eINSTANCE.getTax_Card_Deduction_AC_yearly();
9840
9841 /**
9842 * The meta object literal for the '<em><b>Deduction CE daily</b></em>' attribute feature.
9843 * <!-- begin-user-doc -->
9844 * <!-- end-user-doc -->
9845 * @generated
9846 */
9847 EAttribute TAX_CARD__DEDUCTION_CE_DAILY = eINSTANCE.getTax_Card_Deduction_CE_daily();
9848
9849 /**
9850 * The meta object literal for the '<em><b>Deduction CE monthly</b></em>' attribute feature.
9851 * <!-- begin-user-doc -->
9852 * <!-- end-user-doc -->
9853 * @generated
9854 */
9855 EAttribute TAX_CARD__DEDUCTION_CE_MONTHLY = eINSTANCE.getTax_Card_Deduction_CE_monthly();
9856
9857 /**
9858 * The meta object literal for the '<em><b>Deduction CE yearly</b></em>' attribute feature.
9859 * <!-- begin-user-doc -->
9860 * <!-- end-user-doc -->
9861 * @generated
9862 */
9863 EAttribute TAX_CARD__DEDUCTION_CE_YEARLY = eINSTANCE.getTax_Card_Deduction_CE_yearly();
9864
9865 /**
9866 * The meta object literal for the '<em><b>Deduction DS daily</b></em>' attribute feature.
9867 * <!-- begin-user-doc -->
9868 * <!-- end-user-doc -->
9869 * @generated
9870 */
9871 EAttribute TAX_CARD__DEDUCTION_DS_DAILY = eINSTANCE.getTax_Card_Deduction_DS_daily();
9872
9873 /**
9874 * The meta object literal for the '<em><b>Deduction DS monthly</b></em>' attribute feature.
9875 * <!-- begin-user-doc -->
9876 * <!-- end-user-doc -->
9877 * @generated
9878 */
9879 EAttribute TAX_CARD__DEDUCTION_DS_MONTHLY = eINSTANCE.getTax_Card_Deduction_DS_monthly();
9880
9881 /**
9882 * The meta object literal for the '<em><b>Deduction FO daily</b></em>' attribute feature.
9883 * <!-- begin-user-doc -->
9884 * <!-- end-user-doc -->
9885 * @generated
9886 */
9887 EAttribute TAX_CARD__DEDUCTION_FO_DAILY = eINSTANCE.getTax_Card_Deduction_FO_daily();
9888
9889 /**
9890 * The meta object literal for the '<em><b>Deduction FO monthly</b></em>' attribute feature.
9891 * <!-- begin-user-doc -->
9892 * <!-- end-user-doc -->
9893 * @generated
9894 */
9895 EAttribute TAX_CARD__DEDUCTION_FO_MONTHLY = eINSTANCE.getTax_Card_Deduction_FO_monthly();
9896
9897 /**
9898 * The meta object literal for the '<em><b>Deduction FO yearly</b></em>' attribute feature.
9899 * <!-- begin-user-doc -->
9900 * <!-- end-user-doc -->
9901 * @generated
9902 */
9903 EAttribute TAX_CARD__DEDUCTION_FO_YEARLY = eINSTANCE.getTax_Card_Deduction_FO_yearly();
9904
9905 /**
9906 * The meta object literal for the '<em><b>Credit CIS daily</b></em>' attribute feature.
9907 * <!-- begin-user-doc -->
9908 * <!-- end-user-doc -->
9909 * @generated
9910 */
9911 EAttribute TAX_CARD__CREDIT_CIS_DAILY = eINSTANCE.getTax_Card_Credit_CIS_daily();
9912
9913 /**
9914 * The meta object literal for the '<em><b>Credit CIS monthly</b></em>' attribute feature.
9915 * <!-- begin-user-doc -->
9916 * <!-- end-user-doc -->
9917 * @generated
9918 */
9919 EAttribute TAX_CARD__CREDIT_CIS_MONTHLY = eINSTANCE.getTax_Card_Credit_CIS_monthly();
9920
9921 /**
9922 * The meta object literal for the '<em><b>Credit CIM daily</b></em>' attribute feature.
9923 * <!-- begin-user-doc -->
9924 * <!-- end-user-doc -->
9925 * @generated
9926 */
9927 EAttribute TAX_CARD__CREDIT_CIM_DAILY = eINSTANCE.getTax_Card_Credit_CIM_daily();
9928
9929 /**
9930 * The meta object literal for the '<em><b>Validity</b></em>' attribute feature.
9931 * <!-- begin-user-doc -->
9932 * <!-- end-user-doc -->
9933 * @generated
9934 */
9935 EAttribute TAX_CARD__VALIDITY = eINSTANCE.getTax_Card_Validity();
9936
9937 /**
9938 * The meta object literal for the '<em><b>Income Tax Credit</b></em>' reference list feature.
9939 * <!-- begin-user-doc -->
9940 * <!-- end-user-doc -->
9941 * @generated
9942 */
9943 EReference TAX_CARD__INCOME_TAX_CREDIT = eINSTANCE.getTax_Card_Income_Tax_Credit();
9944
9945 /**
9946 * The meta object literal for the '<em><b>Previous</b></em>' reference feature.
9947 * <!-- begin-user-doc -->
9948 * <!-- end-user-doc -->
9949 * @generated
9950 */
9951 EReference TAX_CARD__PREVIOUS = eINSTANCE.getTax_Card_Previous();
9952
9953 /**
9954 * The meta object literal for the '<em><b>Current tax card</b></em>' reference feature.
9955 * <!-- begin-user-doc -->
9956 * <!-- end-user-doc -->
9957 * @generated
9958 */
9959 EReference TAX_CARD__CURRENT_TAX_CARD = eINSTANCE.getTax_Card_Current_tax_card();
9960
9961 /**
9962 * The meta object literal for the '<em><b>Credit CIM yearly</b></em>' attribute feature.
9963 * <!-- begin-user-doc -->
9964 * <!-- end-user-doc -->
9965 * @generated
9966 */
9967 EAttribute TAX_CARD__CREDIT_CIM_YEARLY = eINSTANCE.getTax_Card_Credit_CIM_yearly();
9968
9969 /**
9970 * The meta object literal for the '<em><b>Deduction DS Alimony yearly</b></em>' attribute feature.
9971 * <!-- begin-user-doc -->
9972 * <!-- end-user-doc -->
9973 * @generated
9974 */
9975 EAttribute TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY = eINSTANCE.getTax_Card_Deduction_DS_Alimony_yearly();
9976
9977 /**
9978 * The meta object literal for the '<em><b>Deduction DS Debt yearly</b></em>' attribute feature.
9979 * <!-- begin-user-doc -->
9980 * <!-- end-user-doc -->
9981 * @generated
9982 */
9983 EAttribute TAX_CARD__DEDUCTION_DS_DEBT_YEARLY = eINSTANCE.getTax_Card_Deduction_DS_Debt_yearly();
9984
9985 /**
9986 * The meta object literal for the '<em><b>Income</b></em>' container reference feature.
9987 * <!-- begin-user-doc -->
9988 * <!-- end-user-doc -->
9989 * @generated
9990 */
9991 EReference TAX_CARD__INCOME = eINSTANCE.getTax_Card_Income();
9992
9993 /**
9994 * The meta object literal for the '{@link Taxation.impl.Income_Tax_CreditImpl <em>Income Tax Credit</em>}' class.
9995 * <!-- begin-user-doc -->
9996 * <!-- end-user-doc -->
9997 * @see Taxation.impl.Income_Tax_CreditImpl
9998 * @see Taxation.impl.TaxationPackageImpl#getIncome_Tax_Credit()
9999 * @generated
10000 */
10001 EClass INCOME_TAX_CREDIT = eINSTANCE.getIncome_Tax_Credit();
10002
10003 /**
10004 * The meta object literal for the '<em><b>Granted By</b></em>' attribute feature.
10005 * <!-- begin-user-doc -->
10006 * <!-- end-user-doc -->
10007 * @generated
10008 */
10009 EAttribute INCOME_TAX_CREDIT__GRANTED_BY = eINSTANCE.getIncome_Tax_Credit_GrantedBy();
10010
10011 /**
10012 * The meta object literal for the '<em><b>Tax Payer</b></em>' reference feature.
10013 * <!-- begin-user-doc -->
10014 * <!-- end-user-doc -->
10015 * @generated
10016 */
10017 EReference INCOME_TAX_CREDIT__TAX_PAYER = eINSTANCE.getIncome_Tax_Credit_TaxPayer();
10018
10019 /**
10020 * The meta object literal for the '<em><b>Tax year</b></em>' attribute feature.
10021 * <!-- begin-user-doc -->
10022 * <!-- end-user-doc -->
10023 * @generated
10024 */
10025 EAttribute INCOME_TAX_CREDIT__TAX_YEAR = eINSTANCE.getIncome_Tax_Credit_Tax_year();
10026
10027 /**
10028 * The meta object literal for the '<em><b>Yearly</b></em>' attribute feature.
10029 * <!-- begin-user-doc -->
10030 * <!-- end-user-doc -->
10031 * @generated
10032 */
10033 EAttribute INCOME_TAX_CREDIT__YEARLY = eINSTANCE.getIncome_Tax_Credit_Yearly();
10034
10035 /**
10036 * The meta object literal for the '<em><b>Monthly</b></em>' attribute feature.
10037 * <!-- begin-user-doc -->
10038 * <!-- end-user-doc -->
10039 * @generated
10040 */
10041 EAttribute INCOME_TAX_CREDIT__MONTHLY = eINSTANCE.getIncome_Tax_Credit_Monthly();
10042
10043 /**
10044 * The meta object literal for the '<em><b>Daily</b></em>' attribute feature.
10045 * <!-- begin-user-doc -->
10046 * <!-- end-user-doc -->
10047 * @generated
10048 */
10049 EAttribute INCOME_TAX_CREDIT__DAILY = eINSTANCE.getIncome_Tax_Credit_Daily();
10050
10051 /**
10052 * The meta object literal for the '<em><b>Id7</b></em>' attribute feature.
10053 * <!-- begin-user-doc -->
10054 * <!-- end-user-doc -->
10055 * @generated
10056 */
10057 EAttribute INCOME_TAX_CREDIT__ID7 = eINSTANCE.getIncome_Tax_Credit_Id7();
10058
10059 /**
10060 * The meta object literal for the '<em><b>Taxation Frame</b></em>' reference feature.
10061 * <!-- begin-user-doc -->
10062 * <!-- end-user-doc -->
10063 * @generated
10064 */
10065 EReference INCOME_TAX_CREDIT__TAXATION_FRAME = eINSTANCE.getIncome_Tax_Credit_Taxation_Frame();
10066
10067 /**
10068 * The meta object literal for the '{@link Taxation.impl.Income_DetailImpl <em>Income Detail</em>}' class.
10069 * <!-- begin-user-doc -->
10070 * <!-- end-user-doc -->
10071 * @see Taxation.impl.Income_DetailImpl
10072 * @see Taxation.impl.TaxationPackageImpl#getIncome_Detail()
10073 * @generated
10074 */
10075 EClass INCOME_DETAIL = eINSTANCE.getIncome_Detail();
10076
10077 /**
10078 * The meta object literal for the '<em><b>Amount</b></em>' attribute feature.
10079 * <!-- begin-user-doc -->
10080 * <!-- end-user-doc -->
10081 * @generated
10082 */
10083 EAttribute INCOME_DETAIL__AMOUNT = eINSTANCE.getIncome_Detail_Amount();
10084
10085 /**
10086 * The meta object literal for the '<em><b>Is worked</b></em>' attribute feature.
10087 * <!-- begin-user-doc -->
10088 * <!-- end-user-doc -->
10089 * @generated
10090 */
10091 EAttribute INCOME_DETAIL__IS_WORKED = eINSTANCE.getIncome_Detail_Is_worked();
10092
10093 /**
10094 * The meta object literal for the '<em><b>Distance</b></em>' attribute feature.
10095 * <!-- begin-user-doc -->
10096 * <!-- end-user-doc -->
10097 * @generated
10098 */
10099 EAttribute INCOME_DETAIL__DISTANCE = eINSTANCE.getIncome_Detail_Distance();
10100
10101 /**
10102 * The meta object literal for the '<em><b>Worked days</b></em>' attribute feature.
10103 * <!-- begin-user-doc -->
10104 * <!-- end-user-doc -->
10105 * @generated
10106 */
10107 EAttribute INCOME_DETAIL__WORKED_DAYS = eINSTANCE.getIncome_Detail_Worked_days();
10108
10109 /**
10110 * The meta object literal for the '<em><b>Is contributing CNS</b></em>' attribute feature.
10111 * <!-- begin-user-doc -->
10112 * <!-- end-user-doc -->
10113 * @generated
10114 */
10115 EAttribute INCOME_DETAIL__IS_CONTRIBUTING_CNS = eINSTANCE.getIncome_Detail_Is_contributing_CNS();
10116
10117 /**
10118 * The meta object literal for the '<em><b>Id5</b></em>' attribute feature.
10119 * <!-- begin-user-doc -->
10120 * <!-- end-user-doc -->
10121 * @generated
10122 */
10123 EAttribute INCOME_DETAIL__ID5 = eINSTANCE.getIncome_Detail_Id5();
10124
10125 /**
10126 * The meta object literal for the '<em><b>Income</b></em>' container reference feature.
10127 * <!-- begin-user-doc -->
10128 * <!-- end-user-doc -->
10129 * @generated
10130 */
10131 EReference INCOME_DETAIL__INCOME = eINSTANCE.getIncome_Detail_Income();
10132
10133 /**
10134 * The meta object literal for the '{@link Taxation.impl.FromLawImpl <em>From Law</em>}' class.
10135 * <!-- begin-user-doc -->
10136 * <!-- end-user-doc -->
10137 * @see Taxation.impl.FromLawImpl
10138 * @see Taxation.impl.TaxationPackageImpl#getFromLaw()
10139 * @generated
10140 */
10141 EClass FROM_LAW = eINSTANCE.getFromLaw();
10142
10143 /**
10144 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
10145 * <!-- begin-user-doc -->
10146 * <!-- end-user-doc -->
10147 * @generated
10148 */
10149 EAttribute FROM_LAW__ID = eINSTANCE.getFromLaw_Id();
10150
10151 /**
10152 * The meta object literal for the '<em><b>Tax Payer</b></em>' container reference feature.
10153 * <!-- begin-user-doc -->
10154 * <!-- end-user-doc -->
10155 * @generated
10156 */
10157 EReference FROM_LAW__TAX_PAYER = eINSTANCE.getFromLaw_TaxPayer();
10158
10159 /**
10160 * The meta object literal for the '{@link Taxation.impl.Fiscal_AddressImpl <em>Fiscal Address</em>}' class.
10161 * <!-- begin-user-doc -->
10162 * <!-- end-user-doc -->
10163 * @see Taxation.impl.Fiscal_AddressImpl
10164 * @see Taxation.impl.TaxationPackageImpl#getFiscal_Address()
10165 * @generated
10166 */
10167 EClass FISCAL_ADDRESS = eINSTANCE.getFiscal_Address();
10168
10169 /**
10170 * The meta object literal for the '{@link Taxation.impl.Habitual_AddressImpl <em>Habitual Address</em>}' class.
10171 * <!-- begin-user-doc -->
10172 * <!-- end-user-doc -->
10173 * @see Taxation.impl.Habitual_AddressImpl
10174 * @see Taxation.impl.TaxationPackageImpl#getHabitual_Address()
10175 * @generated
10176 */
10177 EClass HABITUAL_ADDRESS = eINSTANCE.getHabitual_Address();
10178
10179 /**
10180 * The meta object literal for the '{@link Taxation.impl.Marriage_RecordImpl <em>Marriage Record</em>}' class.
10181 * <!-- begin-user-doc -->
10182 * <!-- end-user-doc -->
10183 * @see Taxation.impl.Marriage_RecordImpl
10184 * @see Taxation.impl.TaxationPackageImpl#getMarriage_Record()
10185 * @generated
10186 */
10187 EClass MARRIAGE_RECORD = eINSTANCE.getMarriage_Record();
10188
10189 /**
10190 * The meta object literal for the '{@link Taxation.impl.Non_Resident_Tax_PayerImpl <em>Non Resident Tax Payer</em>}' class.
10191 * <!-- begin-user-doc -->
10192 * <!-- end-user-doc -->
10193 * @see Taxation.impl.Non_Resident_Tax_PayerImpl
10194 * @see Taxation.impl.TaxationPackageImpl#getNon_Resident_Tax_Payer()
10195 * @generated
10196 */
10197 EClass NON_RESIDENT_TAX_PAYER = eINSTANCE.getNon_Resident_Tax_Payer();
10198
10199 /**
10200 * The meta object literal for the '<em><b>Is assimilated to resident</b></em>' attribute feature.
10201 * <!-- begin-user-doc -->
10202 * <!-- end-user-doc -->
10203 * @generated
10204 */
10205 EAttribute NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT = eINSTANCE.getNon_Resident_Tax_Payer_Is_assimilated_to_resident();
10206
10207 /**
10208 * The meta object literal for the '{@link Taxation.impl.Partnership_RecordImpl <em>Partnership Record</em>}' class.
10209 * <!-- begin-user-doc -->
10210 * <!-- end-user-doc -->
10211 * @see Taxation.impl.Partnership_RecordImpl
10212 * @see Taxation.impl.TaxationPackageImpl#getPartnership_Record()
10213 * @generated
10214 */
10215 EClass PARTNERSHIP_RECORD = eINSTANCE.getPartnership_Record();
10216
10217 /**
10218 * The meta object literal for the '{@link Taxation.impl.Resident_Tax_PayerImpl <em>Resident Tax Payer</em>}' class.
10219 * <!-- begin-user-doc -->
10220 * <!-- end-user-doc -->
10221 * @see Taxation.impl.Resident_Tax_PayerImpl
10222 * @see Taxation.impl.TaxationPackageImpl#getResident_Tax_Payer()
10223 * @generated
10224 */
10225 EClass RESIDENT_TAX_PAYER = eINSTANCE.getResident_Tax_Payer();
10226
10227 /**
10228 * The meta object literal for the '{@link Taxation.impl.Trade_and_Business_IncomeImpl <em>Trade and Business Income</em>}' class.
10229 * <!-- begin-user-doc -->
10230 * <!-- end-user-doc -->
10231 * @see Taxation.impl.Trade_and_Business_IncomeImpl
10232 * @see Taxation.impl.TaxationPackageImpl#getTrade_and_Business_Income()
10233 * @generated
10234 */
10235 EClass TRADE_AND_BUSINESS_INCOME = eINSTANCE.getTrade_and_Business_Income();
10236
10237 /**
10238 * The meta object literal for the '{@link Taxation.impl.Agriculture_and_Forestry_IncomeImpl <em>Agriculture and Forestry Income</em>}' class.
10239 * <!-- begin-user-doc -->
10240 * <!-- end-user-doc -->
10241 * @see Taxation.impl.Agriculture_and_Forestry_IncomeImpl
10242 * @see Taxation.impl.TaxationPackageImpl#getAgriculture_and_Forestry_Income()
10243 * @generated
10244 */
10245 EClass AGRICULTURE_AND_FORESTRY_INCOME = eINSTANCE.getAgriculture_and_Forestry_Income();
10246
10247 /**
10248 * The meta object literal for the '{@link Taxation.impl.Pensions_and_Annuities_IncomeImpl <em>Pensions and Annuities Income</em>}' class.
10249 * <!-- begin-user-doc -->
10250 * <!-- end-user-doc -->
10251 * @see Taxation.impl.Pensions_and_Annuities_IncomeImpl
10252 * @see Taxation.impl.TaxationPackageImpl#getPensions_and_Annuities_Income()
10253 * @generated
10254 */
10255 EClass PENSIONS_AND_ANNUITIES_INCOME = eINSTANCE.getPensions_and_Annuities_Income();
10256
10257 /**
10258 * The meta object literal for the '<em><b>Occasional payement</b></em>' attribute feature.
10259 * <!-- begin-user-doc -->
10260 * <!-- end-user-doc -->
10261 * @generated
10262 */
10263 EAttribute PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT = eINSTANCE.getPensions_and_Annuities_Income_Occasional_payement();
10264
10265 /**
10266 * The meta object literal for the '{@link Taxation.impl.Capital_and_Investments_IncomeImpl <em>Capital and Investments Income</em>}' class.
10267 * <!-- begin-user-doc -->
10268 * <!-- end-user-doc -->
10269 * @see Taxation.impl.Capital_and_Investments_IncomeImpl
10270 * @see Taxation.impl.TaxationPackageImpl#getCapital_and_Investments_Income()
10271 * @generated
10272 */
10273 EClass CAPITAL_AND_INVESTMENTS_INCOME = eINSTANCE.getCapital_and_Investments_Income();
10274
10275 /**
10276 * The meta object literal for the '{@link Taxation.impl.Employment_IncomeImpl <em>Employment Income</em>}' class.
10277 * <!-- begin-user-doc -->
10278 * <!-- end-user-doc -->
10279 * @see Taxation.impl.Employment_IncomeImpl
10280 * @see Taxation.impl.TaxationPackageImpl#getEmployment_Income()
10281 * @generated
10282 */
10283 EClass EMPLOYMENT_INCOME = eINSTANCE.getEmployment_Income();
10284
10285 /**
10286 * The meta object literal for the '{@link Taxation.impl.Rentals_and_Leases_IncomeImpl <em>Rentals and Leases Income</em>}' class.
10287 * <!-- begin-user-doc -->
10288 * <!-- end-user-doc -->
10289 * @see Taxation.impl.Rentals_and_Leases_IncomeImpl
10290 * @see Taxation.impl.TaxationPackageImpl#getRentals_and_Leases_Income()
10291 * @generated
10292 */
10293 EClass RENTALS_AND_LEASES_INCOME = eINSTANCE.getRentals_and_Leases_Income();
10294
10295 /**
10296 * The meta object literal for the '<em><b>Is periodic</b></em>' attribute feature.
10297 * <!-- begin-user-doc -->
10298 * <!-- end-user-doc -->
10299 * @generated
10300 */
10301 EAttribute RENTALS_AND_LEASES_INCOME__IS_PERIODIC = eINSTANCE.getRentals_and_Leases_Income_Is_periodic();
10302
10303 /**
10304 * The meta object literal for the '{@link Taxation.impl.Foreign_IncomeImpl <em>Foreign Income</em>}' class.
10305 * <!-- begin-user-doc -->
10306 * <!-- end-user-doc -->
10307 * @see Taxation.impl.Foreign_IncomeImpl
10308 * @see Taxation.impl.TaxationPackageImpl#getForeign_Income()
10309 * @generated
10310 */
10311 EClass FOREIGN_INCOME = eINSTANCE.getForeign_Income();
10312
10313 /**
10314 * The meta object literal for the '{@link Taxation.impl.Local_IncomeImpl <em>Local Income</em>}' class.
10315 * <!-- begin-user-doc -->
10316 * <!-- end-user-doc -->
10317 * @see Taxation.impl.Local_IncomeImpl
10318 * @see Taxation.impl.TaxationPackageImpl#getLocal_Income()
10319 * @generated
10320 */
10321 EClass LOCAL_INCOME = eINSTANCE.getLocal_Income();
10322
10323 /**
10324 * The meta object literal for the '{@link Taxation.impl.CIMImpl <em>CIM</em>}' class.
10325 * <!-- begin-user-doc -->
10326 * <!-- end-user-doc -->
10327 * @see Taxation.impl.CIMImpl
10328 * @see Taxation.impl.TaxationPackageImpl#getCIM()
10329 * @generated
10330 */
10331 EClass CIM = eINSTANCE.getCIM();
10332
10333 /**
10334 * The meta object literal for the '{@link Taxation.impl.CIPImpl <em>CIP</em>}' class.
10335 * <!-- begin-user-doc -->
10336 * <!-- end-user-doc -->
10337 * @see Taxation.impl.CIPImpl
10338 * @see Taxation.impl.TaxationPackageImpl#getCIP()
10339 * @generated
10340 */
10341 EClass CIP = eINSTANCE.getCIP();
10342
10343 /**
10344 * The meta object literal for the '{@link Taxation.impl.CISImpl <em>CIS</em>}' class.
10345 * <!-- begin-user-doc -->
10346 * <!-- end-user-doc -->
10347 * @see Taxation.impl.CISImpl
10348 * @see Taxation.impl.TaxationPackageImpl#getCIS()
10349 * @generated
10350 */
10351 EClass CIS = eINSTANCE.getCIS();
10352
10353 /**
10354 * The meta object literal for the '{@link Taxation.impl.FDImpl <em>FD</em>}' class.
10355 * <!-- begin-user-doc -->
10356 * <!-- end-user-doc -->
10357 * @see Taxation.impl.FDImpl
10358 * @see Taxation.impl.TaxationPackageImpl#getFD()
10359 * @generated
10360 */
10361 EClass FD = eINSTANCE.getFD();
10362
10363 /**
10364 * The meta object literal for the '<em><b>Distance declared in january</b></em>' attribute feature.
10365 * <!-- begin-user-doc -->
10366 * <!-- end-user-doc -->
10367 * @generated
10368 */
10369 EAttribute FD__DISTANCE_DECLARED_IN_JANUARY = eINSTANCE.getFD_Distance_declared_in_january();
10370
10371 /**
10372 * The meta object literal for the '<em><b>Calculated distance</b></em>' attribute feature.
10373 * <!-- begin-user-doc -->
10374 * <!-- end-user-doc -->
10375 * @generated
10376 */
10377 EAttribute FD__CALCULATED_DISTANCE = eINSTANCE.getFD_Calculated_distance();
10378
10379 /**
10380 * The meta object literal for the '{@link Taxation.impl.Professional_Expenses_DeductionImpl <em>Professional Expenses Deduction</em>}' class.
10381 * <!-- begin-user-doc -->
10382 * <!-- end-user-doc -->
10383 * @see Taxation.impl.Professional_Expenses_DeductionImpl
10384 * @see Taxation.impl.TaxationPackageImpl#getProfessional_Expenses_Deduction()
10385 * @generated
10386 */
10387 EClass PROFESSIONAL_EXPENSES_DEDUCTION = eINSTANCE.getProfessional_Expenses_Deduction();
10388
10389 /**
10390 * The meta object literal for the '{@link Taxation.impl.FOImpl <em>FO</em>}' class.
10391 * <!-- begin-user-doc -->
10392 * <!-- end-user-doc -->
10393 * @see Taxation.impl.FOImpl
10394 * @see Taxation.impl.TaxationPackageImpl#getFO()
10395 * @generated
10396 */
10397 EClass FO = eINSTANCE.getFO();
10398
10399 /**
10400 * The meta object literal for the '<em><b>Rate type for FO</b></em>' attribute feature.
10401 * <!-- begin-user-doc -->
10402 * <!-- end-user-doc -->
10403 * @generated
10404 */
10405 EAttribute FO__RATE_TYPE_FOR_FO = eINSTANCE.getFO_Rate_type_for_FO();
10406
10407 /**
10408 * The meta object literal for the '{@link Taxation.impl.DS_for_Permanent_ExpenseImpl <em>DS for Permanent Expense</em>}' class.
10409 * <!-- begin-user-doc -->
10410 * <!-- end-user-doc -->
10411 * @see Taxation.impl.DS_for_Permanent_ExpenseImpl
10412 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Permanent_Expense()
10413 * @generated
10414 */
10415 EClass DS_FOR_PERMANENT_EXPENSE = eINSTANCE.getDS_for_Permanent_Expense();
10416
10417 /**
10418 * The meta object literal for the '<em><b>Permanent expense category</b></em>' attribute feature.
10419 * <!-- begin-user-doc -->
10420 * <!-- end-user-doc -->
10421 * @generated
10422 */
10423 EAttribute DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY = eINSTANCE.getDS_for_Permanent_Expense_Permanent_expense_category();
10424
10425 /**
10426 * The meta object literal for the '{@link Taxation.impl.DSImpl <em>DS</em>}' class.
10427 * <!-- begin-user-doc -->
10428 * <!-- end-user-doc -->
10429 * @see Taxation.impl.DSImpl
10430 * @see Taxation.impl.TaxationPackageImpl#getDS()
10431 * @generated
10432 */
10433 EClass DS = eINSTANCE.getDS();
10434
10435 /**
10436 * The meta object literal for the '<em><b>Maximum deductible amount</b></em>' attribute feature.
10437 * <!-- begin-user-doc -->
10438 * <!-- end-user-doc -->
10439 * @generated
10440 */
10441 EAttribute DS__MAXIMUM_DEDUCTIBLE_AMOUNT = eINSTANCE.getDS_Maximum_deductible_amount();
10442
10443 /**
10444 * The meta object literal for the '<em><b>Id3</b></em>' attribute feature.
10445 * <!-- begin-user-doc -->
10446 * <!-- end-user-doc -->
10447 * @generated
10448 */
10449 EAttribute DS__ID3 = eINSTANCE.getDS_Id3();
10450
10451 /**
10452 * The meta object literal for the '{@link Taxation.impl.DS_for_Interest_ExpenseImpl <em>DS for Interest Expense</em>}' class.
10453 * <!-- begin-user-doc -->
10454 * <!-- end-user-doc -->
10455 * @see Taxation.impl.DS_for_Interest_ExpenseImpl
10456 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Interest_Expense()
10457 * @generated
10458 */
10459 EClass DS_FOR_INTEREST_EXPENSE = eINSTANCE.getDS_for_Interest_Expense();
10460
10461 /**
10462 * The meta object literal for the '{@link Taxation.impl.DS_for_Health_and_Pension_InsuranceImpl <em>DS for Health and Pension Insurance</em>}' class.
10463 * <!-- begin-user-doc -->
10464 * <!-- end-user-doc -->
10465 * @see Taxation.impl.DS_for_Health_and_Pension_InsuranceImpl
10466 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Health_and_Pension_Insurance()
10467 * @generated
10468 */
10469 EClass DS_FOR_HEALTH_AND_PENSION_INSURANCE = eINSTANCE.getDS_for_Health_and_Pension_Insurance();
10470
10471 /**
10472 * The meta object literal for the '<em><b>Insurance category</b></em>' attribute feature.
10473 * <!-- begin-user-doc -->
10474 * <!-- end-user-doc -->
10475 * @generated
10476 */
10477 EAttribute DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY = eINSTANCE.getDS_for_Health_and_Pension_Insurance_Insurance_category();
10478
10479 /**
10480 * The meta object literal for the '{@link Taxation.impl.DS_for_Private_Insurance_and_PlanImpl <em>DS for Private Insurance and Plan</em>}' class.
10481 * <!-- begin-user-doc -->
10482 * <!-- end-user-doc -->
10483 * @see Taxation.impl.DS_for_Private_Insurance_and_PlanImpl
10484 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Private_Insurance_and_Plan()
10485 * @generated
10486 */
10487 EClass DS_FOR_PRIVATE_INSURANCE_AND_PLAN = eINSTANCE.getDS_for_Private_Insurance_and_Plan();
10488
10489 /**
10490 * The meta object literal for the '<em><b>Private insurance and plan category</b></em>' attribute feature.
10491 * <!-- begin-user-doc -->
10492 * <!-- end-user-doc -->
10493 * @generated
10494 */
10495 EAttribute DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY = eINSTANCE.getDS_for_Private_Insurance_and_Plan_Private_insurance_and_plan_category();
10496
10497 /**
10498 * The meta object literal for the '<em><b>Increase for life insurance</b></em>' attribute feature.
10499 * <!-- begin-user-doc -->
10500 * <!-- end-user-doc -->
10501 * @generated
10502 */
10503 EAttribute DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE = eINSTANCE.getDS_for_Private_Insurance_and_Plan_Increase_for_life_insurance();
10504
10505 /**
10506 * The meta object literal for the '<em><b>Maximum deductible amount for private insurance</b></em>' attribute feature.
10507 * <!-- begin-user-doc -->
10508 * <!-- end-user-doc -->
10509 * @generated
10510 */
10511 EAttribute DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE = eINSTANCE.getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_private_insurance();
10512
10513 /**
10514 * The meta object literal for the '<em><b>Maximum deductible amount for old age pension plan</b></em>' attribute feature.
10515 * <!-- begin-user-doc -->
10516 * <!-- end-user-doc -->
10517 * @generated
10518 */
10519 EAttribute DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN = eINSTANCE.getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_old_age_pension_plan();
10520
10521 /**
10522 * The meta object literal for the '{@link Taxation.impl.DS_for_Loss_CarryforwardImpl <em>DS for Loss Carryforward</em>}' class.
10523 * <!-- begin-user-doc -->
10524 * <!-- end-user-doc -->
10525 * @see Taxation.impl.DS_for_Loss_CarryforwardImpl
10526 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Loss_Carryforward()
10527 * @generated
10528 */
10529 EClass DS_FOR_LOSS_CARRYFORWARD = eINSTANCE.getDS_for_Loss_Carryforward();
10530
10531 /**
10532 * The meta object literal for the '{@link Taxation.impl.DS_for_DonationImpl <em>DS for Donation</em>}' class.
10533 * <!-- begin-user-doc -->
10534 * <!-- end-user-doc -->
10535 * @see Taxation.impl.DS_for_DonationImpl
10536 * @see Taxation.impl.TaxationPackageImpl#getDS_for_Donation()
10537 * @generated
10538 */
10539 EClass DS_FOR_DONATION = eINSTANCE.getDS_for_Donation();
10540
10541 /**
10542 * The meta object literal for the '{@link Taxation.impl.Permanent_ExpenseImpl <em>Permanent Expense</em>}' class.
10543 * <!-- begin-user-doc -->
10544 * <!-- end-user-doc -->
10545 * @see Taxation.impl.Permanent_ExpenseImpl
10546 * @see Taxation.impl.TaxationPackageImpl#getPermanent_Expense()
10547 * @generated
10548 */
10549 EClass PERMANENT_EXPENSE = eINSTANCE.getPermanent_Expense();
10550
10551 /**
10552 * The meta object literal for the '<em><b>Category</b></em>' attribute feature.
10553 * <!-- begin-user-doc -->
10554 * <!-- end-user-doc -->
10555 * @generated
10556 */
10557 EAttribute PERMANENT_EXPENSE__CATEGORY = eINSTANCE.getPermanent_Expense_Category();
10558
10559 /**
10560 * The meta object literal for the '<em><b>Is eligible for deduction</b></em>' attribute feature.
10561 * <!-- begin-user-doc -->
10562 * <!-- end-user-doc -->
10563 * @generated
10564 */
10565 EAttribute PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION = eINSTANCE.getPermanent_Expense_Is_eligible_for_deduction();
10566
10567 /**
10568 * The meta object literal for the '{@link Taxation.impl.Special_Expense_DSImpl <em>Special Expense DS</em>}' class.
10569 * <!-- begin-user-doc -->
10570 * <!-- end-user-doc -->
10571 * @see Taxation.impl.Special_Expense_DSImpl
10572 * @see Taxation.impl.TaxationPackageImpl#getSpecial_Expense_DS()
10573 * @generated
10574 */
10575 EClass SPECIAL_EXPENSE_DS = eINSTANCE.getSpecial_Expense_DS();
10576
10577 /**
10578 * The meta object literal for the '{@link Taxation.impl.Interest_ExpenseImpl <em>Interest Expense</em>}' class.
10579 * <!-- begin-user-doc -->
10580 * <!-- end-user-doc -->
10581 * @see Taxation.impl.Interest_ExpenseImpl
10582 * @see Taxation.impl.TaxationPackageImpl#getInterest_Expense()
10583 * @generated
10584 */
10585 EClass INTEREST_EXPENSE = eINSTANCE.getInterest_Expense();
10586
10587 /**
10588 * The meta object literal for the '{@link Taxation.impl.Private_Insurance_and_PlanImpl <em>Private Insurance and Plan</em>}' class.
10589 * <!-- begin-user-doc -->
10590 * <!-- end-user-doc -->
10591 * @see Taxation.impl.Private_Insurance_and_PlanImpl
10592 * @see Taxation.impl.TaxationPackageImpl#getPrivate_Insurance_and_Plan()
10593 * @generated
10594 */
10595 EClass PRIVATE_INSURANCE_AND_PLAN = eINSTANCE.getPrivate_Insurance_and_Plan();
10596
10597 /**
10598 * The meta object literal for the '<em><b>Category</b></em>' attribute feature.
10599 * <!-- begin-user-doc -->
10600 * <!-- end-user-doc -->
10601 * @generated
10602 */
10603 EAttribute PRIVATE_INSURANCE_AND_PLAN__CATEGORY = eINSTANCE.getPrivate_Insurance_and_Plan_Category();
10604
10605 /**
10606 * The meta object literal for the '<em><b>Duration of contract</b></em>' attribute feature.
10607 * <!-- begin-user-doc -->
10608 * <!-- end-user-doc -->
10609 * @generated
10610 */
10611 EAttribute PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT = eINSTANCE.getPrivate_Insurance_and_Plan_Duration_of_contract();
10612
10613 /**
10614 * The meta object literal for the '<em><b>Is private insurance and plan eligible for deduction</b></em>' attribute feature.
10615 * <!-- begin-user-doc -->
10616 * <!-- end-user-doc -->
10617 * @generated
10618 */
10619 EAttribute PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION = eINSTANCE.getPrivate_Insurance_and_Plan_Is_private_insurance_and_plan_eligible_for_deduction();
10620
10621 /**
10622 * The meta object literal for the '{@link Taxation.impl.Health_and_Pension_InsuranceImpl <em>Health and Pension Insurance</em>}' class.
10623 * <!-- begin-user-doc -->
10624 * <!-- end-user-doc -->
10625 * @see Taxation.impl.Health_and_Pension_InsuranceImpl
10626 * @see Taxation.impl.TaxationPackageImpl#getHealth_and_Pension_Insurance()
10627 * @generated
10628 */
10629 EClass HEALTH_AND_PENSION_INSURANCE = eINSTANCE.getHealth_and_Pension_Insurance();
10630
10631 /**
10632 * The meta object literal for the '<em><b>Category</b></em>' attribute feature.
10633 * <!-- begin-user-doc -->
10634 * <!-- end-user-doc -->
10635 * @generated
10636 */
10637 EAttribute HEALTH_AND_PENSION_INSURANCE__CATEGORY = eINSTANCE.getHealth_and_Pension_Insurance_Category();
10638
10639 /**
10640 * The meta object literal for the '<em><b>Is related to additional salary</b></em>' attribute feature.
10641 * <!-- begin-user-doc -->
10642 * <!-- end-user-doc -->
10643 * @generated
10644 */
10645 EAttribute HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY = eINSTANCE.getHealth_and_Pension_Insurance_Is_related_to_additional_salary();
10646
10647 /**
10648 * The meta object literal for the '{@link Taxation.impl.DonationImpl <em>Donation</em>}' class.
10649 * <!-- begin-user-doc -->
10650 * <!-- end-user-doc -->
10651 * @see Taxation.impl.DonationImpl
10652 * @see Taxation.impl.TaxationPackageImpl#getDonation()
10653 * @generated
10654 */
10655 EClass DONATION = eINSTANCE.getDonation();
10656
10657 /**
10658 * The meta object literal for the '<em><b>Beneficiary1</b></em>' attribute feature.
10659 * <!-- begin-user-doc -->
10660 * <!-- end-user-doc -->
10661 * @generated
10662 */
10663 EAttribute DONATION__BENEFICIARY1 = eINSTANCE.getDonation_Beneficiary1();
10664
10665 /**
10666 * The meta object literal for the '<em><b>Is beneficiary eligible</b></em>' attribute feature.
10667 * <!-- begin-user-doc -->
10668 * <!-- end-user-doc -->
10669 * @generated
10670 */
10671 EAttribute DONATION__IS_BENEFICIARY_ELIGIBLE = eINSTANCE.getDonation_Is_beneficiary_eligible();
10672
10673 /**
10674 * The meta object literal for the '<em><b>Is donation reported</b></em>' attribute feature.
10675 * <!-- begin-user-doc -->
10676 * <!-- end-user-doc -->
10677 * @generated
10678 */
10679 EAttribute DONATION__IS_DONATION_REPORTED = eINSTANCE.getDonation_Is_donation_reported();
10680
10681 /**
10682 * The meta object literal for the '{@link Taxation.impl.Loss_CarryforwardImpl <em>Loss Carryforward</em>}' class.
10683 * <!-- begin-user-doc -->
10684 * <!-- end-user-doc -->
10685 * @see Taxation.impl.Loss_CarryforwardImpl
10686 * @see Taxation.impl.TaxationPackageImpl#getLoss_Carryforward()
10687 * @generated
10688 */
10689 EClass LOSS_CARRYFORWARD = eINSTANCE.getLoss_Carryforward();
10690
10691 /**
10692 * The meta object literal for the '<em><b>Regular accountability</b></em>' attribute feature.
10693 * <!-- begin-user-doc -->
10694 * <!-- end-user-doc -->
10695 * @generated
10696 */
10697 EAttribute LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY = eINSTANCE.getLoss_Carryforward_Regular_accountability();
10698
10699 /**
10700 * The meta object literal for the '<em><b>Compensation by other means</b></em>' attribute feature.
10701 * <!-- begin-user-doc -->
10702 * <!-- end-user-doc -->
10703 * @generated
10704 */
10705 EAttribute LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS = eINSTANCE.getLoss_Carryforward_Compensation_by_other_means();
10706
10707 /**
10708 * The meta object literal for the '<em><b>Tax payer has inherited business ownership</b></em>' attribute feature.
10709 * <!-- begin-user-doc -->
10710 * <!-- end-user-doc -->
10711 * @generated
10712 */
10713 EAttribute LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP = eINSTANCE.getLoss_Carryforward_Tax_payer_has_inherited_business_ownership();
10714
10715 /**
10716 * The meta object literal for the '<em><b>Tax payer has been partner in business</b></em>' attribute feature.
10717 * <!-- begin-user-doc -->
10718 * <!-- end-user-doc -->
10719 * @generated
10720 */
10721 EAttribute LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS = eINSTANCE.getLoss_Carryforward_Tax_payer_has_been_partner_in_business();
10722
10723 /**
10724 * The meta object literal for the '{@link Taxation.impl.Spousal_Expense_ACImpl <em>Spousal Expense AC</em>}' class.
10725 * <!-- begin-user-doc -->
10726 * <!-- end-user-doc -->
10727 * @see Taxation.impl.Spousal_Expense_ACImpl
10728 * @see Taxation.impl.TaxationPackageImpl#getSpousal_Expense_AC()
10729 * @generated
10730 */
10731 EClass SPOUSAL_EXPENSE_AC = eINSTANCE.getSpousal_Expense_AC();
10732
10733 /**
10734 * The meta object literal for the '{@link Taxation.impl.Extraordinary_Expense_CEImpl <em>Extraordinary Expense CE</em>}' class.
10735 * <!-- begin-user-doc -->
10736 * <!-- end-user-doc -->
10737 * @see Taxation.impl.Extraordinary_Expense_CEImpl
10738 * @see Taxation.impl.TaxationPackageImpl#getExtraordinary_Expense_CE()
10739 * @generated
10740 */
10741 EClass EXTRAORDINARY_EXPENSE_CE = eINSTANCE.getExtraordinary_Expense_CE();
10742
10743 /**
10744 * The meta object literal for the '<em><b>Thresholded deduction percentage</b></em>' attribute feature.
10745 * <!-- begin-user-doc -->
10746 * <!-- end-user-doc -->
10747 * @generated
10748 */
10749 EAttribute EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE = eINSTANCE.getExtraordinary_Expense_CE_Thresholded_deduction_percentage();
10750
10751 /**
10752 * The meta object literal for the '<em><b>Ce type</b></em>' attribute feature.
10753 * <!-- begin-user-doc -->
10754 * <!-- end-user-doc -->
10755 * @generated
10756 */
10757 EAttribute EXTRAORDINARY_EXPENSE_CE__CE_TYPE = eINSTANCE.getExtraordinary_Expense_CE_Ce_type();
10758
10759 /**
10760 * The meta object literal for the '{@link Taxation.impl.Travel_Expense_FDImpl <em>Travel Expense FD</em>}' class.
10761 * <!-- begin-user-doc -->
10762 * <!-- end-user-doc -->
10763 * @see Taxation.impl.Travel_Expense_FDImpl
10764 * @see Taxation.impl.TaxationPackageImpl#getTravel_Expense_FD()
10765 * @generated
10766 */
10767 EClass TRAVEL_EXPENSE_FD = eINSTANCE.getTravel_Expense_FD();
10768
10769 /**
10770 * The meta object literal for the '{@link Taxation.impl.Professional_ExpenseImpl <em>Professional Expense</em>}' class.
10771 * <!-- begin-user-doc -->
10772 * <!-- end-user-doc -->
10773 * @see Taxation.impl.Professional_ExpenseImpl
10774 * @see Taxation.impl.TaxationPackageImpl#getProfessional_Expense()
10775 * @generated
10776 */
10777 EClass PROFESSIONAL_EXPENSE = eINSTANCE.getProfessional_Expense();
10778
10779 /**
10780 * The meta object literal for the '{@link Taxation.impl.Miscellaneous_Expense_FOImpl <em>Miscellaneous Expense FO</em>}' class.
10781 * <!-- begin-user-doc -->
10782 * <!-- end-user-doc -->
10783 * @see Taxation.impl.Miscellaneous_Expense_FOImpl
10784 * @see Taxation.impl.TaxationPackageImpl#getMiscellaneous_Expense_FO()
10785 * @generated
10786 */
10787 EClass MISCELLANEOUS_EXPENSE_FO = eINSTANCE.getMiscellaneous_Expense_FO();
10788
10789 /**
10790 * The meta object literal for the '{@link Taxation.Grantor <em>Grantor</em>}' enum.
10791 * <!-- begin-user-doc -->
10792 * <!-- end-user-doc -->
10793 * @see Taxation.Grantor
10794 * @see Taxation.impl.TaxationPackageImpl#getGrantor()
10795 * @generated
10796 */
10797 EEnum GRANTOR = eINSTANCE.getGrantor();
10798
10799 /**
10800 * The meta object literal for the '{@link Taxation.Disability_Types <em>Disability Types</em>}' enum.
10801 * <!-- begin-user-doc -->
10802 * <!-- end-user-doc -->
10803 * @see Taxation.Disability_Types
10804 * @see Taxation.impl.TaxationPackageImpl#getDisability_Types()
10805 * @generated
10806 */
10807 EEnum DISABILITY_TYPES = eINSTANCE.getDisability_Types();
10808
10809 /**
10810 * The meta object literal for the '{@link Taxation.Country <em>Country</em>}' enum.
10811 * <!-- begin-user-doc -->
10812 * <!-- end-user-doc -->
10813 * @see Taxation.Country
10814 * @see Taxation.impl.TaxationPackageImpl#getCountry()
10815 * @generated
10816 */
10817 EEnum COUNTRY = eINSTANCE.getCountry();
10818
10819 /**
10820 * The meta object literal for the '{@link Taxation.Tax_Card_Type <em>Tax Card Type</em>}' enum.
10821 * <!-- begin-user-doc -->
10822 * <!-- end-user-doc -->
10823 * @see Taxation.Tax_Card_Type
10824 * @see Taxation.impl.TaxationPackageImpl#getTax_Card_Type()
10825 * @generated
10826 */
10827 EEnum TAX_CARD_TYPE = eINSTANCE.getTax_Card_Type();
10828
10829 /**
10830 * The meta object literal for the '{@link Taxation.Tax_Office <em>Tax Office</em>}' enum.
10831 * <!-- begin-user-doc -->
10832 * <!-- end-user-doc -->
10833 * @see Taxation.Tax_Office
10834 * @see Taxation.impl.TaxationPackageImpl#getTax_Office()
10835 * @generated
10836 */
10837 EEnum TAX_OFFICE = eINSTANCE.getTax_Office();
10838
10839 /**
10840 * The meta object literal for the '{@link Taxation.Tax_Class_Category <em>Tax Class Category</em>}' enum.
10841 * <!-- begin-user-doc -->
10842 * <!-- end-user-doc -->
10843 * @see Taxation.Tax_Class_Category
10844 * @see Taxation.impl.TaxationPackageImpl#getTax_Class_Category()
10845 * @generated
10846 */
10847 EEnum TAX_CLASS_CATEGORY = eINSTANCE.getTax_Class_Category();
10848
10849 /**
10850 * The meta object literal for the '{@link Taxation.Job_Activity <em>Job Activity</em>}' enum.
10851 * <!-- begin-user-doc -->
10852 * <!-- end-user-doc -->
10853 * @see Taxation.Job_Activity
10854 * @see Taxation.impl.TaxationPackageImpl#getJob_Activity()
10855 * @generated
10856 */
10857 EEnum JOB_ACTIVITY = eINSTANCE.getJob_Activity();
10858
10859 /**
10860 * The meta object literal for the '{@link Taxation.Town <em>Town</em>}' enum.
10861 * <!-- begin-user-doc -->
10862 * <!-- end-user-doc -->
10863 * @see Taxation.Town
10864 * @see Taxation.impl.TaxationPackageImpl#getTown()
10865 * @generated
10866 */
10867 EEnum TOWN = eINSTANCE.getTown();
10868
10869 /**
10870 * The meta object literal for the '{@link Taxation.Type_of_Rate <em>Type of Rate</em>}' enum.
10871 * <!-- begin-user-doc -->
10872 * <!-- end-user-doc -->
10873 * @see Taxation.Type_of_Rate
10874 * @see Taxation.impl.TaxationPackageImpl#getType_of_Rate()
10875 * @generated
10876 */
10877 EEnum TYPE_OF_RATE = eINSTANCE.getType_of_Rate();
10878
10879 /**
10880 * The meta object literal for the '{@link Taxation.CE_Type <em>CE Type</em>}' enum.
10881 * <!-- begin-user-doc -->
10882 * <!-- end-user-doc -->
10883 * @see Taxation.CE_Type
10884 * @see Taxation.impl.TaxationPackageImpl#getCE_Type()
10885 * @generated
10886 */
10887 EEnum CE_TYPE = eINSTANCE.getCE_Type();
10888
10889 /**
10890 * The meta object literal for the '{@link Taxation.Expense_Purpose <em>Expense Purpose</em>}' enum.
10891 * <!-- begin-user-doc -->
10892 * <!-- end-user-doc -->
10893 * @see Taxation.Expense_Purpose
10894 * @see Taxation.impl.TaxationPackageImpl#getExpense_Purpose()
10895 * @generated
10896 */
10897 EEnum EXPENSE_PURPOSE = eINSTANCE.getExpense_Purpose();
10898
10899 /**
10900 * The meta object literal for the '{@link Taxation.Dependent_Type <em>Dependent Type</em>}' enum.
10901 * <!-- begin-user-doc -->
10902 * <!-- end-user-doc -->
10903 * @see Taxation.Dependent_Type
10904 * @see Taxation.impl.TaxationPackageImpl#getDependent_Type()
10905 * @generated
10906 */
10907 EEnum DEPENDENT_TYPE = eINSTANCE.getDependent_Type();
10908
10909 /**
10910 * The meta object literal for the '{@link Taxation.Separation_Causes <em>Separation Causes</em>}' enum.
10911 * <!-- begin-user-doc -->
10912 * <!-- end-user-doc -->
10913 * @see Taxation.Separation_Causes
10914 * @see Taxation.impl.TaxationPackageImpl#getSeparation_Causes()
10915 * @generated
10916 */
10917 EEnum SEPARATION_CAUSES = eINSTANCE.getSeparation_Causes();
10918
10919 /**
10920 * The meta object literal for the '{@link Taxation.Category_of_Permanent_Expense <em>Category of Permanent Expense</em>}' enum.
10921 * <!-- begin-user-doc -->
10922 * <!-- end-user-doc -->
10923 * @see Taxation.Category_of_Permanent_Expense
10924 * @see Taxation.impl.TaxationPackageImpl#getCategory_of_Permanent_Expense()
10925 * @generated
10926 */
10927 EEnum CATEGORY_OF_PERMANENT_EXPENSE = eINSTANCE.getCategory_of_Permanent_Expense();
10928
10929 /**
10930 * The meta object literal for the '{@link Taxation.Category_of_Health_and_Pension_Insurances <em>Category of Health and Pension Insurances</em>}' enum.
10931 * <!-- begin-user-doc -->
10932 * <!-- end-user-doc -->
10933 * @see Taxation.Category_of_Health_and_Pension_Insurances
10934 * @see Taxation.impl.TaxationPackageImpl#getCategory_of_Health_and_Pension_Insurances()
10935 * @generated
10936 */
10937 EEnum CATEGORY_OF_HEALTH_AND_PENSION_INSURANCES = eINSTANCE.getCategory_of_Health_and_Pension_Insurances();
10938
10939 /**
10940 * The meta object literal for the '{@link Taxation.Category_of_Private_Insurance_and_Plan <em>Category of Private Insurance and Plan</em>}' enum.
10941 * <!-- begin-user-doc -->
10942 * <!-- end-user-doc -->
10943 * @see Taxation.Category_of_Private_Insurance_and_Plan
10944 * @see Taxation.impl.TaxationPackageImpl#getCategory_of_Private_Insurance_and_Plan()
10945 * @generated
10946 */
10947 EEnum CATEGORY_OF_PRIVATE_INSURANCE_AND_PLAN = eINSTANCE.getCategory_of_Private_Insurance_and_Plan();
10948
10949 /**
10950 * The meta object literal for the '{@link Taxation.Legal_Union_Types <em>Legal Union Types</em>}' enum.
10951 * <!-- begin-user-doc -->
10952 * <!-- end-user-doc -->
10953 * @see Taxation.Legal_Union_Types
10954 * @see Taxation.impl.TaxationPackageImpl#getLegal_Union_Types()
10955 * @generated
10956 */
10957 EEnum LEGAL_UNION_TYPES = eINSTANCE.getLegal_Union_Types();
10958
10959 }
10960
10961} //TaxationPackage
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Town.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Town.java
new file mode 100644
index 00000000..2ca64b95
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Town.java
@@ -0,0 +1,278 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Town</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getTown()
17 * @model
18 * @generated
19 */
20public enum Town implements Enumerator {
21 /**
22 * The '<em><b>LL</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #LL_VALUE
26 * @generated
27 * @ordered
28 */
29 LL(0, "LL", "LL"),
30
31 /**
32 * The '<em><b>BB</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #BB_VALUE
36 * @generated
37 * @ordered
38 */
39 BB(1, "BB", "BB"),
40
41 /**
42 * The '<em><b>SS</b></em>' literal object.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #SS_VALUE
46 * @generated
47 * @ordered
48 */
49 SS(2, "SS", "SS"),
50
51 /**
52 * The '<em><b>TT</b></em>' literal object.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #TT_VALUE
56 * @generated
57 * @ordered
58 */
59 TT(3, "TT", "TT"),
60
61 /**
62 * The '<em><b>Other</b></em>' literal object.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #OTHER_VALUE
66 * @generated
67 * @ordered
68 */
69 OTHER(4, "Other", "Other");
70
71 /**
72 * The '<em><b>LL</b></em>' literal value.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #LL
76 * @model
77 * @generated
78 * @ordered
79 */
80 public static final int LL_VALUE = 0;
81
82 /**
83 * The '<em><b>BB</b></em>' literal value.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @see #BB
87 * @model
88 * @generated
89 * @ordered
90 */
91 public static final int BB_VALUE = 1;
92
93 /**
94 * The '<em><b>SS</b></em>' literal value.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #SS
98 * @model
99 * @generated
100 * @ordered
101 */
102 public static final int SS_VALUE = 2;
103
104 /**
105 * The '<em><b>TT</b></em>' literal value.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @see #TT
109 * @model
110 * @generated
111 * @ordered
112 */
113 public static final int TT_VALUE = 3;
114
115 /**
116 * The '<em><b>Other</b></em>' literal value.
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @see #OTHER
120 * @model name="Other"
121 * @generated
122 * @ordered
123 */
124 public static final int OTHER_VALUE = 4;
125
126 /**
127 * An array of all the '<em><b>Town</b></em>' enumerators.
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 */
132 private static final Town[] VALUES_ARRAY =
133 new Town[] {
134 LL,
135 BB,
136 SS,
137 TT,
138 OTHER,
139 };
140
141 /**
142 * A public read-only list of all the '<em><b>Town</b></em>' enumerators.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 public static final List<Town> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
148
149 /**
150 * Returns the '<em><b>Town</b></em>' literal with the specified literal value.
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @param literal the literal.
154 * @return the matching enumerator or <code>null</code>.
155 * @generated
156 */
157 public static Town get(String literal) {
158 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
159 Town result = VALUES_ARRAY[i];
160 if (result.toString().equals(literal)) {
161 return result;
162 }
163 }
164 return null;
165 }
166
167 /**
168 * Returns the '<em><b>Town</b></em>' literal with the specified name.
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @param name the name.
172 * @return the matching enumerator or <code>null</code>.
173 * @generated
174 */
175 public static Town getByName(String name) {
176 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
177 Town result = VALUES_ARRAY[i];
178 if (result.getName().equals(name)) {
179 return result;
180 }
181 }
182 return null;
183 }
184
185 /**
186 * Returns the '<em><b>Town</b></em>' literal with the specified integer value.
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @param value the integer value.
190 * @return the matching enumerator or <code>null</code>.
191 * @generated
192 */
193 public static Town get(int value) {
194 switch (value) {
195 case LL_VALUE: return LL;
196 case BB_VALUE: return BB;
197 case SS_VALUE: return SS;
198 case TT_VALUE: return TT;
199 case OTHER_VALUE: return OTHER;
200 }
201 return null;
202 }
203
204 /**
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @generated
208 */
209 private final int value;
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 private final String name;
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 private final String literal;
224
225 /**
226 * Only this class can construct instances.
227 * <!-- begin-user-doc -->
228 * <!-- end-user-doc -->
229 * @generated
230 */
231 private Town(int value, String name, String literal) {
232 this.value = value;
233 this.name = name;
234 this.literal = literal;
235 }
236
237 /**
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 */
242 @Override
243 public int getValue() {
244 return value;
245 }
246
247 /**
248 * <!-- begin-user-doc -->
249 * <!-- end-user-doc -->
250 * @generated
251 */
252 @Override
253 public String getName() {
254 return name;
255 }
256
257 /**
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 */
262 @Override
263 public String getLiteral() {
264 return literal;
265 }
266
267 /**
268 * Returns the literal value of the enumerator, which is its string representation.
269 * <!-- begin-user-doc -->
270 * <!-- end-user-doc -->
271 * @generated
272 */
273 @Override
274 public String toString() {
275 return literal;
276 }
277
278} //Town
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Trade_and_Business_Income.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Trade_and_Business_Income.java
new file mode 100644
index 00000000..3f949ac1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Trade_and_Business_Income.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Trade and Business Income</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getTrade_and_Business_Income()
13 * @model
14 * @generated
15 */
16public interface Trade_and_Business_Income extends Income_Type {
17} // Trade_and_Business_Income
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Travel_Expense_FD.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Travel_Expense_FD.java
new file mode 100644
index 00000000..72fd7aa6
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Travel_Expense_FD.java
@@ -0,0 +1,17 @@
1/**
2 */
3package Taxation;
4
5
6/**
7 * <!-- begin-user-doc -->
8 * A representation of the model object '<em><b>Travel Expense FD</b></em>'.
9 * <!-- end-user-doc -->
10 *
11 *
12 * @see Taxation.TaxationPackage#getTravel_Expense_FD()
13 * @model
14 * @generated
15 */
16public interface Travel_Expense_FD extends Professional_Expense {
17} // Travel_Expense_FD
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Type_of_Rate.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Type_of_Rate.java
new file mode 100644
index 00000000..4e21ec74
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/Type_of_Rate.java
@@ -0,0 +1,209 @@
1/**
2 */
3package Taxation;
4
5import java.util.Arrays;
6import java.util.Collections;
7import java.util.List;
8
9import org.eclipse.emf.common.util.Enumerator;
10
11/**
12 * <!-- begin-user-doc -->
13 * A representation of the literals of the enumeration '<em><b>Type of Rate</b></em>',
14 * and utility methods for working with them.
15 * <!-- end-user-doc -->
16 * @see Taxation.TaxationPackage#getType_of_Rate()
17 * @model
18 * @generated
19 */
20public enum Type_of_Rate implements Enumerator {
21 /**
22 * The '<em><b>REGULAR</b></em>' literal object.
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @see #REGULAR_VALUE
26 * @generated
27 * @ordered
28 */
29 REGULAR(0, "REGULAR", "REGULAR"),
30
31 /**
32 * The '<em><b>REAL COST</b></em>' literal object.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #REAL_COST_VALUE
36 * @generated
37 * @ordered
38 */
39 REAL_COST(1, "REAL_COST", "REAL_COST");
40
41 /**
42 * The '<em><b>REGULAR</b></em>' literal value.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #REGULAR
46 * @model
47 * @generated
48 * @ordered
49 */
50 public static final int REGULAR_VALUE = 0;
51
52 /**
53 * The '<em><b>REAL COST</b></em>' literal value.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #REAL_COST
57 * @model
58 * @generated
59 * @ordered
60 */
61 public static final int REAL_COST_VALUE = 1;
62
63 /**
64 * An array of all the '<em><b>Type of Rate</b></em>' enumerators.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 private static final Type_of_Rate[] VALUES_ARRAY =
70 new Type_of_Rate[] {
71 REGULAR,
72 REAL_COST,
73 };
74
75 /**
76 * A public read-only list of all the '<em><b>Type of Rate</b></em>' enumerators.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 public static final List<Type_of_Rate> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
82
83 /**
84 * Returns the '<em><b>Type of Rate</b></em>' literal with the specified literal value.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @param literal the literal.
88 * @return the matching enumerator or <code>null</code>.
89 * @generated
90 */
91 public static Type_of_Rate get(String literal) {
92 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
93 Type_of_Rate result = VALUES_ARRAY[i];
94 if (result.toString().equals(literal)) {
95 return result;
96 }
97 }
98 return null;
99 }
100
101 /**
102 * Returns the '<em><b>Type of Rate</b></em>' literal with the specified name.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @param name the name.
106 * @return the matching enumerator or <code>null</code>.
107 * @generated
108 */
109 public static Type_of_Rate getByName(String name) {
110 for (int i = 0; i < VALUES_ARRAY.length; ++i) {
111 Type_of_Rate result = VALUES_ARRAY[i];
112 if (result.getName().equals(name)) {
113 return result;
114 }
115 }
116 return null;
117 }
118
119 /**
120 * Returns the '<em><b>Type of Rate</b></em>' literal with the specified integer value.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @param value the integer value.
124 * @return the matching enumerator or <code>null</code>.
125 * @generated
126 */
127 public static Type_of_Rate get(int value) {
128 switch (value) {
129 case REGULAR_VALUE: return REGULAR;
130 case REAL_COST_VALUE: return REAL_COST;
131 }
132 return null;
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 private final int value;
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 private final String name;
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 private final String literal;
155
156 /**
157 * Only this class can construct instances.
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 private Type_of_Rate(int value, String name, String literal) {
163 this.value = value;
164 this.name = name;
165 this.literal = literal;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 public int getValue() {
175 return value;
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 @Override
184 public String getName() {
185 return name;
186 }
187
188 /**
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 */
193 @Override
194 public String getLiteral() {
195 return literal;
196 }
197
198 /**
199 * Returns the literal value of the enumerator, which is its string representation.
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public String toString() {
206 return literal;
207 }
208
209} //Type_of_Rate
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/AddressImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/AddressImpl.java
new file mode 100644
index 00000000..79ec4dec
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/AddressImpl.java
@@ -0,0 +1,465 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Address;
6import Taxation.Country;
7import Taxation.Physical_Person;
8import Taxation.TaxationPackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
24import org.eclipse.emf.ecore.util.InternalEList;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Address</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link Taxation.impl.AddressImpl#getCountry <em>Country</em>}</li>
35 * <li>{@link Taxation.impl.AddressImpl#getStreet <em>Street</em>}</li>
36 * <li>{@link Taxation.impl.AddressImpl#getZipCode <em>Zip Code</em>}</li>
37 * <li>{@link Taxation.impl.AddressImpl#getCity <em>City</em>}</li>
38 * <li>{@link Taxation.impl.AddressImpl#getId2 <em>Id2</em>}</li>
39 * <li>{@link Taxation.impl.AddressImpl#getTaxPayer <em>Tax Payer</em>}</li>
40 * </ul>
41 *
42 * @generated
43 */
44public class AddressImpl extends MinimalEObjectImpl.Container implements Address {
45 /**
46 * The default value of the '{@link #getCountry() <em>Country</em>}' attribute.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @see #getCountry()
50 * @generated
51 * @ordered
52 */
53 protected static final Country COUNTRY_EDEFAULT = Country.ZZ;
54
55 /**
56 * The cached value of the '{@link #getCountry() <em>Country</em>}' attribute.
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @see #getCountry()
60 * @generated
61 * @ordered
62 */
63 protected Country country = COUNTRY_EDEFAULT;
64
65 /**
66 * The default value of the '{@link #getStreet() <em>Street</em>}' attribute.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @see #getStreet()
70 * @generated
71 * @ordered
72 */
73 protected static final String STREET_EDEFAULT = null;
74
75 /**
76 * The cached value of the '{@link #getStreet() <em>Street</em>}' attribute.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @see #getStreet()
80 * @generated
81 * @ordered
82 */
83 protected String street = STREET_EDEFAULT;
84
85 /**
86 * The default value of the '{@link #getZipCode() <em>Zip Code</em>}' attribute.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @see #getZipCode()
90 * @generated
91 * @ordered
92 */
93 protected static final String ZIP_CODE_EDEFAULT = null;
94
95 /**
96 * The cached value of the '{@link #getZipCode() <em>Zip Code</em>}' attribute.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @see #getZipCode()
100 * @generated
101 * @ordered
102 */
103 protected String zipCode = ZIP_CODE_EDEFAULT;
104
105 /**
106 * The default value of the '{@link #getCity() <em>City</em>}' attribute.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @see #getCity()
110 * @generated
111 * @ordered
112 */
113 protected static final String CITY_EDEFAULT = null;
114
115 /**
116 * The cached value of the '{@link #getCity() <em>City</em>}' attribute.
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @see #getCity()
120 * @generated
121 * @ordered
122 */
123 protected String city = CITY_EDEFAULT;
124
125 /**
126 * The default value of the '{@link #getId2() <em>Id2</em>}' attribute.
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @see #getId2()
130 * @generated
131 * @ordered
132 */
133 protected static final String ID2_EDEFAULT = null;
134
135 /**
136 * The cached value of the '{@link #getId2() <em>Id2</em>}' attribute.
137 * <!-- begin-user-doc -->
138 * <!-- end-user-doc -->
139 * @see #getId2()
140 * @generated
141 * @ordered
142 */
143 protected String id2 = ID2_EDEFAULT;
144
145 /**
146 * The cached value of the '{@link #getTaxPayer() <em>Tax Payer</em>}' reference list.
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @see #getTaxPayer()
150 * @generated
151 * @ordered
152 */
153 protected EList<Physical_Person> taxPayer;
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 protected AddressImpl() {
161 super();
162 }
163
164 /**
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 @Override
170 protected EClass eStaticClass() {
171 return TaxationPackage.Literals.ADDRESS;
172 }
173
174 /**
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @generated
178 */
179 @Override
180 public Country getCountry() {
181 return country;
182 }
183
184 /**
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @generated
188 */
189 @Override
190 public void setCountry(Country newCountry) {
191 Country oldCountry = country;
192 country = newCountry == null ? COUNTRY_EDEFAULT : newCountry;
193 if (eNotificationRequired())
194 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.ADDRESS__COUNTRY, oldCountry, country));
195 }
196
197 /**
198 * <!-- begin-user-doc -->
199 * <!-- end-user-doc -->
200 * @generated
201 */
202 @Override
203 public String getStreet() {
204 return street;
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 @Override
213 public void setStreet(String newStreet) {
214 String oldStreet = street;
215 street = newStreet;
216 if (eNotificationRequired())
217 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.ADDRESS__STREET, oldStreet, street));
218 }
219
220 /**
221 * <!-- begin-user-doc -->
222 * <!-- end-user-doc -->
223 * @generated
224 */
225 @Override
226 public String getZipCode() {
227 return zipCode;
228 }
229
230 /**
231 * <!-- begin-user-doc -->
232 * <!-- end-user-doc -->
233 * @generated
234 */
235 @Override
236 public void setZipCode(String newZipCode) {
237 String oldZipCode = zipCode;
238 zipCode = newZipCode;
239 if (eNotificationRequired())
240 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.ADDRESS__ZIP_CODE, oldZipCode, zipCode));
241 }
242
243 /**
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 */
248 @Override
249 public String getCity() {
250 return city;
251 }
252
253 /**
254 * <!-- begin-user-doc -->
255 * <!-- end-user-doc -->
256 * @generated
257 */
258 @Override
259 public void setCity(String newCity) {
260 String oldCity = city;
261 city = newCity;
262 if (eNotificationRequired())
263 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.ADDRESS__CITY, oldCity, city));
264 }
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 @Override
272 public String getId2() {
273 return id2;
274 }
275
276 /**
277 * <!-- begin-user-doc -->
278 * <!-- end-user-doc -->
279 * @generated
280 */
281 @Override
282 public void setId2(String newId2) {
283 String oldId2 = id2;
284 id2 = newId2;
285 if (eNotificationRequired())
286 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.ADDRESS__ID2, oldId2, id2));
287 }
288
289 /**
290 * <!-- begin-user-doc -->
291 * <!-- end-user-doc -->
292 * @generated
293 */
294 @Override
295 public EList<Physical_Person> getTaxPayer() {
296 if (taxPayer == null) {
297 taxPayer = new EObjectWithInverseResolvingEList.ManyInverse<Physical_Person>(Physical_Person.class, this, TaxationPackage.ADDRESS__TAX_PAYER, TaxationPackage.PHYSICAL_PERSON__ADDRESSES);
298 }
299 return taxPayer;
300 }
301
302 /**
303 * <!-- begin-user-doc -->
304 * <!-- end-user-doc -->
305 * @generated
306 */
307 @SuppressWarnings("unchecked")
308 @Override
309 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
310 switch (featureID) {
311 case TaxationPackage.ADDRESS__TAX_PAYER:
312 return ((InternalEList<InternalEObject>)(InternalEList<?>)getTaxPayer()).basicAdd(otherEnd, msgs);
313 }
314 return super.eInverseAdd(otherEnd, featureID, msgs);
315 }
316
317 /**
318 * <!-- begin-user-doc -->
319 * <!-- end-user-doc -->
320 * @generated
321 */
322 @Override
323 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
324 switch (featureID) {
325 case TaxationPackage.ADDRESS__TAX_PAYER:
326 return ((InternalEList<?>)getTaxPayer()).basicRemove(otherEnd, msgs);
327 }
328 return super.eInverseRemove(otherEnd, featureID, msgs);
329 }
330
331 /**
332 * <!-- begin-user-doc -->
333 * <!-- end-user-doc -->
334 * @generated
335 */
336 @Override
337 public Object eGet(int featureID, boolean resolve, boolean coreType) {
338 switch (featureID) {
339 case TaxationPackage.ADDRESS__COUNTRY:
340 return getCountry();
341 case TaxationPackage.ADDRESS__STREET:
342 return getStreet();
343 case TaxationPackage.ADDRESS__ZIP_CODE:
344 return getZipCode();
345 case TaxationPackage.ADDRESS__CITY:
346 return getCity();
347 case TaxationPackage.ADDRESS__ID2:
348 return getId2();
349 case TaxationPackage.ADDRESS__TAX_PAYER:
350 return getTaxPayer();
351 }
352 return super.eGet(featureID, resolve, coreType);
353 }
354
355 /**
356 * <!-- begin-user-doc -->
357 * <!-- end-user-doc -->
358 * @generated
359 */
360 @SuppressWarnings("unchecked")
361 @Override
362 public void eSet(int featureID, Object newValue) {
363 switch (featureID) {
364 case TaxationPackage.ADDRESS__COUNTRY:
365 setCountry((Country)newValue);
366 return;
367 case TaxationPackage.ADDRESS__STREET:
368 setStreet((String)newValue);
369 return;
370 case TaxationPackage.ADDRESS__ZIP_CODE:
371 setZipCode((String)newValue);
372 return;
373 case TaxationPackage.ADDRESS__CITY:
374 setCity((String)newValue);
375 return;
376 case TaxationPackage.ADDRESS__ID2:
377 setId2((String)newValue);
378 return;
379 case TaxationPackage.ADDRESS__TAX_PAYER:
380 getTaxPayer().clear();
381 getTaxPayer().addAll((Collection<? extends Physical_Person>)newValue);
382 return;
383 }
384 super.eSet(featureID, newValue);
385 }
386
387 /**
388 * <!-- begin-user-doc -->
389 * <!-- end-user-doc -->
390 * @generated
391 */
392 @Override
393 public void eUnset(int featureID) {
394 switch (featureID) {
395 case TaxationPackage.ADDRESS__COUNTRY:
396 setCountry(COUNTRY_EDEFAULT);
397 return;
398 case TaxationPackage.ADDRESS__STREET:
399 setStreet(STREET_EDEFAULT);
400 return;
401 case TaxationPackage.ADDRESS__ZIP_CODE:
402 setZipCode(ZIP_CODE_EDEFAULT);
403 return;
404 case TaxationPackage.ADDRESS__CITY:
405 setCity(CITY_EDEFAULT);
406 return;
407 case TaxationPackage.ADDRESS__ID2:
408 setId2(ID2_EDEFAULT);
409 return;
410 case TaxationPackage.ADDRESS__TAX_PAYER:
411 getTaxPayer().clear();
412 return;
413 }
414 super.eUnset(featureID);
415 }
416
417 /**
418 * <!-- begin-user-doc -->
419 * <!-- end-user-doc -->
420 * @generated
421 */
422 @Override
423 public boolean eIsSet(int featureID) {
424 switch (featureID) {
425 case TaxationPackage.ADDRESS__COUNTRY:
426 return country != COUNTRY_EDEFAULT;
427 case TaxationPackage.ADDRESS__STREET:
428 return STREET_EDEFAULT == null ? street != null : !STREET_EDEFAULT.equals(street);
429 case TaxationPackage.ADDRESS__ZIP_CODE:
430 return ZIP_CODE_EDEFAULT == null ? zipCode != null : !ZIP_CODE_EDEFAULT.equals(zipCode);
431 case TaxationPackage.ADDRESS__CITY:
432 return CITY_EDEFAULT == null ? city != null : !CITY_EDEFAULT.equals(city);
433 case TaxationPackage.ADDRESS__ID2:
434 return ID2_EDEFAULT == null ? id2 != null : !ID2_EDEFAULT.equals(id2);
435 case TaxationPackage.ADDRESS__TAX_PAYER:
436 return taxPayer != null && !taxPayer.isEmpty();
437 }
438 return super.eIsSet(featureID);
439 }
440
441 /**
442 * <!-- begin-user-doc -->
443 * <!-- end-user-doc -->
444 * @generated
445 */
446 @Override
447 public String toString() {
448 if (eIsProxy()) return super.toString();
449
450 StringBuilder result = new StringBuilder(super.toString());
451 result.append(" (country: ");
452 result.append(country);
453 result.append(", street: ");
454 result.append(street);
455 result.append(", zipCode: ");
456 result.append(zipCode);
457 result.append(", city: ");
458 result.append(city);
459 result.append(", id2: ");
460 result.append(id2);
461 result.append(')');
462 return result.toString();
463 }
464
465} //AddressImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Agriculture_and_Forestry_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Agriculture_and_Forestry_IncomeImpl.java
new file mode 100644
index 00000000..15d08db7
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Agriculture_and_Forestry_IncomeImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Agriculture_and_Forestry_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Agriculture and Forestry Income</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Agriculture_and_Forestry_IncomeImpl extends Income_TypeImpl implements Agriculture_and_Forestry_Income {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Agriculture_and_Forestry_IncomeImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.AGRICULTURE_AND_FORESTRY_INCOME;
35 }
36
37} //Agriculture_and_Forestry_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIMImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIMImpl.java
new file mode 100644
index 00000000..111a8206
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIMImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.CIM;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>CIM</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CIMImpl extends Income_Tax_CreditImpl implements CIM {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CIMImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.CIM;
35 }
36
37} //CIMImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIPImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIPImpl.java
new file mode 100644
index 00000000..f49e1aa3
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CIPImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.CIP;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>CIP</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CIPImpl extends Income_Tax_CreditImpl implements CIP {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CIPImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.CIP;
35 }
36
37} //CIPImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CISImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CISImpl.java
new file mode 100644
index 00000000..48634ccc
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/CISImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.CIS;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>CIS</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class CISImpl extends Income_Tax_CreditImpl implements CIS {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected CISImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.CIS;
35 }
36
37} //CISImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Capital_and_Investments_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Capital_and_Investments_IncomeImpl.java
new file mode 100644
index 00000000..0ff20fed
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Capital_and_Investments_IncomeImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Capital_and_Investments_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Capital and Investments Income</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Capital_and_Investments_IncomeImpl extends Income_TypeImpl implements Capital_and_Investments_Income {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Capital_and_Investments_IncomeImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.CAPITAL_AND_INVESTMENTS_INCOME;
35 }
36
37} //Capital_and_Investments_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ConstantsImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ConstantsImpl.java
new file mode 100644
index 00000000..f73c31e6
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ConstantsImpl.java
@@ -0,0 +1,1509 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Constants;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>Constants</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD <em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>}</li>
24 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE <em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>}</li>
25 * <li>{@link Taxation.impl.ConstantsImpl#getMINIMUM_SALARY <em>MINIMUM SALARY</em>}</li>
26 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION <em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>}</li>
27 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS <em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>}</li>
28 * <li>{@link Taxation.impl.ConstantsImpl#getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS <em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>}</li>
29 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>}</li>
30 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>}</li>
31 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}</li>
32 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}</li>
33 * <li>{@link Taxation.impl.ConstantsImpl#getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION <em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}</li>
34 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIM_DAILY <em>FLAT RATE CIM DAILY</em>}</li>
35 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIM_MONTHLY <em>FLAT RATE CIM MONTHLY</em>}</li>
36 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIM_YEARLY <em>FLAT RATE CIM YEARLY</em>}</li>
37 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIP_DAILY <em>FLAT RATE CIP DAILY</em>}</li>
38 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIP_MONTHLY <em>FLAT RATE CIP MONTHLY</em>}</li>
39 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIP_YEARLY <em>FLAT RATE CIP YEARLY</em>}</li>
40 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIS_DAILY <em>FLAT RATE CIS DAILY</em>}</li>
41 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIS_MONTHLY <em>FLAT RATE CIS MONTHLY</em>}</li>
42 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_CIS_YEARLY <em>FLAT RATE CIS YEARLY</em>}</li>
43 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT <em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>}</li>
44 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS <em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>}</li>
45 * <li>{@link Taxation.impl.ConstantsImpl#getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}</li>
46 * <li>{@link Taxation.impl.ConstantsImpl#getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE <em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}</li>
47 * <li>{@link Taxation.impl.ConstantsImpl#getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>}</li>
48 * </ul>
49 *
50 * @generated
51 */
52public abstract class ConstantsImpl extends MinimalEObjectImpl.Container implements Constants {
53 /**
54 * The default value of the '{@link #getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD() <em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>}' attribute.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @see #getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD()
58 * @generated
59 * @ordered
60 */
61 protected static final double MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD_EDEFAULT = 3480.0;
62
63 /**
64 * The cached value of the '{@link #getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD() <em>MAXIMUM CE RATE FOR CHILD NOT BEING PART OF HOUSEHOLD</em>}' attribute.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @see #getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD()
68 * @generated
69 * @ordered
70 */
71 protected double maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD = MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD_EDEFAULT;
72
73 /**
74 * The default value of the '{@link #getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE() <em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>}' attribute.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE()
78 * @generated
79 * @ordered
80 */
81 protected static final double MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE_EDEFAULT = 3600.0;
82
83 /**
84 * The cached value of the '{@link #getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE() <em>MAXIMUM CE RATE FOR HOUSE CARE AND CHILD PART OF THE HOUSEHOLD CARE</em>}' attribute.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @see #getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE()
88 * @generated
89 * @ordered
90 */
91 protected double maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE = MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE_EDEFAULT;
92
93 /**
94 * The default value of the '{@link #getMINIMUM_SALARY() <em>MINIMUM SALARY</em>}' attribute.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #getMINIMUM_SALARY()
98 * @generated
99 * @ordered
100 */
101 protected static final double MINIMUM_SALARY_EDEFAULT = 1500.0;
102
103 /**
104 * The cached value of the '{@link #getMINIMUM_SALARY() <em>MINIMUM SALARY</em>}' attribute.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @see #getMINIMUM_SALARY()
108 * @generated
109 * @ordered
110 */
111 protected double minimuM_SALARY = MINIMUM_SALARY_EDEFAULT;
112
113 /**
114 * The default value of the '{@link #getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION() <em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>}' attribute.
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @see #getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION()
118 * @generated
119 * @ordered
120 */
121 protected static final double FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION_EDEFAULT = 4500.0;
122
123 /**
124 * The cached value of the '{@link #getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION() <em>FLAT RATE FOR EXTRA PROFESSIONAL DEDUCTION</em>}' attribute.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @see #getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION()
128 * @generated
129 * @ordered
130 */
131 protected double flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION = FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION_EDEFAULT;
132
133 /**
134 * The default value of the '{@link #getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS() <em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>}' attribute.
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @see #getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS()
138 * @generated
139 * @ordered
140 */
141 protected static final double MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS_EDEFAULT = 20.0;
142
143 /**
144 * The cached value of the '{@link #getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS() <em>MAXIMUM DEDUCTIBLE PERCENTAGE FOR DONATIONS</em>}' attribute.
145 * <!-- begin-user-doc -->
146 * <!-- end-user-doc -->
147 * @see #getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS()
148 * @generated
149 * @ordered
150 */
151 protected double maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS = MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS_EDEFAULT;
152
153 /**
154 * The default value of the '{@link #getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS() <em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>}' attribute.
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @see #getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS()
158 * @generated
159 * @ordered
160 */
161 protected static final double MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS_EDEFAULT = 120.0;
162
163 /**
164 * The cached value of the '{@link #getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS() <em>MINIMUM DEDUCTIBLE AMOUNT FOR DONATIONS</em>}' attribute.
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @see #getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS()
168 * @generated
169 * @ordered
170 */
171 protected double minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS = MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS_EDEFAULT;
172
173 /**
174 * The default value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>}' attribute.
175 * <!-- begin-user-doc -->
176 * <!-- end-user-doc -->
177 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC()
178 * @generated
179 * @ordered
180 */
181 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC_EDEFAULT = 0.0;
182
183 /**
184 * The cached value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANC</em>}' attribute.
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC()
188 * @generated
189 * @ordered
190 */
191 protected double maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC = MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC_EDEFAULT;
192
193 /**
194 * The default value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>}' attribute.
195 * <!-- begin-user-doc -->
196 * <!-- end-user-doc -->
197 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE()
198 * @generated
199 * @ordered
200 */
201 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE_EDEFAULT = 24000.0;
202
203 /**
204 * The cached value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ALIMONY EXPENSE</em>}' attribute.
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE()
208 * @generated
209 * @ordered
210 */
211 protected double maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE = MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE_EDEFAULT;
212
213 /**
214 * The default value of the '{@link #getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() <em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @see #getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
218 * @generated
219 * @ordered
220 */
221 protected static final double MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT = 99.0;
222
223 /**
224 * The cached value of the '{@link #getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() <em>MAXIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @see #getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
228 * @generated
229 * @ordered
230 */
231 protected double maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT;
232
233 /**
234 * The default value of the '{@link #getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() <em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @see #getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
238 * @generated
239 * @ordered
240 */
241 protected static final double MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT = 30.0;
242
243 /**
244 * The cached value of the '{@link #getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() <em>MAXIMAL FLAT DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
245 * <!-- begin-user-doc -->
246 * <!-- end-user-doc -->
247 * @see #getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
248 * @generated
249 * @ordered
250 */
251 protected double maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT;
252
253 /**
254 * The default value of the '{@link #getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() <em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
255 * <!-- begin-user-doc -->
256 * <!-- end-user-doc -->
257 * @see #getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
258 * @generated
259 * @ordered
260 */
261 protected static final double MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT = 4.0;
262
263 /**
264 * The cached value of the '{@link #getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() <em>MINIMAL DISTANCE FOR TRAVEL EXPENSE DEDUCTION</em>}' attribute.
265 * <!-- begin-user-doc -->
266 * <!-- end-user-doc -->
267 * @see #getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION()
268 * @generated
269 * @ordered
270 */
271 protected double minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT;
272
273 /**
274 * The default value of the '{@link #getFLAT_RATE_CIM_DAILY() <em>FLAT RATE CIM DAILY</em>}' attribute.
275 * <!-- begin-user-doc -->
276 * <!-- end-user-doc -->
277 * @see #getFLAT_RATE_CIM_DAILY()
278 * @generated
279 * @ordered
280 */
281 protected static final double FLAT_RATE_CIM_DAILY_EDEFAULT = 2.0;
282
283 /**
284 * The cached value of the '{@link #getFLAT_RATE_CIM_DAILY() <em>FLAT RATE CIM DAILY</em>}' attribute.
285 * <!-- begin-user-doc -->
286 * <!-- end-user-doc -->
287 * @see #getFLAT_RATE_CIM_DAILY()
288 * @generated
289 * @ordered
290 */
291 protected double flaT_RATE_CIM_DAILY = FLAT_RATE_CIM_DAILY_EDEFAULT;
292
293 /**
294 * The default value of the '{@link #getFLAT_RATE_CIM_MONTHLY() <em>FLAT RATE CIM MONTHLY</em>}' attribute.
295 * <!-- begin-user-doc -->
296 * <!-- end-user-doc -->
297 * @see #getFLAT_RATE_CIM_MONTHLY()
298 * @generated
299 * @ordered
300 */
301 protected static final double FLAT_RATE_CIM_MONTHLY_EDEFAULT = 62.0;
302
303 /**
304 * The cached value of the '{@link #getFLAT_RATE_CIM_MONTHLY() <em>FLAT RATE CIM MONTHLY</em>}' attribute.
305 * <!-- begin-user-doc -->
306 * <!-- end-user-doc -->
307 * @see #getFLAT_RATE_CIM_MONTHLY()
308 * @generated
309 * @ordered
310 */
311 protected double flaT_RATE_CIM_MONTHLY = FLAT_RATE_CIM_MONTHLY_EDEFAULT;
312
313 /**
314 * The default value of the '{@link #getFLAT_RATE_CIM_YEARLY() <em>FLAT RATE CIM YEARLY</em>}' attribute.
315 * <!-- begin-user-doc -->
316 * <!-- end-user-doc -->
317 * @see #getFLAT_RATE_CIM_YEARLY()
318 * @generated
319 * @ordered
320 */
321 protected static final double FLAT_RATE_CIM_YEARLY_EDEFAULT = 750.0;
322
323 /**
324 * The cached value of the '{@link #getFLAT_RATE_CIM_YEARLY() <em>FLAT RATE CIM YEARLY</em>}' attribute.
325 * <!-- begin-user-doc -->
326 * <!-- end-user-doc -->
327 * @see #getFLAT_RATE_CIM_YEARLY()
328 * @generated
329 * @ordered
330 */
331 protected double flaT_RATE_CIM_YEARLY = FLAT_RATE_CIM_YEARLY_EDEFAULT;
332
333 /**
334 * The default value of the '{@link #getFLAT_RATE_CIP_DAILY() <em>FLAT RATE CIP DAILY</em>}' attribute.
335 * <!-- begin-user-doc -->
336 * <!-- end-user-doc -->
337 * @see #getFLAT_RATE_CIP_DAILY()
338 * @generated
339 * @ordered
340 */
341 protected static final double FLAT_RATE_CIP_DAILY_EDEFAULT = 1.0;
342
343 /**
344 * The cached value of the '{@link #getFLAT_RATE_CIP_DAILY() <em>FLAT RATE CIP DAILY</em>}' attribute.
345 * <!-- begin-user-doc -->
346 * <!-- end-user-doc -->
347 * @see #getFLAT_RATE_CIP_DAILY()
348 * @generated
349 * @ordered
350 */
351 protected double flaT_RATE_CIP_DAILY = FLAT_RATE_CIP_DAILY_EDEFAULT;
352
353 /**
354 * The default value of the '{@link #getFLAT_RATE_CIP_MONTHLY() <em>FLAT RATE CIP MONTHLY</em>}' attribute.
355 * <!-- begin-user-doc -->
356 * <!-- end-user-doc -->
357 * @see #getFLAT_RATE_CIP_MONTHLY()
358 * @generated
359 * @ordered
360 */
361 protected static final double FLAT_RATE_CIP_MONTHLY_EDEFAULT = 25.0;
362
363 /**
364 * The cached value of the '{@link #getFLAT_RATE_CIP_MONTHLY() <em>FLAT RATE CIP MONTHLY</em>}' attribute.
365 * <!-- begin-user-doc -->
366 * <!-- end-user-doc -->
367 * @see #getFLAT_RATE_CIP_MONTHLY()
368 * @generated
369 * @ordered
370 */
371 protected double flaT_RATE_CIP_MONTHLY = FLAT_RATE_CIP_MONTHLY_EDEFAULT;
372
373 /**
374 * The default value of the '{@link #getFLAT_RATE_CIP_YEARLY() <em>FLAT RATE CIP YEARLY</em>}' attribute.
375 * <!-- begin-user-doc -->
376 * <!-- end-user-doc -->
377 * @see #getFLAT_RATE_CIP_YEARLY()
378 * @generated
379 * @ordered
380 */
381 protected static final double FLAT_RATE_CIP_YEARLY_EDEFAULT = 30.0;
382
383 /**
384 * The cached value of the '{@link #getFLAT_RATE_CIP_YEARLY() <em>FLAT RATE CIP YEARLY</em>}' attribute.
385 * <!-- begin-user-doc -->
386 * <!-- end-user-doc -->
387 * @see #getFLAT_RATE_CIP_YEARLY()
388 * @generated
389 * @ordered
390 */
391 protected double flaT_RATE_CIP_YEARLY = FLAT_RATE_CIP_YEARLY_EDEFAULT;
392
393 /**
394 * The default value of the '{@link #getFLAT_RATE_CIS_DAILY() <em>FLAT RATE CIS DAILY</em>}' attribute.
395 * <!-- begin-user-doc -->
396 * <!-- end-user-doc -->
397 * @see #getFLAT_RATE_CIS_DAILY()
398 * @generated
399 * @ordered
400 */
401 protected static final double FLAT_RATE_CIS_DAILY_EDEFAULT = 1.0;
402
403 /**
404 * The cached value of the '{@link #getFLAT_RATE_CIS_DAILY() <em>FLAT RATE CIS DAILY</em>}' attribute.
405 * <!-- begin-user-doc -->
406 * <!-- end-user-doc -->
407 * @see #getFLAT_RATE_CIS_DAILY()
408 * @generated
409 * @ordered
410 */
411 protected double flaT_RATE_CIS_DAILY = FLAT_RATE_CIS_DAILY_EDEFAULT;
412
413 /**
414 * The default value of the '{@link #getFLAT_RATE_CIS_MONTHLY() <em>FLAT RATE CIS MONTHLY</em>}' attribute.
415 * <!-- begin-user-doc -->
416 * <!-- end-user-doc -->
417 * @see #getFLAT_RATE_CIS_MONTHLY()
418 * @generated
419 * @ordered
420 */
421 protected static final double FLAT_RATE_CIS_MONTHLY_EDEFAULT = 25.0;
422
423 /**
424 * The cached value of the '{@link #getFLAT_RATE_CIS_MONTHLY() <em>FLAT RATE CIS MONTHLY</em>}' attribute.
425 * <!-- begin-user-doc -->
426 * <!-- end-user-doc -->
427 * @see #getFLAT_RATE_CIS_MONTHLY()
428 * @generated
429 * @ordered
430 */
431 protected double flaT_RATE_CIS_MONTHLY = FLAT_RATE_CIS_MONTHLY_EDEFAULT;
432
433 /**
434 * The default value of the '{@link #getFLAT_RATE_CIS_YEARLY() <em>FLAT RATE CIS YEARLY</em>}' attribute.
435 * <!-- begin-user-doc -->
436 * <!-- end-user-doc -->
437 * @see #getFLAT_RATE_CIS_YEARLY()
438 * @generated
439 * @ordered
440 */
441 protected static final double FLAT_RATE_CIS_YEARLY_EDEFAULT = 300.0;
442
443 /**
444 * The cached value of the '{@link #getFLAT_RATE_CIS_YEARLY() <em>FLAT RATE CIS YEARLY</em>}' attribute.
445 * <!-- begin-user-doc -->
446 * <!-- end-user-doc -->
447 * @see #getFLAT_RATE_CIS_YEARLY()
448 * @generated
449 * @ordered
450 */
451 protected double flaT_RATE_CIS_YEARLY = FLAT_RATE_CIS_YEARLY_EDEFAULT;
452
453 /**
454 * The default value of the '{@link #getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT() <em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>}' attribute.
455 * <!-- begin-user-doc -->
456 * <!-- end-user-doc -->
457 * @see #getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT()
458 * @generated
459 * @ordered
460 */
461 protected static final double FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT_EDEFAULT = 99.0;
462
463 /**
464 * The cached value of the '{@link #getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT() <em>FLAT RATE FOR TRAVEL EXPENSE PER UNIT</em>}' attribute.
465 * <!-- begin-user-doc -->
466 * <!-- end-user-doc -->
467 * @see #getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT()
468 * @generated
469 * @ordered
470 */
471 protected double flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT = FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT_EDEFAULT;
472
473 /**
474 * The default value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>}' attribute.
475 * <!-- begin-user-doc -->
476 * <!-- end-user-doc -->
477 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS()
478 * @generated
479 * @ordered
480 */
481 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS_EDEFAULT = 0.0;
482
483 /**
484 * The cached value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR DS</em>}' attribute.
485 * <!-- begin-user-doc -->
486 * <!-- end-user-doc -->
487 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS()
488 * @generated
489 * @ordered
490 */
491 protected double maximuM_DEDUCTIBLE_AMOUNT_FOR_DS = MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS_EDEFAULT;
492
493 /**
494 * The default value of the '{@link #getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() <em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}' attribute.
495 * <!-- begin-user-doc -->
496 * <!-- end-user-doc -->
497 * @see #getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
498 * @generated
499 * @ordered
500 */
501 protected static final double FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT = 0.0;
502
503 /**
504 * The cached value of the '{@link #getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() <em>FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}' attribute.
505 * <!-- begin-user-doc -->
506 * <!-- end-user-doc -->
507 * @see #getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
508 * @generated
509 * @ordered
510 */
511 protected double flaT_RATE_FOR_MISCELLANEOUS_EXPENSE = FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT;
512
513 /**
514 * The default value of the '{@link #getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() <em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}' attribute.
515 * <!-- begin-user-doc -->
516 * <!-- end-user-doc -->
517 * @see #getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
518 * @generated
519 * @ordered
520 */
521 protected static final double DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT = 0.0;
522
523 /**
524 * The cached value of the '{@link #getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() <em>DISABILITY FLAT RATE FOR MISCELLANEOUS EXPENSE</em>}' attribute.
525 * <!-- begin-user-doc -->
526 * <!-- end-user-doc -->
527 * @see #getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE()
528 * @generated
529 * @ordered
530 */
531 protected double disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT;
532
533 /**
534 * The default value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>}' attribute.
535 * <!-- begin-user-doc -->
536 * <!-- end-user-doc -->
537 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE()
538 * @generated
539 * @ordered
540 */
541 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE_EDEFAULT = 0.0;
542
543 /**
544 * The cached value of the '{@link #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE() <em>MAXIMUM DEDUCTIBLE AMOUNT FOR ADDITIONAL PENSION AND INSURANCE</em>}' attribute.
545 * <!-- begin-user-doc -->
546 * <!-- end-user-doc -->
547 * @see #getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE()
548 * @generated
549 * @ordered
550 */
551 protected double maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE = MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE_EDEFAULT;
552
553 /**
554 * <!-- begin-user-doc -->
555 * <!-- end-user-doc -->
556 * @generated
557 */
558 protected ConstantsImpl() {
559 super();
560 }
561
562 /**
563 * <!-- begin-user-doc -->
564 * <!-- end-user-doc -->
565 * @generated
566 */
567 @Override
568 protected EClass eStaticClass() {
569 return TaxationPackage.Literals.CONSTANTS;
570 }
571
572 /**
573 * <!-- begin-user-doc -->
574 * <!-- end-user-doc -->
575 * @generated
576 */
577 @Override
578 public double getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD() {
579 return maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD;
580 }
581
582 /**
583 * <!-- begin-user-doc -->
584 * <!-- end-user-doc -->
585 * @generated
586 */
587 @Override
588 public void setMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD(double newMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD) {
589 double oldMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD = maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD;
590 maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD = newMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD;
591 if (eNotificationRequired())
592 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD, oldMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD, maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD));
593 }
594
595 /**
596 * <!-- begin-user-doc -->
597 * <!-- end-user-doc -->
598 * @generated
599 */
600 @Override
601 public double getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE() {
602 return maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE;
603 }
604
605 /**
606 * <!-- begin-user-doc -->
607 * <!-- end-user-doc -->
608 * @generated
609 */
610 @Override
611 public void setMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE(double newMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE) {
612 double oldMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE = maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE;
613 maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE = newMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE;
614 if (eNotificationRequired())
615 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE, oldMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE, maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE));
616 }
617
618 /**
619 * <!-- begin-user-doc -->
620 * <!-- end-user-doc -->
621 * @generated
622 */
623 @Override
624 public double getMINIMUM_SALARY() {
625 return minimuM_SALARY;
626 }
627
628 /**
629 * <!-- begin-user-doc -->
630 * <!-- end-user-doc -->
631 * @generated
632 */
633 @Override
634 public void setMINIMUM_SALARY(double newMINIMUM_SALARY) {
635 double oldMINIMUM_SALARY = minimuM_SALARY;
636 minimuM_SALARY = newMINIMUM_SALARY;
637 if (eNotificationRequired())
638 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MINIMUM_SALARY, oldMINIMUM_SALARY, minimuM_SALARY));
639 }
640
641 /**
642 * <!-- begin-user-doc -->
643 * <!-- end-user-doc -->
644 * @generated
645 */
646 @Override
647 public double getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION() {
648 return flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION;
649 }
650
651 /**
652 * <!-- begin-user-doc -->
653 * <!-- end-user-doc -->
654 * @generated
655 */
656 @Override
657 public void setFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION(double newFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION) {
658 double oldFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION = flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION;
659 flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION = newFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION;
660 if (eNotificationRequired())
661 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION, oldFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION, flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION));
662 }
663
664 /**
665 * <!-- begin-user-doc -->
666 * <!-- end-user-doc -->
667 * @generated
668 */
669 @Override
670 public double getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS() {
671 return maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS;
672 }
673
674 /**
675 * <!-- begin-user-doc -->
676 * <!-- end-user-doc -->
677 * @generated
678 */
679 @Override
680 public void setMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS(double newMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS) {
681 double oldMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS = maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS;
682 maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS = newMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS;
683 if (eNotificationRequired())
684 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS, oldMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS, maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS));
685 }
686
687 /**
688 * <!-- begin-user-doc -->
689 * <!-- end-user-doc -->
690 * @generated
691 */
692 @Override
693 public double getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS() {
694 return minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS;
695 }
696
697 /**
698 * <!-- begin-user-doc -->
699 * <!-- end-user-doc -->
700 * @generated
701 */
702 @Override
703 public void setMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS(double newMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS) {
704 double oldMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS = minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS;
705 minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS = newMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS;
706 if (eNotificationRequired())
707 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS, oldMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS, minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS));
708 }
709
710 /**
711 * <!-- begin-user-doc -->
712 * <!-- end-user-doc -->
713 * @generated
714 */
715 @Override
716 public double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC() {
717 return maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC;
718 }
719
720 /**
721 * <!-- begin-user-doc -->
722 * <!-- end-user-doc -->
723 * @generated
724 */
725 @Override
726 public void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC(double newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC) {
727 double oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC = maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC;
728 maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC = newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC;
729 if (eNotificationRequired())
730 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC, oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC, maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC));
731 }
732
733 /**
734 * <!-- begin-user-doc -->
735 * <!-- end-user-doc -->
736 * @generated
737 */
738 @Override
739 public double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE() {
740 return maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE;
741 }
742
743 /**
744 * <!-- begin-user-doc -->
745 * <!-- end-user-doc -->
746 * @generated
747 */
748 @Override
749 public void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE(double newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE) {
750 double oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE = maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE;
751 maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE = newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE;
752 if (eNotificationRequired())
753 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE, oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE, maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE));
754 }
755
756 /**
757 * <!-- begin-user-doc -->
758 * <!-- end-user-doc -->
759 * @generated
760 */
761 @Override
762 public double getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() {
763 return maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
764 }
765
766 /**
767 * <!-- begin-user-doc -->
768 * <!-- end-user-doc -->
769 * @generated
770 */
771 @Override
772 public void setMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double newMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION) {
773 double oldMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
774 maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = newMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
775 if (eNotificationRequired())
776 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION, oldMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION, maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION));
777 }
778
779 /**
780 * <!-- begin-user-doc -->
781 * <!-- end-user-doc -->
782 * @generated
783 */
784 @Override
785 public double getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() {
786 return maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
787 }
788
789 /**
790 * <!-- begin-user-doc -->
791 * <!-- end-user-doc -->
792 * @generated
793 */
794 @Override
795 public void setMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double newMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION) {
796 double oldMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
797 maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = newMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
798 if (eNotificationRequired())
799 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION, oldMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION, maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION));
800 }
801
802 /**
803 * <!-- begin-user-doc -->
804 * <!-- end-user-doc -->
805 * @generated
806 */
807 @Override
808 public double getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() {
809 return minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
810 }
811
812 /**
813 * <!-- begin-user-doc -->
814 * <!-- end-user-doc -->
815 * @generated
816 */
817 @Override
818 public void setMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(double newMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION) {
819 double oldMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
820 minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION = newMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION;
821 if (eNotificationRequired())
822 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION, oldMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION, minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION));
823 }
824
825 /**
826 * <!-- begin-user-doc -->
827 * <!-- end-user-doc -->
828 * @generated
829 */
830 @Override
831 public double getFLAT_RATE_CIM_DAILY() {
832 return flaT_RATE_CIM_DAILY;
833 }
834
835 /**
836 * <!-- begin-user-doc -->
837 * <!-- end-user-doc -->
838 * @generated
839 */
840 @Override
841 public void setFLAT_RATE_CIM_DAILY(double newFLAT_RATE_CIM_DAILY) {
842 double oldFLAT_RATE_CIM_DAILY = flaT_RATE_CIM_DAILY;
843 flaT_RATE_CIM_DAILY = newFLAT_RATE_CIM_DAILY;
844 if (eNotificationRequired())
845 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIM_DAILY, oldFLAT_RATE_CIM_DAILY, flaT_RATE_CIM_DAILY));
846 }
847
848 /**
849 * <!-- begin-user-doc -->
850 * <!-- end-user-doc -->
851 * @generated
852 */
853 @Override
854 public double getFLAT_RATE_CIM_MONTHLY() {
855 return flaT_RATE_CIM_MONTHLY;
856 }
857
858 /**
859 * <!-- begin-user-doc -->
860 * <!-- end-user-doc -->
861 * @generated
862 */
863 @Override
864 public void setFLAT_RATE_CIM_MONTHLY(double newFLAT_RATE_CIM_MONTHLY) {
865 double oldFLAT_RATE_CIM_MONTHLY = flaT_RATE_CIM_MONTHLY;
866 flaT_RATE_CIM_MONTHLY = newFLAT_RATE_CIM_MONTHLY;
867 if (eNotificationRequired())
868 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIM_MONTHLY, oldFLAT_RATE_CIM_MONTHLY, flaT_RATE_CIM_MONTHLY));
869 }
870
871 /**
872 * <!-- begin-user-doc -->
873 * <!-- end-user-doc -->
874 * @generated
875 */
876 @Override
877 public double getFLAT_RATE_CIM_YEARLY() {
878 return flaT_RATE_CIM_YEARLY;
879 }
880
881 /**
882 * <!-- begin-user-doc -->
883 * <!-- end-user-doc -->
884 * @generated
885 */
886 @Override
887 public void setFLAT_RATE_CIM_YEARLY(double newFLAT_RATE_CIM_YEARLY) {
888 double oldFLAT_RATE_CIM_YEARLY = flaT_RATE_CIM_YEARLY;
889 flaT_RATE_CIM_YEARLY = newFLAT_RATE_CIM_YEARLY;
890 if (eNotificationRequired())
891 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIM_YEARLY, oldFLAT_RATE_CIM_YEARLY, flaT_RATE_CIM_YEARLY));
892 }
893
894 /**
895 * <!-- begin-user-doc -->
896 * <!-- end-user-doc -->
897 * @generated
898 */
899 @Override
900 public double getFLAT_RATE_CIP_DAILY() {
901 return flaT_RATE_CIP_DAILY;
902 }
903
904 /**
905 * <!-- begin-user-doc -->
906 * <!-- end-user-doc -->
907 * @generated
908 */
909 @Override
910 public void setFLAT_RATE_CIP_DAILY(double newFLAT_RATE_CIP_DAILY) {
911 double oldFLAT_RATE_CIP_DAILY = flaT_RATE_CIP_DAILY;
912 flaT_RATE_CIP_DAILY = newFLAT_RATE_CIP_DAILY;
913 if (eNotificationRequired())
914 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIP_DAILY, oldFLAT_RATE_CIP_DAILY, flaT_RATE_CIP_DAILY));
915 }
916
917 /**
918 * <!-- begin-user-doc -->
919 * <!-- end-user-doc -->
920 * @generated
921 */
922 @Override
923 public double getFLAT_RATE_CIP_MONTHLY() {
924 return flaT_RATE_CIP_MONTHLY;
925 }
926
927 /**
928 * <!-- begin-user-doc -->
929 * <!-- end-user-doc -->
930 * @generated
931 */
932 @Override
933 public void setFLAT_RATE_CIP_MONTHLY(double newFLAT_RATE_CIP_MONTHLY) {
934 double oldFLAT_RATE_CIP_MONTHLY = flaT_RATE_CIP_MONTHLY;
935 flaT_RATE_CIP_MONTHLY = newFLAT_RATE_CIP_MONTHLY;
936 if (eNotificationRequired())
937 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIP_MONTHLY, oldFLAT_RATE_CIP_MONTHLY, flaT_RATE_CIP_MONTHLY));
938 }
939
940 /**
941 * <!-- begin-user-doc -->
942 * <!-- end-user-doc -->
943 * @generated
944 */
945 @Override
946 public double getFLAT_RATE_CIP_YEARLY() {
947 return flaT_RATE_CIP_YEARLY;
948 }
949
950 /**
951 * <!-- begin-user-doc -->
952 * <!-- end-user-doc -->
953 * @generated
954 */
955 @Override
956 public void setFLAT_RATE_CIP_YEARLY(double newFLAT_RATE_CIP_YEARLY) {
957 double oldFLAT_RATE_CIP_YEARLY = flaT_RATE_CIP_YEARLY;
958 flaT_RATE_CIP_YEARLY = newFLAT_RATE_CIP_YEARLY;
959 if (eNotificationRequired())
960 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIP_YEARLY, oldFLAT_RATE_CIP_YEARLY, flaT_RATE_CIP_YEARLY));
961 }
962
963 /**
964 * <!-- begin-user-doc -->
965 * <!-- end-user-doc -->
966 * @generated
967 */
968 @Override
969 public double getFLAT_RATE_CIS_DAILY() {
970 return flaT_RATE_CIS_DAILY;
971 }
972
973 /**
974 * <!-- begin-user-doc -->
975 * <!-- end-user-doc -->
976 * @generated
977 */
978 @Override
979 public void setFLAT_RATE_CIS_DAILY(double newFLAT_RATE_CIS_DAILY) {
980 double oldFLAT_RATE_CIS_DAILY = flaT_RATE_CIS_DAILY;
981 flaT_RATE_CIS_DAILY = newFLAT_RATE_CIS_DAILY;
982 if (eNotificationRequired())
983 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIS_DAILY, oldFLAT_RATE_CIS_DAILY, flaT_RATE_CIS_DAILY));
984 }
985
986 /**
987 * <!-- begin-user-doc -->
988 * <!-- end-user-doc -->
989 * @generated
990 */
991 @Override
992 public double getFLAT_RATE_CIS_MONTHLY() {
993 return flaT_RATE_CIS_MONTHLY;
994 }
995
996 /**
997 * <!-- begin-user-doc -->
998 * <!-- end-user-doc -->
999 * @generated
1000 */
1001 @Override
1002 public void setFLAT_RATE_CIS_MONTHLY(double newFLAT_RATE_CIS_MONTHLY) {
1003 double oldFLAT_RATE_CIS_MONTHLY = flaT_RATE_CIS_MONTHLY;
1004 flaT_RATE_CIS_MONTHLY = newFLAT_RATE_CIS_MONTHLY;
1005 if (eNotificationRequired())
1006 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIS_MONTHLY, oldFLAT_RATE_CIS_MONTHLY, flaT_RATE_CIS_MONTHLY));
1007 }
1008
1009 /**
1010 * <!-- begin-user-doc -->
1011 * <!-- end-user-doc -->
1012 * @generated
1013 */
1014 @Override
1015 public double getFLAT_RATE_CIS_YEARLY() {
1016 return flaT_RATE_CIS_YEARLY;
1017 }
1018
1019 /**
1020 * <!-- begin-user-doc -->
1021 * <!-- end-user-doc -->
1022 * @generated
1023 */
1024 @Override
1025 public void setFLAT_RATE_CIS_YEARLY(double newFLAT_RATE_CIS_YEARLY) {
1026 double oldFLAT_RATE_CIS_YEARLY = flaT_RATE_CIS_YEARLY;
1027 flaT_RATE_CIS_YEARLY = newFLAT_RATE_CIS_YEARLY;
1028 if (eNotificationRequired())
1029 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_CIS_YEARLY, oldFLAT_RATE_CIS_YEARLY, flaT_RATE_CIS_YEARLY));
1030 }
1031
1032 /**
1033 * <!-- begin-user-doc -->
1034 * <!-- end-user-doc -->
1035 * @generated
1036 */
1037 @Override
1038 public double getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT() {
1039 return flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT;
1040 }
1041
1042 /**
1043 * <!-- begin-user-doc -->
1044 * <!-- end-user-doc -->
1045 * @generated
1046 */
1047 @Override
1048 public void setFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT(double newFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT) {
1049 double oldFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT = flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT;
1050 flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT = newFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT;
1051 if (eNotificationRequired())
1052 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT, oldFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT, flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT));
1053 }
1054
1055 /**
1056 * <!-- begin-user-doc -->
1057 * <!-- end-user-doc -->
1058 * @generated
1059 */
1060 @Override
1061 public double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS() {
1062 return maximuM_DEDUCTIBLE_AMOUNT_FOR_DS;
1063 }
1064
1065 /**
1066 * <!-- begin-user-doc -->
1067 * <!-- end-user-doc -->
1068 * @generated
1069 */
1070 @Override
1071 public void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS(double newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS) {
1072 double oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS = maximuM_DEDUCTIBLE_AMOUNT_FOR_DS;
1073 maximuM_DEDUCTIBLE_AMOUNT_FOR_DS = newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS;
1074 if (eNotificationRequired())
1075 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS, oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS, maximuM_DEDUCTIBLE_AMOUNT_FOR_DS));
1076 }
1077
1078 /**
1079 * <!-- begin-user-doc -->
1080 * <!-- end-user-doc -->
1081 * @generated
1082 */
1083 @Override
1084 public double getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() {
1085 return flaT_RATE_FOR_MISCELLANEOUS_EXPENSE;
1086 }
1087
1088 /**
1089 * <!-- begin-user-doc -->
1090 * <!-- end-user-doc -->
1091 * @generated
1092 */
1093 @Override
1094 public void setFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(double newFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE) {
1095 double oldFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = flaT_RATE_FOR_MISCELLANEOUS_EXPENSE;
1096 flaT_RATE_FOR_MISCELLANEOUS_EXPENSE = newFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE;
1097 if (eNotificationRequired())
1098 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE, oldFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE, flaT_RATE_FOR_MISCELLANEOUS_EXPENSE));
1099 }
1100
1101 /**
1102 * <!-- begin-user-doc -->
1103 * <!-- end-user-doc -->
1104 * @generated
1105 */
1106 @Override
1107 public double getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() {
1108 return disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE;
1109 }
1110
1111 /**
1112 * <!-- begin-user-doc -->
1113 * <!-- end-user-doc -->
1114 * @generated
1115 */
1116 @Override
1117 public void setDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(double newDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE) {
1118 double oldDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE;
1119 disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE = newDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE;
1120 if (eNotificationRequired())
1121 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE, oldDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE, disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE));
1122 }
1123
1124 /**
1125 * <!-- begin-user-doc -->
1126 * <!-- end-user-doc -->
1127 * @generated
1128 */
1129 @Override
1130 public double getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE() {
1131 return maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE;
1132 }
1133
1134 /**
1135 * <!-- begin-user-doc -->
1136 * <!-- end-user-doc -->
1137 * @generated
1138 */
1139 @Override
1140 public void setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE(double newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE) {
1141 double oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE = maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE;
1142 maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE = newMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE;
1143 if (eNotificationRequired())
1144 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE, oldMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE, maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE));
1145 }
1146
1147 /**
1148 * <!-- begin-user-doc -->
1149 * <!-- end-user-doc -->
1150 * @generated
1151 */
1152 @Override
1153 public Object eGet(int featureID, boolean resolve, boolean coreType) {
1154 switch (featureID) {
1155 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD:
1156 return getMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD();
1157 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE:
1158 return getMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE();
1159 case TaxationPackage.CONSTANTS__MINIMUM_SALARY:
1160 return getMINIMUM_SALARY();
1161 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION:
1162 return getFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION();
1163 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS:
1164 return getMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS();
1165 case TaxationPackage.CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS:
1166 return getMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS();
1167 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC:
1168 return getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC();
1169 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE:
1170 return getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE();
1171 case TaxationPackage.CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1172 return getMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
1173 case TaxationPackage.CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1174 return getMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
1175 case TaxationPackage.CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1176 return getMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION();
1177 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_DAILY:
1178 return getFLAT_RATE_CIM_DAILY();
1179 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_MONTHLY:
1180 return getFLAT_RATE_CIM_MONTHLY();
1181 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_YEARLY:
1182 return getFLAT_RATE_CIM_YEARLY();
1183 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_DAILY:
1184 return getFLAT_RATE_CIP_DAILY();
1185 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_MONTHLY:
1186 return getFLAT_RATE_CIP_MONTHLY();
1187 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_YEARLY:
1188 return getFLAT_RATE_CIP_YEARLY();
1189 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_DAILY:
1190 return getFLAT_RATE_CIS_DAILY();
1191 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_MONTHLY:
1192 return getFLAT_RATE_CIS_MONTHLY();
1193 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_YEARLY:
1194 return getFLAT_RATE_CIS_YEARLY();
1195 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT:
1196 return getFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT();
1197 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS:
1198 return getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS();
1199 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1200 return getFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
1201 case TaxationPackage.CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1202 return getDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE();
1203 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE:
1204 return getMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE();
1205 }
1206 return super.eGet(featureID, resolve, coreType);
1207 }
1208
1209 /**
1210 * <!-- begin-user-doc -->
1211 * <!-- end-user-doc -->
1212 * @generated
1213 */
1214 @Override
1215 public void eSet(int featureID, Object newValue) {
1216 switch (featureID) {
1217 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD:
1218 setMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD((Double)newValue);
1219 return;
1220 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE:
1221 setMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE((Double)newValue);
1222 return;
1223 case TaxationPackage.CONSTANTS__MINIMUM_SALARY:
1224 setMINIMUM_SALARY((Double)newValue);
1225 return;
1226 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION:
1227 setFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION((Double)newValue);
1228 return;
1229 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS:
1230 setMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS((Double)newValue);
1231 return;
1232 case TaxationPackage.CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS:
1233 setMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS((Double)newValue);
1234 return;
1235 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC:
1236 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC((Double)newValue);
1237 return;
1238 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE:
1239 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE((Double)newValue);
1240 return;
1241 case TaxationPackage.CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1242 setMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION((Double)newValue);
1243 return;
1244 case TaxationPackage.CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1245 setMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION((Double)newValue);
1246 return;
1247 case TaxationPackage.CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1248 setMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION((Double)newValue);
1249 return;
1250 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_DAILY:
1251 setFLAT_RATE_CIM_DAILY((Double)newValue);
1252 return;
1253 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_MONTHLY:
1254 setFLAT_RATE_CIM_MONTHLY((Double)newValue);
1255 return;
1256 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_YEARLY:
1257 setFLAT_RATE_CIM_YEARLY((Double)newValue);
1258 return;
1259 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_DAILY:
1260 setFLAT_RATE_CIP_DAILY((Double)newValue);
1261 return;
1262 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_MONTHLY:
1263 setFLAT_RATE_CIP_MONTHLY((Double)newValue);
1264 return;
1265 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_YEARLY:
1266 setFLAT_RATE_CIP_YEARLY((Double)newValue);
1267 return;
1268 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_DAILY:
1269 setFLAT_RATE_CIS_DAILY((Double)newValue);
1270 return;
1271 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_MONTHLY:
1272 setFLAT_RATE_CIS_MONTHLY((Double)newValue);
1273 return;
1274 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_YEARLY:
1275 setFLAT_RATE_CIS_YEARLY((Double)newValue);
1276 return;
1277 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT:
1278 setFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT((Double)newValue);
1279 return;
1280 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS:
1281 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS((Double)newValue);
1282 return;
1283 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1284 setFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE((Double)newValue);
1285 return;
1286 case TaxationPackage.CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1287 setDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE((Double)newValue);
1288 return;
1289 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE:
1290 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE((Double)newValue);
1291 return;
1292 }
1293 super.eSet(featureID, newValue);
1294 }
1295
1296 /**
1297 * <!-- begin-user-doc -->
1298 * <!-- end-user-doc -->
1299 * @generated
1300 */
1301 @Override
1302 public void eUnset(int featureID) {
1303 switch (featureID) {
1304 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD:
1305 setMAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD(MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD_EDEFAULT);
1306 return;
1307 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE:
1308 setMAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE(MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE_EDEFAULT);
1309 return;
1310 case TaxationPackage.CONSTANTS__MINIMUM_SALARY:
1311 setMINIMUM_SALARY(MINIMUM_SALARY_EDEFAULT);
1312 return;
1313 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION:
1314 setFLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION(FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION_EDEFAULT);
1315 return;
1316 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS:
1317 setMAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS(MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS_EDEFAULT);
1318 return;
1319 case TaxationPackage.CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS:
1320 setMINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS(MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS_EDEFAULT);
1321 return;
1322 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC:
1323 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC(MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC_EDEFAULT);
1324 return;
1325 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE:
1326 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE(MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE_EDEFAULT);
1327 return;
1328 case TaxationPackage.CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1329 setMAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT);
1330 return;
1331 case TaxationPackage.CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1332 setMAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT);
1333 return;
1334 case TaxationPackage.CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1335 setMINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT);
1336 return;
1337 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_DAILY:
1338 setFLAT_RATE_CIM_DAILY(FLAT_RATE_CIM_DAILY_EDEFAULT);
1339 return;
1340 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_MONTHLY:
1341 setFLAT_RATE_CIM_MONTHLY(FLAT_RATE_CIM_MONTHLY_EDEFAULT);
1342 return;
1343 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_YEARLY:
1344 setFLAT_RATE_CIM_YEARLY(FLAT_RATE_CIM_YEARLY_EDEFAULT);
1345 return;
1346 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_DAILY:
1347 setFLAT_RATE_CIP_DAILY(FLAT_RATE_CIP_DAILY_EDEFAULT);
1348 return;
1349 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_MONTHLY:
1350 setFLAT_RATE_CIP_MONTHLY(FLAT_RATE_CIP_MONTHLY_EDEFAULT);
1351 return;
1352 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_YEARLY:
1353 setFLAT_RATE_CIP_YEARLY(FLAT_RATE_CIP_YEARLY_EDEFAULT);
1354 return;
1355 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_DAILY:
1356 setFLAT_RATE_CIS_DAILY(FLAT_RATE_CIS_DAILY_EDEFAULT);
1357 return;
1358 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_MONTHLY:
1359 setFLAT_RATE_CIS_MONTHLY(FLAT_RATE_CIS_MONTHLY_EDEFAULT);
1360 return;
1361 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_YEARLY:
1362 setFLAT_RATE_CIS_YEARLY(FLAT_RATE_CIS_YEARLY_EDEFAULT);
1363 return;
1364 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT:
1365 setFLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT(FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT_EDEFAULT);
1366 return;
1367 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS:
1368 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS(MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS_EDEFAULT);
1369 return;
1370 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1371 setFLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT);
1372 return;
1373 case TaxationPackage.CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1374 setDISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT);
1375 return;
1376 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE:
1377 setMAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE(MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE_EDEFAULT);
1378 return;
1379 }
1380 super.eUnset(featureID);
1381 }
1382
1383 /**
1384 * <!-- begin-user-doc -->
1385 * <!-- end-user-doc -->
1386 * @generated
1387 */
1388 @Override
1389 public boolean eIsSet(int featureID) {
1390 switch (featureID) {
1391 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD:
1392 return maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD != MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD_EDEFAULT;
1393 case TaxationPackage.CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE:
1394 return maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE != MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE_EDEFAULT;
1395 case TaxationPackage.CONSTANTS__MINIMUM_SALARY:
1396 return minimuM_SALARY != MINIMUM_SALARY_EDEFAULT;
1397 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION:
1398 return flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION != FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION_EDEFAULT;
1399 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS:
1400 return maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS != MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS_EDEFAULT;
1401 case TaxationPackage.CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS:
1402 return minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS != MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS_EDEFAULT;
1403 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC:
1404 return maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC != MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC_EDEFAULT;
1405 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE:
1406 return maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE != MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE_EDEFAULT;
1407 case TaxationPackage.CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1408 return maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION != MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT;
1409 case TaxationPackage.CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1410 return maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION != MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT;
1411 case TaxationPackage.CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION:
1412 return minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION != MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION_EDEFAULT;
1413 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_DAILY:
1414 return flaT_RATE_CIM_DAILY != FLAT_RATE_CIM_DAILY_EDEFAULT;
1415 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_MONTHLY:
1416 return flaT_RATE_CIM_MONTHLY != FLAT_RATE_CIM_MONTHLY_EDEFAULT;
1417 case TaxationPackage.CONSTANTS__FLAT_RATE_CIM_YEARLY:
1418 return flaT_RATE_CIM_YEARLY != FLAT_RATE_CIM_YEARLY_EDEFAULT;
1419 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_DAILY:
1420 return flaT_RATE_CIP_DAILY != FLAT_RATE_CIP_DAILY_EDEFAULT;
1421 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_MONTHLY:
1422 return flaT_RATE_CIP_MONTHLY != FLAT_RATE_CIP_MONTHLY_EDEFAULT;
1423 case TaxationPackage.CONSTANTS__FLAT_RATE_CIP_YEARLY:
1424 return flaT_RATE_CIP_YEARLY != FLAT_RATE_CIP_YEARLY_EDEFAULT;
1425 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_DAILY:
1426 return flaT_RATE_CIS_DAILY != FLAT_RATE_CIS_DAILY_EDEFAULT;
1427 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_MONTHLY:
1428 return flaT_RATE_CIS_MONTHLY != FLAT_RATE_CIS_MONTHLY_EDEFAULT;
1429 case TaxationPackage.CONSTANTS__FLAT_RATE_CIS_YEARLY:
1430 return flaT_RATE_CIS_YEARLY != FLAT_RATE_CIS_YEARLY_EDEFAULT;
1431 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT:
1432 return flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT != FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT_EDEFAULT;
1433 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS:
1434 return maximuM_DEDUCTIBLE_AMOUNT_FOR_DS != MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS_EDEFAULT;
1435 case TaxationPackage.CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1436 return flaT_RATE_FOR_MISCELLANEOUS_EXPENSE != FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT;
1437 case TaxationPackage.CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE:
1438 return disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE != DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE_EDEFAULT;
1439 case TaxationPackage.CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE:
1440 return maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE != MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE_EDEFAULT;
1441 }
1442 return super.eIsSet(featureID);
1443 }
1444
1445 /**
1446 * <!-- begin-user-doc -->
1447 * <!-- end-user-doc -->
1448 * @generated
1449 */
1450 @Override
1451 public String toString() {
1452 if (eIsProxy()) return super.toString();
1453
1454 StringBuilder result = new StringBuilder(super.toString());
1455 result.append(" (MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD: ");
1456 result.append(maximuM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD);
1457 result.append(", MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE: ");
1458 result.append(maximuM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE);
1459 result.append(", MINIMUM_SALARY: ");
1460 result.append(minimuM_SALARY);
1461 result.append(", FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION: ");
1462 result.append(flaT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION);
1463 result.append(", MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS: ");
1464 result.append(maximuM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS);
1465 result.append(", MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS: ");
1466 result.append(minimuM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS);
1467 result.append(", MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC: ");
1468 result.append(maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC);
1469 result.append(", MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE: ");
1470 result.append(maximuM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE);
1471 result.append(", MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION: ");
1472 result.append(maximaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION);
1473 result.append(", MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION: ");
1474 result.append(maximaL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION);
1475 result.append(", MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION: ");
1476 result.append(minimaL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION);
1477 result.append(", FLAT_RATE_CIM_DAILY: ");
1478 result.append(flaT_RATE_CIM_DAILY);
1479 result.append(", FLAT_RATE_CIM_MONTHLY: ");
1480 result.append(flaT_RATE_CIM_MONTHLY);
1481 result.append(", FLAT_RATE_CIM_YEARLY: ");
1482 result.append(flaT_RATE_CIM_YEARLY);
1483 result.append(", FLAT_RATE_CIP_DAILY: ");
1484 result.append(flaT_RATE_CIP_DAILY);
1485 result.append(", FLAT_RATE_CIP_MONTHLY: ");
1486 result.append(flaT_RATE_CIP_MONTHLY);
1487 result.append(", FLAT_RATE_CIP_YEARLY: ");
1488 result.append(flaT_RATE_CIP_YEARLY);
1489 result.append(", FLAT_RATE_CIS_DAILY: ");
1490 result.append(flaT_RATE_CIS_DAILY);
1491 result.append(", FLAT_RATE_CIS_MONTHLY: ");
1492 result.append(flaT_RATE_CIS_MONTHLY);
1493 result.append(", FLAT_RATE_CIS_YEARLY: ");
1494 result.append(flaT_RATE_CIS_YEARLY);
1495 result.append(", FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT: ");
1496 result.append(flaT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT);
1497 result.append(", MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS: ");
1498 result.append(maximuM_DEDUCTIBLE_AMOUNT_FOR_DS);
1499 result.append(", FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE: ");
1500 result.append(flaT_RATE_FOR_MISCELLANEOUS_EXPENSE);
1501 result.append(", DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE: ");
1502 result.append(disabilitY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE);
1503 result.append(", MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE: ");
1504 result.append(maximuM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE);
1505 result.append(')');
1506 return result.toString();
1507 }
1508
1509} //ConstantsImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DSImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DSImpl.java
new file mode 100644
index 00000000..6b696ea2
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DSImpl.java
@@ -0,0 +1,221 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.DS;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>DS</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.DSImpl#getMaximum_deductible_amount <em>Maximum deductible amount</em>}</li>
24 * <li>{@link Taxation.impl.DSImpl#getId3 <em>Id3</em>}</li>
25 * </ul>
26 *
27 * @generated
28 */
29public class DSImpl extends MinimalEObjectImpl.Container implements DS {
30 /**
31 * The default value of the '{@link #getMaximum_deductible_amount() <em>Maximum deductible amount</em>}' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @see #getMaximum_deductible_amount()
35 * @generated
36 * @ordered
37 */
38 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_EDEFAULT = 0.0;
39
40 /**
41 * The cached value of the '{@link #getMaximum_deductible_amount() <em>Maximum deductible amount</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getMaximum_deductible_amount()
45 * @generated
46 * @ordered
47 */
48 protected double maximum_deductible_amount = MAXIMUM_DEDUCTIBLE_AMOUNT_EDEFAULT;
49
50 /**
51 * The default value of the '{@link #getId3() <em>Id3</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #getId3()
55 * @generated
56 * @ordered
57 */
58 protected static final String ID3_EDEFAULT = null;
59
60 /**
61 * The cached value of the '{@link #getId3() <em>Id3</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #getId3()
65 * @generated
66 * @ordered
67 */
68 protected String id3 = ID3_EDEFAULT;
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 protected DSImpl() {
76 super();
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 protected EClass eStaticClass() {
86 return TaxationPackage.Literals.DS;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 @Override
95 public double getMaximum_deductible_amount() {
96 return maximum_deductible_amount;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setMaximum_deductible_amount(double newMaximum_deductible_amount) {
106 double oldMaximum_deductible_amount = maximum_deductible_amount;
107 maximum_deductible_amount = newMaximum_deductible_amount;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS__MAXIMUM_DEDUCTIBLE_AMOUNT, oldMaximum_deductible_amount, maximum_deductible_amount));
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
118 public String getId3() {
119 return id3;
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public void setId3(String newId3) {
129 String oldId3 = id3;
130 id3 = newId3;
131 if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS__ID3, oldId3, id3));
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public Object eGet(int featureID, boolean resolve, boolean coreType) {
142 switch (featureID) {
143 case TaxationPackage.DS__MAXIMUM_DEDUCTIBLE_AMOUNT:
144 return getMaximum_deductible_amount();
145 case TaxationPackage.DS__ID3:
146 return getId3();
147 }
148 return super.eGet(featureID, resolve, coreType);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public void eSet(int featureID, Object newValue) {
158 switch (featureID) {
159 case TaxationPackage.DS__MAXIMUM_DEDUCTIBLE_AMOUNT:
160 setMaximum_deductible_amount((Double)newValue);
161 return;
162 case TaxationPackage.DS__ID3:
163 setId3((String)newValue);
164 return;
165 }
166 super.eSet(featureID, newValue);
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 @Override
175 public void eUnset(int featureID) {
176 switch (featureID) {
177 case TaxationPackage.DS__MAXIMUM_DEDUCTIBLE_AMOUNT:
178 setMaximum_deductible_amount(MAXIMUM_DEDUCTIBLE_AMOUNT_EDEFAULT);
179 return;
180 case TaxationPackage.DS__ID3:
181 setId3(ID3_EDEFAULT);
182 return;
183 }
184 super.eUnset(featureID);
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public boolean eIsSet(int featureID) {
194 switch (featureID) {
195 case TaxationPackage.DS__MAXIMUM_DEDUCTIBLE_AMOUNT:
196 return maximum_deductible_amount != MAXIMUM_DEDUCTIBLE_AMOUNT_EDEFAULT;
197 case TaxationPackage.DS__ID3:
198 return ID3_EDEFAULT == null ? id3 != null : !ID3_EDEFAULT.equals(id3);
199 }
200 return super.eIsSet(featureID);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public String toString() {
210 if (eIsProxy()) return super.toString();
211
212 StringBuilder result = new StringBuilder(super.toString());
213 result.append(" (maximum_deductible_amount: ");
214 result.append(maximum_deductible_amount);
215 result.append(", id3: ");
216 result.append(id3);
217 result.append(')');
218 return result.toString();
219 }
220
221} //DSImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_DonationImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_DonationImpl.java
new file mode 100644
index 00000000..9cd390b5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_DonationImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.DS_for_Donation;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>DS for Donation</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class DS_for_DonationImpl extends DSImpl implements DS_for_Donation {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected DS_for_DonationImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.DS_FOR_DONATION;
35 }
36
37} //DS_for_DonationImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Health_and_Pension_InsuranceImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Health_and_Pension_InsuranceImpl.java
new file mode 100644
index 00000000..11a07c5a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Health_and_Pension_InsuranceImpl.java
@@ -0,0 +1,165 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Category_of_Health_and_Pension_Insurances;
6import Taxation.DS_for_Health_and_Pension_Insurance;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>DS for Health and Pension Insurance</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.DS_for_Health_and_Pension_InsuranceImpl#getInsurance_category <em>Insurance category</em>}</li>
24 * </ul>
25 *
26 * @generated
27 */
28public class DS_for_Health_and_Pension_InsuranceImpl extends DSImpl implements DS_for_Health_and_Pension_Insurance {
29 /**
30 * The default value of the '{@link #getInsurance_category() <em>Insurance category</em>}' attribute.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @see #getInsurance_category()
34 * @generated
35 * @ordered
36 */
37 protected static final Category_of_Health_and_Pension_Insurances INSURANCE_CATEGORY_EDEFAULT = Category_of_Health_and_Pension_Insurances.MANDATORY_HEALTH_AND_PENSION_INSURANCE;
38
39 /**
40 * The cached value of the '{@link #getInsurance_category() <em>Insurance category</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getInsurance_category()
44 * @generated
45 * @ordered
46 */
47 protected Category_of_Health_and_Pension_Insurances insurance_category = INSURANCE_CATEGORY_EDEFAULT;
48
49 /**
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @generated
53 */
54 protected DS_for_Health_and_Pension_InsuranceImpl() {
55 super();
56 }
57
58 /**
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @generated
62 */
63 @Override
64 protected EClass eStaticClass() {
65 return TaxationPackage.Literals.DS_FOR_HEALTH_AND_PENSION_INSURANCE;
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 @Override
74 public Category_of_Health_and_Pension_Insurances getInsurance_category() {
75 return insurance_category;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 public void setInsurance_category(Category_of_Health_and_Pension_Insurances newInsurance_category) {
85 Category_of_Health_and_Pension_Insurances oldInsurance_category = insurance_category;
86 insurance_category = newInsurance_category == null ? INSURANCE_CATEGORY_EDEFAULT : newInsurance_category;
87 if (eNotificationRequired())
88 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY, oldInsurance_category, insurance_category));
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public Object eGet(int featureID, boolean resolve, boolean coreType) {
98 switch (featureID) {
99 case TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY:
100 return getInsurance_category();
101 }
102 return super.eGet(featureID, resolve, coreType);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public void eSet(int featureID, Object newValue) {
112 switch (featureID) {
113 case TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY:
114 setInsurance_category((Category_of_Health_and_Pension_Insurances)newValue);
115 return;
116 }
117 super.eSet(featureID, newValue);
118 }
119
120 /**
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 @Override
126 public void eUnset(int featureID) {
127 switch (featureID) {
128 case TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY:
129 setInsurance_category(INSURANCE_CATEGORY_EDEFAULT);
130 return;
131 }
132 super.eUnset(featureID);
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public boolean eIsSet(int featureID) {
142 switch (featureID) {
143 case TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY:
144 return insurance_category != INSURANCE_CATEGORY_EDEFAULT;
145 }
146 return super.eIsSet(featureID);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public String toString() {
156 if (eIsProxy()) return super.toString();
157
158 StringBuilder result = new StringBuilder(super.toString());
159 result.append(" (insurance_category: ");
160 result.append(insurance_category);
161 result.append(')');
162 return result.toString();
163 }
164
165} //DS_for_Health_and_Pension_InsuranceImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Interest_ExpenseImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Interest_ExpenseImpl.java
new file mode 100644
index 00000000..a4cf9cc1
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Interest_ExpenseImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.DS_for_Interest_Expense;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>DS for Interest Expense</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class DS_for_Interest_ExpenseImpl extends DSImpl implements DS_for_Interest_Expense {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected DS_for_Interest_ExpenseImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.DS_FOR_INTEREST_EXPENSE;
35 }
36
37} //DS_for_Interest_ExpenseImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Loss_CarryforwardImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Loss_CarryforwardImpl.java
new file mode 100644
index 00000000..344ba90d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Loss_CarryforwardImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.DS_for_Loss_Carryforward;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>DS for Loss Carryforward</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class DS_for_Loss_CarryforwardImpl extends DSImpl implements DS_for_Loss_Carryforward {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected DS_for_Loss_CarryforwardImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.DS_FOR_LOSS_CARRYFORWARD;
35 }
36
37} //DS_for_Loss_CarryforwardImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Permanent_ExpenseImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Permanent_ExpenseImpl.java
new file mode 100644
index 00000000..d2172f09
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Permanent_ExpenseImpl.java
@@ -0,0 +1,165 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Category_of_Permanent_Expense;
6import Taxation.DS_for_Permanent_Expense;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>DS for Permanent Expense</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.DS_for_Permanent_ExpenseImpl#getPermanent_expense_category <em>Permanent expense category</em>}</li>
24 * </ul>
25 *
26 * @generated
27 */
28public class DS_for_Permanent_ExpenseImpl extends DSImpl implements DS_for_Permanent_Expense {
29 /**
30 * The default value of the '{@link #getPermanent_expense_category() <em>Permanent expense category</em>}' attribute.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @see #getPermanent_expense_category()
34 * @generated
35 * @ordered
36 */
37 protected static final Category_of_Permanent_Expense PERMANENT_EXPENSE_CATEGORY_EDEFAULT = Category_of_Permanent_Expense.MISCELLANEOUS_DEBT;
38
39 /**
40 * The cached value of the '{@link #getPermanent_expense_category() <em>Permanent expense category</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getPermanent_expense_category()
44 * @generated
45 * @ordered
46 */
47 protected Category_of_Permanent_Expense permanent_expense_category = PERMANENT_EXPENSE_CATEGORY_EDEFAULT;
48
49 /**
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @generated
53 */
54 protected DS_for_Permanent_ExpenseImpl() {
55 super();
56 }
57
58 /**
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @generated
62 */
63 @Override
64 protected EClass eStaticClass() {
65 return TaxationPackage.Literals.DS_FOR_PERMANENT_EXPENSE;
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 @Override
74 public Category_of_Permanent_Expense getPermanent_expense_category() {
75 return permanent_expense_category;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 public void setPermanent_expense_category(Category_of_Permanent_Expense newPermanent_expense_category) {
85 Category_of_Permanent_Expense oldPermanent_expense_category = permanent_expense_category;
86 permanent_expense_category = newPermanent_expense_category == null ? PERMANENT_EXPENSE_CATEGORY_EDEFAULT : newPermanent_expense_category;
87 if (eNotificationRequired())
88 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY, oldPermanent_expense_category, permanent_expense_category));
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public Object eGet(int featureID, boolean resolve, boolean coreType) {
98 switch (featureID) {
99 case TaxationPackage.DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY:
100 return getPermanent_expense_category();
101 }
102 return super.eGet(featureID, resolve, coreType);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public void eSet(int featureID, Object newValue) {
112 switch (featureID) {
113 case TaxationPackage.DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY:
114 setPermanent_expense_category((Category_of_Permanent_Expense)newValue);
115 return;
116 }
117 super.eSet(featureID, newValue);
118 }
119
120 /**
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 @Override
126 public void eUnset(int featureID) {
127 switch (featureID) {
128 case TaxationPackage.DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY:
129 setPermanent_expense_category(PERMANENT_EXPENSE_CATEGORY_EDEFAULT);
130 return;
131 }
132 super.eUnset(featureID);
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public boolean eIsSet(int featureID) {
142 switch (featureID) {
143 case TaxationPackage.DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY:
144 return permanent_expense_category != PERMANENT_EXPENSE_CATEGORY_EDEFAULT;
145 }
146 return super.eIsSet(featureID);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public String toString() {
156 if (eIsProxy()) return super.toString();
157
158 StringBuilder result = new StringBuilder(super.toString());
159 result.append(" (permanent_expense_category: ");
160 result.append(permanent_expense_category);
161 result.append(')');
162 return result.toString();
163 }
164
165} //DS_for_Permanent_ExpenseImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Private_Insurance_and_PlanImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Private_Insurance_and_PlanImpl.java
new file mode 100644
index 00000000..d33beb48
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DS_for_Private_Insurance_and_PlanImpl.java
@@ -0,0 +1,333 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Category_of_Private_Insurance_and_Plan;
6import Taxation.DS_for_Private_Insurance_and_Plan;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>DS for Private Insurance and Plan</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.DS_for_Private_Insurance_and_PlanImpl#getPrivate_insurance_and_plan_category <em>Private insurance and plan category</em>}</li>
24 * <li>{@link Taxation.impl.DS_for_Private_Insurance_and_PlanImpl#getIncrease_for_life_insurance <em>Increase for life insurance</em>}</li>
25 * <li>{@link Taxation.impl.DS_for_Private_Insurance_and_PlanImpl#getMaximum_deductible_amount_for_private_insurance <em>Maximum deductible amount for private insurance</em>}</li>
26 * <li>{@link Taxation.impl.DS_for_Private_Insurance_and_PlanImpl#getMaximum_deductible_amount_for_old_age_pension_plan <em>Maximum deductible amount for old age pension plan</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class DS_for_Private_Insurance_and_PlanImpl extends DSImpl implements DS_for_Private_Insurance_and_Plan {
32 /**
33 * The default value of the '{@link #getPrivate_insurance_and_plan_category() <em>Private insurance and plan category</em>}' attribute.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getPrivate_insurance_and_plan_category()
37 * @generated
38 * @ordered
39 */
40 protected static final Category_of_Private_Insurance_and_Plan PRIVATE_INSURANCE_AND_PLAN_CATEGORY_EDEFAULT = Category_of_Private_Insurance_and_Plan.PRIVATE_INSURANCE;
41
42 /**
43 * The cached value of the '{@link #getPrivate_insurance_and_plan_category() <em>Private insurance and plan category</em>}' attribute.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getPrivate_insurance_and_plan_category()
47 * @generated
48 * @ordered
49 */
50 protected Category_of_Private_Insurance_and_Plan private_insurance_and_plan_category = PRIVATE_INSURANCE_AND_PLAN_CATEGORY_EDEFAULT;
51
52 /**
53 * The default value of the '{@link #getIncrease_for_life_insurance() <em>Increase for life insurance</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #getIncrease_for_life_insurance()
57 * @generated
58 * @ordered
59 */
60 protected static final double INCREASE_FOR_LIFE_INSURANCE_EDEFAULT = 0.0;
61
62 /**
63 * The cached value of the '{@link #getIncrease_for_life_insurance() <em>Increase for life insurance</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #getIncrease_for_life_insurance()
67 * @generated
68 * @ordered
69 */
70 protected double increase_for_life_insurance = INCREASE_FOR_LIFE_INSURANCE_EDEFAULT;
71
72 /**
73 * The default value of the '{@link #getMaximum_deductible_amount_for_private_insurance() <em>Maximum deductible amount for private insurance</em>}' attribute.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @see #getMaximum_deductible_amount_for_private_insurance()
77 * @generated
78 * @ordered
79 */
80 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE_EDEFAULT = 0.0;
81
82 /**
83 * The cached value of the '{@link #getMaximum_deductible_amount_for_private_insurance() <em>Maximum deductible amount for private insurance</em>}' attribute.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @see #getMaximum_deductible_amount_for_private_insurance()
87 * @generated
88 * @ordered
89 */
90 protected double maximum_deductible_amount_for_private_insurance = MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE_EDEFAULT;
91
92 /**
93 * The default value of the '{@link #getMaximum_deductible_amount_for_old_age_pension_plan() <em>Maximum deductible amount for old age pension plan</em>}' attribute.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @see #getMaximum_deductible_amount_for_old_age_pension_plan()
97 * @generated
98 * @ordered
99 */
100 protected static final double MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN_EDEFAULT = 0.0;
101
102 /**
103 * The cached value of the '{@link #getMaximum_deductible_amount_for_old_age_pension_plan() <em>Maximum deductible amount for old age pension plan</em>}' attribute.
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @see #getMaximum_deductible_amount_for_old_age_pension_plan()
107 * @generated
108 * @ordered
109 */
110 protected double maximum_deductible_amount_for_old_age_pension_plan = MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN_EDEFAULT;
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 protected DS_for_Private_Insurance_and_PlanImpl() {
118 super();
119 }
120
121 /**
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @generated
125 */
126 @Override
127 protected EClass eStaticClass() {
128 return TaxationPackage.Literals.DS_FOR_PRIVATE_INSURANCE_AND_PLAN;
129 }
130
131 /**
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @generated
135 */
136 @Override
137 public Category_of_Private_Insurance_and_Plan getPrivate_insurance_and_plan_category() {
138 return private_insurance_and_plan_category;
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public void setPrivate_insurance_and_plan_category(Category_of_Private_Insurance_and_Plan newPrivate_insurance_and_plan_category) {
148 Category_of_Private_Insurance_and_Plan oldPrivate_insurance_and_plan_category = private_insurance_and_plan_category;
149 private_insurance_and_plan_category = newPrivate_insurance_and_plan_category == null ? PRIVATE_INSURANCE_AND_PLAN_CATEGORY_EDEFAULT : newPrivate_insurance_and_plan_category;
150 if (eNotificationRequired())
151 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY, oldPrivate_insurance_and_plan_category, private_insurance_and_plan_category));
152 }
153
154 /**
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @generated
158 */
159 @Override
160 public double getIncrease_for_life_insurance() {
161 return increase_for_life_insurance;
162 }
163
164 /**
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 @Override
170 public void setIncrease_for_life_insurance(double newIncrease_for_life_insurance) {
171 double oldIncrease_for_life_insurance = increase_for_life_insurance;
172 increase_for_life_insurance = newIncrease_for_life_insurance;
173 if (eNotificationRequired())
174 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE, oldIncrease_for_life_insurance, increase_for_life_insurance));
175 }
176
177 /**
178 * <!-- begin-user-doc -->
179 * <!-- end-user-doc -->
180 * @generated
181 */
182 @Override
183 public double getMaximum_deductible_amount_for_private_insurance() {
184 return maximum_deductible_amount_for_private_insurance;
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public void setMaximum_deductible_amount_for_private_insurance(double newMaximum_deductible_amount_for_private_insurance) {
194 double oldMaximum_deductible_amount_for_private_insurance = maximum_deductible_amount_for_private_insurance;
195 maximum_deductible_amount_for_private_insurance = newMaximum_deductible_amount_for_private_insurance;
196 if (eNotificationRequired())
197 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE, oldMaximum_deductible_amount_for_private_insurance, maximum_deductible_amount_for_private_insurance));
198 }
199
200 /**
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 */
205 @Override
206 public double getMaximum_deductible_amount_for_old_age_pension_plan() {
207 return maximum_deductible_amount_for_old_age_pension_plan;
208 }
209
210 /**
211 * <!-- begin-user-doc -->
212 * <!-- end-user-doc -->
213 * @generated
214 */
215 @Override
216 public void setMaximum_deductible_amount_for_old_age_pension_plan(double newMaximum_deductible_amount_for_old_age_pension_plan) {
217 double oldMaximum_deductible_amount_for_old_age_pension_plan = maximum_deductible_amount_for_old_age_pension_plan;
218 maximum_deductible_amount_for_old_age_pension_plan = newMaximum_deductible_amount_for_old_age_pension_plan;
219 if (eNotificationRequired())
220 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN, oldMaximum_deductible_amount_for_old_age_pension_plan, maximum_deductible_amount_for_old_age_pension_plan));
221 }
222
223 /**
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @generated
227 */
228 @Override
229 public Object eGet(int featureID, boolean resolve, boolean coreType) {
230 switch (featureID) {
231 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY:
232 return getPrivate_insurance_and_plan_category();
233 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE:
234 return getIncrease_for_life_insurance();
235 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE:
236 return getMaximum_deductible_amount_for_private_insurance();
237 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN:
238 return getMaximum_deductible_amount_for_old_age_pension_plan();
239 }
240 return super.eGet(featureID, resolve, coreType);
241 }
242
243 /**
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 */
248 @Override
249 public void eSet(int featureID, Object newValue) {
250 switch (featureID) {
251 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY:
252 setPrivate_insurance_and_plan_category((Category_of_Private_Insurance_and_Plan)newValue);
253 return;
254 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE:
255 setIncrease_for_life_insurance((Double)newValue);
256 return;
257 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE:
258 setMaximum_deductible_amount_for_private_insurance((Double)newValue);
259 return;
260 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN:
261 setMaximum_deductible_amount_for_old_age_pension_plan((Double)newValue);
262 return;
263 }
264 super.eSet(featureID, newValue);
265 }
266
267 /**
268 * <!-- begin-user-doc -->
269 * <!-- end-user-doc -->
270 * @generated
271 */
272 @Override
273 public void eUnset(int featureID) {
274 switch (featureID) {
275 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY:
276 setPrivate_insurance_and_plan_category(PRIVATE_INSURANCE_AND_PLAN_CATEGORY_EDEFAULT);
277 return;
278 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE:
279 setIncrease_for_life_insurance(INCREASE_FOR_LIFE_INSURANCE_EDEFAULT);
280 return;
281 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE:
282 setMaximum_deductible_amount_for_private_insurance(MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE_EDEFAULT);
283 return;
284 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN:
285 setMaximum_deductible_amount_for_old_age_pension_plan(MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN_EDEFAULT);
286 return;
287 }
288 super.eUnset(featureID);
289 }
290
291 /**
292 * <!-- begin-user-doc -->
293 * <!-- end-user-doc -->
294 * @generated
295 */
296 @Override
297 public boolean eIsSet(int featureID) {
298 switch (featureID) {
299 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY:
300 return private_insurance_and_plan_category != PRIVATE_INSURANCE_AND_PLAN_CATEGORY_EDEFAULT;
301 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE:
302 return increase_for_life_insurance != INCREASE_FOR_LIFE_INSURANCE_EDEFAULT;
303 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE:
304 return maximum_deductible_amount_for_private_insurance != MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE_EDEFAULT;
305 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN:
306 return maximum_deductible_amount_for_old_age_pension_plan != MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN_EDEFAULT;
307 }
308 return super.eIsSet(featureID);
309 }
310
311 /**
312 * <!-- begin-user-doc -->
313 * <!-- end-user-doc -->
314 * @generated
315 */
316 @Override
317 public String toString() {
318 if (eIsProxy()) return super.toString();
319
320 StringBuilder result = new StringBuilder(super.toString());
321 result.append(" (private_insurance_and_plan_category: ");
322 result.append(private_insurance_and_plan_category);
323 result.append(", increase_for_life_insurance: ");
324 result.append(increase_for_life_insurance);
325 result.append(", maximum_deductible_amount_for_private_insurance: ");
326 result.append(maximum_deductible_amount_for_private_insurance);
327 result.append(", maximum_deductible_amount_for_old_age_pension_plan: ");
328 result.append(maximum_deductible_amount_for_old_age_pension_plan);
329 result.append(')');
330 return result.toString();
331 }
332
333} //DS_for_Private_Insurance_and_PlanImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DependentImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DependentImpl.java
new file mode 100644
index 00000000..0732ae44
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DependentImpl.java
@@ -0,0 +1,598 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Dependent;
6import Taxation.Dependent_Type;
7import Taxation.Expense;
8import Taxation.External_Allowance;
9import Taxation.FromAgent;
10import Taxation.Household;
11import Taxation.Tax_Payer;
12import Taxation.TaxationPackage;
13
14import java.util.Collection;
15
16import org.eclipse.emf.common.notify.Notification;
17import org.eclipse.emf.common.notify.NotificationChain;
18
19import org.eclipse.emf.common.util.EList;
20
21import org.eclipse.emf.ecore.EClass;
22import org.eclipse.emf.ecore.InternalEObject;
23
24import org.eclipse.emf.ecore.impl.ENotificationImpl;
25import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
26import org.eclipse.emf.ecore.util.EcoreUtil;
27import org.eclipse.emf.ecore.util.InternalEList;
28
29/**
30 * <!-- begin-user-doc -->
31 * An implementation of the model object '<em><b>Dependent</b></em>'.
32 * <!-- end-user-doc -->
33 * <p>
34 * The following features are implemented:
35 * </p>
36 * <ul>
37 * <li>{@link Taxation.impl.DependentImpl#getDependent_type <em>Dependent type</em>}</li>
38 * <li>{@link Taxation.impl.DependentImpl#getResponsible_person <em>Responsible person</em>}</li>
39 * <li>{@link Taxation.impl.DependentImpl#isContinued_studies <em>Continued studies</em>}</li>
40 * <li>{@link Taxation.impl.DependentImpl#getAllowances <em>Allowances</em>}</li>
41 * <li>{@link Taxation.impl.DependentImpl#getHousehold <em>Household</em>}</li>
42 * <li>{@link Taxation.impl.DependentImpl#getFrom_agent <em>From agent</em>}</li>
43 * <li>{@link Taxation.impl.DependentImpl#getExpense <em>Expense</em>}</li>
44 * </ul>
45 *
46 * @generated
47 */
48public class DependentImpl extends Physical_PersonImpl implements Dependent {
49 /**
50 * The default value of the '{@link #getDependent_type() <em>Dependent type</em>}' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #getDependent_type()
54 * @generated
55 * @ordered
56 */
57 protected static final Dependent_Type DEPENDENT_TYPE_EDEFAULT = Dependent_Type.CHILD;
58
59 /**
60 * The cached value of the '{@link #getDependent_type() <em>Dependent type</em>}' attribute.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see #getDependent_type()
64 * @generated
65 * @ordered
66 */
67 protected Dependent_Type dependent_type = DEPENDENT_TYPE_EDEFAULT;
68
69 /**
70 * The default value of the '{@link #isContinued_studies() <em>Continued studies</em>}' attribute.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @see #isContinued_studies()
74 * @generated
75 * @ordered
76 */
77 protected static final boolean CONTINUED_STUDIES_EDEFAULT = false;
78
79 /**
80 * The cached value of the '{@link #isContinued_studies() <em>Continued studies</em>}' attribute.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @see #isContinued_studies()
84 * @generated
85 * @ordered
86 */
87 protected boolean continued_studies = CONTINUED_STUDIES_EDEFAULT;
88
89 /**
90 * The cached value of the '{@link #getAllowances() <em>Allowances</em>}' containment reference.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @see #getAllowances()
94 * @generated
95 * @ordered
96 */
97 protected External_Allowance allowances;
98
99 /**
100 * The cached value of the '{@link #getFrom_agent() <em>From agent</em>}' reference.
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @see #getFrom_agent()
104 * @generated
105 * @ordered
106 */
107 protected FromAgent from_agent;
108
109 /**
110 * The cached value of the '{@link #getExpense() <em>Expense</em>}' reference list.
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @see #getExpense()
114 * @generated
115 * @ordered
116 */
117 protected EList<Expense> expense;
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 protected DependentImpl() {
125 super();
126 }
127
128 /**
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @generated
132 */
133 @Override
134 protected EClass eStaticClass() {
135 return TaxationPackage.Literals.DEPENDENT;
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 @Override
144 public Dependent_Type getDependent_type() {
145 return dependent_type;
146 }
147
148 /**
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 @Override
154 public void setDependent_type(Dependent_Type newDependent_type) {
155 Dependent_Type oldDependent_type = dependent_type;
156 dependent_type = newDependent_type == null ? DEPENDENT_TYPE_EDEFAULT : newDependent_type;
157 if (eNotificationRequired())
158 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__DEPENDENT_TYPE, oldDependent_type, dependent_type));
159 }
160
161 /**
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 */
166 @Override
167 public Tax_Payer getResponsible_person() {
168 if (eContainerFeatureID() != TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON) return null;
169 return (Tax_Payer)eInternalContainer();
170 }
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 public NotificationChain basicSetResponsible_person(Tax_Payer newResponsible_person, NotificationChain msgs) {
178 msgs = eBasicSetContainer((InternalEObject)newResponsible_person, TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON, msgs);
179 return msgs;
180 }
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 @Override
188 public void setResponsible_person(Tax_Payer newResponsible_person) {
189 if (newResponsible_person != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON && newResponsible_person != null)) {
190 if (EcoreUtil.isAncestor(this, newResponsible_person))
191 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
192 NotificationChain msgs = null;
193 if (eInternalContainer() != null)
194 msgs = eBasicRemoveFromContainer(msgs);
195 if (newResponsible_person != null)
196 msgs = ((InternalEObject)newResponsible_person).eInverseAdd(this, TaxationPackage.TAX_PAYER__DEPENDENTS, Tax_Payer.class, msgs);
197 msgs = basicSetResponsible_person(newResponsible_person, msgs);
198 if (msgs != null) msgs.dispatch();
199 }
200 else if (eNotificationRequired())
201 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON, newResponsible_person, newResponsible_person));
202 }
203
204 /**
205 * <!-- begin-user-doc -->
206 * <!-- end-user-doc -->
207 * @generated
208 */
209 @Override
210 public boolean isContinued_studies() {
211 return continued_studies;
212 }
213
214 /**
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @generated
218 */
219 @Override
220 public void setContinued_studies(boolean newContinued_studies) {
221 boolean oldContinued_studies = continued_studies;
222 continued_studies = newContinued_studies;
223 if (eNotificationRequired())
224 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__CONTINUED_STUDIES, oldContinued_studies, continued_studies));
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 @Override
233 public External_Allowance getAllowances() {
234 return allowances;
235 }
236
237 /**
238 * <!-- begin-user-doc -->
239 * <!-- end-user-doc -->
240 * @generated
241 */
242 public NotificationChain basicSetAllowances(External_Allowance newAllowances, NotificationChain msgs) {
243 External_Allowance oldAllowances = allowances;
244 allowances = newAllowances;
245 if (eNotificationRequired()) {
246 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__ALLOWANCES, oldAllowances, newAllowances);
247 if (msgs == null) msgs = notification; else msgs.add(notification);
248 }
249 return msgs;
250 }
251
252 /**
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 */
257 @Override
258 public void setAllowances(External_Allowance newAllowances) {
259 if (newAllowances != allowances) {
260 NotificationChain msgs = null;
261 if (allowances != null)
262 msgs = ((InternalEObject)allowances).eInverseRemove(this, TaxationPackage.EXTERNAL_ALLOWANCE__PERSON, External_Allowance.class, msgs);
263 if (newAllowances != null)
264 msgs = ((InternalEObject)newAllowances).eInverseAdd(this, TaxationPackage.EXTERNAL_ALLOWANCE__PERSON, External_Allowance.class, msgs);
265 msgs = basicSetAllowances(newAllowances, msgs);
266 if (msgs != null) msgs.dispatch();
267 }
268 else if (eNotificationRequired())
269 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__ALLOWANCES, newAllowances, newAllowances));
270 }
271
272 /**
273 * <!-- begin-user-doc -->
274 * <!-- end-user-doc -->
275 * @generated
276 */
277 @Override
278 public Household getHousehold() {
279 if (eContainerFeatureID() != TaxationPackage.DEPENDENT__HOUSEHOLD) return null;
280 return (Household)eInternalContainer();
281 }
282
283 /**
284 * <!-- begin-user-doc -->
285 * <!-- end-user-doc -->
286 * @generated
287 */
288 public NotificationChain basicSetHousehold(Household newHousehold, NotificationChain msgs) {
289 msgs = eBasicSetContainer((InternalEObject)newHousehold, TaxationPackage.DEPENDENT__HOUSEHOLD, msgs);
290 return msgs;
291 }
292
293 /**
294 * <!-- begin-user-doc -->
295 * <!-- end-user-doc -->
296 * @generated
297 */
298 @Override
299 public void setHousehold(Household newHousehold) {
300 if (newHousehold != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.DEPENDENT__HOUSEHOLD && newHousehold != null)) {
301 if (EcoreUtil.isAncestor(this, newHousehold))
302 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
303 NotificationChain msgs = null;
304 if (eInternalContainer() != null)
305 msgs = eBasicRemoveFromContainer(msgs);
306 if (newHousehold != null)
307 msgs = ((InternalEObject)newHousehold).eInverseAdd(this, TaxationPackage.HOUSEHOLD__CHILDREN, Household.class, msgs);
308 msgs = basicSetHousehold(newHousehold, msgs);
309 if (msgs != null) msgs.dispatch();
310 }
311 else if (eNotificationRequired())
312 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__HOUSEHOLD, newHousehold, newHousehold));
313 }
314
315 /**
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @generated
319 */
320 @Override
321 public FromAgent getFrom_agent() {
322 if (from_agent != null && from_agent.eIsProxy()) {
323 InternalEObject oldFrom_agent = (InternalEObject)from_agent;
324 from_agent = (FromAgent)eResolveProxy(oldFrom_agent);
325 if (from_agent != oldFrom_agent) {
326 if (eNotificationRequired())
327 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.DEPENDENT__FROM_AGENT, oldFrom_agent, from_agent));
328 }
329 }
330 return from_agent;
331 }
332
333 /**
334 * <!-- begin-user-doc -->
335 * <!-- end-user-doc -->
336 * @generated
337 */
338 public FromAgent basicGetFrom_agent() {
339 return from_agent;
340 }
341
342 /**
343 * <!-- begin-user-doc -->
344 * <!-- end-user-doc -->
345 * @generated
346 */
347 public NotificationChain basicSetFrom_agent(FromAgent newFrom_agent, NotificationChain msgs) {
348 FromAgent oldFrom_agent = from_agent;
349 from_agent = newFrom_agent;
350 if (eNotificationRequired()) {
351 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__FROM_AGENT, oldFrom_agent, newFrom_agent);
352 if (msgs == null) msgs = notification; else msgs.add(notification);
353 }
354 return msgs;
355 }
356
357 /**
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @generated
361 */
362 @Override
363 public void setFrom_agent(FromAgent newFrom_agent) {
364 if (newFrom_agent != from_agent) {
365 NotificationChain msgs = null;
366 if (from_agent != null)
367 msgs = ((InternalEObject)from_agent).eInverseRemove(this, TaxationPackage.FROM_AGENT__DEPENDENT, FromAgent.class, msgs);
368 if (newFrom_agent != null)
369 msgs = ((InternalEObject)newFrom_agent).eInverseAdd(this, TaxationPackage.FROM_AGENT__DEPENDENT, FromAgent.class, msgs);
370 msgs = basicSetFrom_agent(newFrom_agent, msgs);
371 if (msgs != null) msgs.dispatch();
372 }
373 else if (eNotificationRequired())
374 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DEPENDENT__FROM_AGENT, newFrom_agent, newFrom_agent));
375 }
376
377 /**
378 * <!-- begin-user-doc -->
379 * <!-- end-user-doc -->
380 * @generated
381 */
382 @Override
383 public EList<Expense> getExpense() {
384 if (expense == null) {
385 expense = new EObjectWithInverseResolvingEList<Expense>(Expense.class, this, TaxationPackage.DEPENDENT__EXPENSE, TaxationPackage.EXPENSE__DEPENDENT);
386 }
387 return expense;
388 }
389
390 /**
391 * <!-- begin-user-doc -->
392 * <!-- end-user-doc -->
393 * @generated
394 */
395 @SuppressWarnings("unchecked")
396 @Override
397 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
398 switch (featureID) {
399 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
400 if (eInternalContainer() != null)
401 msgs = eBasicRemoveFromContainer(msgs);
402 return basicSetResponsible_person((Tax_Payer)otherEnd, msgs);
403 case TaxationPackage.DEPENDENT__ALLOWANCES:
404 if (allowances != null)
405 msgs = ((InternalEObject)allowances).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.DEPENDENT__ALLOWANCES, null, msgs);
406 return basicSetAllowances((External_Allowance)otherEnd, msgs);
407 case TaxationPackage.DEPENDENT__HOUSEHOLD:
408 if (eInternalContainer() != null)
409 msgs = eBasicRemoveFromContainer(msgs);
410 return basicSetHousehold((Household)otherEnd, msgs);
411 case TaxationPackage.DEPENDENT__FROM_AGENT:
412 if (from_agent != null)
413 msgs = ((InternalEObject)from_agent).eInverseRemove(this, TaxationPackage.FROM_AGENT__DEPENDENT, FromAgent.class, msgs);
414 return basicSetFrom_agent((FromAgent)otherEnd, msgs);
415 case TaxationPackage.DEPENDENT__EXPENSE:
416 return ((InternalEList<InternalEObject>)(InternalEList<?>)getExpense()).basicAdd(otherEnd, msgs);
417 }
418 return super.eInverseAdd(otherEnd, featureID, msgs);
419 }
420
421 /**
422 * <!-- begin-user-doc -->
423 * <!-- end-user-doc -->
424 * @generated
425 */
426 @Override
427 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
428 switch (featureID) {
429 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
430 return basicSetResponsible_person(null, msgs);
431 case TaxationPackage.DEPENDENT__ALLOWANCES:
432 return basicSetAllowances(null, msgs);
433 case TaxationPackage.DEPENDENT__HOUSEHOLD:
434 return basicSetHousehold(null, msgs);
435 case TaxationPackage.DEPENDENT__FROM_AGENT:
436 return basicSetFrom_agent(null, msgs);
437 case TaxationPackage.DEPENDENT__EXPENSE:
438 return ((InternalEList<?>)getExpense()).basicRemove(otherEnd, msgs);
439 }
440 return super.eInverseRemove(otherEnd, featureID, msgs);
441 }
442
443 /**
444 * <!-- begin-user-doc -->
445 * <!-- end-user-doc -->
446 * @generated
447 */
448 @Override
449 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
450 switch (eContainerFeatureID()) {
451 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
452 return eInternalContainer().eInverseRemove(this, TaxationPackage.TAX_PAYER__DEPENDENTS, Tax_Payer.class, msgs);
453 case TaxationPackage.DEPENDENT__HOUSEHOLD:
454 return eInternalContainer().eInverseRemove(this, TaxationPackage.HOUSEHOLD__CHILDREN, Household.class, msgs);
455 }
456 return super.eBasicRemoveFromContainerFeature(msgs);
457 }
458
459 /**
460 * <!-- begin-user-doc -->
461 * <!-- end-user-doc -->
462 * @generated
463 */
464 @Override
465 public Object eGet(int featureID, boolean resolve, boolean coreType) {
466 switch (featureID) {
467 case TaxationPackage.DEPENDENT__DEPENDENT_TYPE:
468 return getDependent_type();
469 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
470 return getResponsible_person();
471 case TaxationPackage.DEPENDENT__CONTINUED_STUDIES:
472 return isContinued_studies();
473 case TaxationPackage.DEPENDENT__ALLOWANCES:
474 return getAllowances();
475 case TaxationPackage.DEPENDENT__HOUSEHOLD:
476 return getHousehold();
477 case TaxationPackage.DEPENDENT__FROM_AGENT:
478 if (resolve) return getFrom_agent();
479 return basicGetFrom_agent();
480 case TaxationPackage.DEPENDENT__EXPENSE:
481 return getExpense();
482 }
483 return super.eGet(featureID, resolve, coreType);
484 }
485
486 /**
487 * <!-- begin-user-doc -->
488 * <!-- end-user-doc -->
489 * @generated
490 */
491 @SuppressWarnings("unchecked")
492 @Override
493 public void eSet(int featureID, Object newValue) {
494 switch (featureID) {
495 case TaxationPackage.DEPENDENT__DEPENDENT_TYPE:
496 setDependent_type((Dependent_Type)newValue);
497 return;
498 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
499 setResponsible_person((Tax_Payer)newValue);
500 return;
501 case TaxationPackage.DEPENDENT__CONTINUED_STUDIES:
502 setContinued_studies((Boolean)newValue);
503 return;
504 case TaxationPackage.DEPENDENT__ALLOWANCES:
505 setAllowances((External_Allowance)newValue);
506 return;
507 case TaxationPackage.DEPENDENT__HOUSEHOLD:
508 setHousehold((Household)newValue);
509 return;
510 case TaxationPackage.DEPENDENT__FROM_AGENT:
511 setFrom_agent((FromAgent)newValue);
512 return;
513 case TaxationPackage.DEPENDENT__EXPENSE:
514 getExpense().clear();
515 getExpense().addAll((Collection<? extends Expense>)newValue);
516 return;
517 }
518 super.eSet(featureID, newValue);
519 }
520
521 /**
522 * <!-- begin-user-doc -->
523 * <!-- end-user-doc -->
524 * @generated
525 */
526 @Override
527 public void eUnset(int featureID) {
528 switch (featureID) {
529 case TaxationPackage.DEPENDENT__DEPENDENT_TYPE:
530 setDependent_type(DEPENDENT_TYPE_EDEFAULT);
531 return;
532 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
533 setResponsible_person((Tax_Payer)null);
534 return;
535 case TaxationPackage.DEPENDENT__CONTINUED_STUDIES:
536 setContinued_studies(CONTINUED_STUDIES_EDEFAULT);
537 return;
538 case TaxationPackage.DEPENDENT__ALLOWANCES:
539 setAllowances((External_Allowance)null);
540 return;
541 case TaxationPackage.DEPENDENT__HOUSEHOLD:
542 setHousehold((Household)null);
543 return;
544 case TaxationPackage.DEPENDENT__FROM_AGENT:
545 setFrom_agent((FromAgent)null);
546 return;
547 case TaxationPackage.DEPENDENT__EXPENSE:
548 getExpense().clear();
549 return;
550 }
551 super.eUnset(featureID);
552 }
553
554 /**
555 * <!-- begin-user-doc -->
556 * <!-- end-user-doc -->
557 * @generated
558 */
559 @Override
560 public boolean eIsSet(int featureID) {
561 switch (featureID) {
562 case TaxationPackage.DEPENDENT__DEPENDENT_TYPE:
563 return dependent_type != DEPENDENT_TYPE_EDEFAULT;
564 case TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON:
565 return getResponsible_person() != null;
566 case TaxationPackage.DEPENDENT__CONTINUED_STUDIES:
567 return continued_studies != CONTINUED_STUDIES_EDEFAULT;
568 case TaxationPackage.DEPENDENT__ALLOWANCES:
569 return allowances != null;
570 case TaxationPackage.DEPENDENT__HOUSEHOLD:
571 return getHousehold() != null;
572 case TaxationPackage.DEPENDENT__FROM_AGENT:
573 return from_agent != null;
574 case TaxationPackage.DEPENDENT__EXPENSE:
575 return expense != null && !expense.isEmpty();
576 }
577 return super.eIsSet(featureID);
578 }
579
580 /**
581 * <!-- begin-user-doc -->
582 * <!-- end-user-doc -->
583 * @generated
584 */
585 @Override
586 public String toString() {
587 if (eIsProxy()) return super.toString();
588
589 StringBuilder result = new StringBuilder(super.toString());
590 result.append(" (dependent_type: ");
591 result.append(dependent_type);
592 result.append(", continued_studies: ");
593 result.append(continued_studies);
594 result.append(')');
595 return result.toString();
596 }
597
598} //DependentImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DonationImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DonationImpl.java
new file mode 100644
index 00000000..e631901a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/DonationImpl.java
@@ -0,0 +1,276 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Donation;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Donation</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.DonationImpl#getBeneficiary1 <em>Beneficiary1</em>}</li>
23 * <li>{@link Taxation.impl.DonationImpl#isIs_beneficiary_eligible <em>Is beneficiary eligible</em>}</li>
24 * <li>{@link Taxation.impl.DonationImpl#isIs_donation_reported <em>Is donation reported</em>}</li>
25 * </ul>
26 *
27 * @generated
28 */
29public class DonationImpl extends Special_Expense_DSImpl implements Donation {
30 /**
31 * The default value of the '{@link #getBeneficiary1() <em>Beneficiary1</em>}' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @see #getBeneficiary1()
35 * @generated
36 * @ordered
37 */
38 protected static final String BENEFICIARY1_EDEFAULT = null;
39
40 /**
41 * The cached value of the '{@link #getBeneficiary1() <em>Beneficiary1</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getBeneficiary1()
45 * @generated
46 * @ordered
47 */
48 protected String beneficiary1 = BENEFICIARY1_EDEFAULT;
49
50 /**
51 * The default value of the '{@link #isIs_beneficiary_eligible() <em>Is beneficiary eligible</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #isIs_beneficiary_eligible()
55 * @generated
56 * @ordered
57 */
58 protected static final boolean IS_BENEFICIARY_ELIGIBLE_EDEFAULT = false;
59
60 /**
61 * The cached value of the '{@link #isIs_beneficiary_eligible() <em>Is beneficiary eligible</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #isIs_beneficiary_eligible()
65 * @generated
66 * @ordered
67 */
68 protected boolean is_beneficiary_eligible = IS_BENEFICIARY_ELIGIBLE_EDEFAULT;
69
70 /**
71 * The default value of the '{@link #isIs_donation_reported() <em>Is donation reported</em>}' attribute.
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @see #isIs_donation_reported()
75 * @generated
76 * @ordered
77 */
78 protected static final boolean IS_DONATION_REPORTED_EDEFAULT = false;
79
80 /**
81 * The cached value of the '{@link #isIs_donation_reported() <em>Is donation reported</em>}' attribute.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @see #isIs_donation_reported()
85 * @generated
86 * @ordered
87 */
88 protected boolean is_donation_reported = IS_DONATION_REPORTED_EDEFAULT;
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 protected DonationImpl() {
96 super();
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 protected EClass eStaticClass() {
106 return TaxationPackage.Literals.DONATION;
107 }
108
109 /**
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @generated
113 */
114 @Override
115 public String getBeneficiary1() {
116 return beneficiary1;
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public void setBeneficiary1(String newBeneficiary1) {
126 String oldBeneficiary1 = beneficiary1;
127 beneficiary1 = newBeneficiary1;
128 if (eNotificationRequired())
129 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DONATION__BENEFICIARY1, oldBeneficiary1, beneficiary1));
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 @Override
138 public boolean isIs_beneficiary_eligible() {
139 return is_beneficiary_eligible;
140 }
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 @Override
148 public void setIs_beneficiary_eligible(boolean newIs_beneficiary_eligible) {
149 boolean oldIs_beneficiary_eligible = is_beneficiary_eligible;
150 is_beneficiary_eligible = newIs_beneficiary_eligible;
151 if (eNotificationRequired())
152 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DONATION__IS_BENEFICIARY_ELIGIBLE, oldIs_beneficiary_eligible, is_beneficiary_eligible));
153 }
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 @Override
161 public boolean isIs_donation_reported() {
162 return is_donation_reported;
163 }
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 @Override
171 public void setIs_donation_reported(boolean newIs_donation_reported) {
172 boolean oldIs_donation_reported = is_donation_reported;
173 is_donation_reported = newIs_donation_reported;
174 if (eNotificationRequired())
175 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.DONATION__IS_DONATION_REPORTED, oldIs_donation_reported, is_donation_reported));
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 @Override
184 public Object eGet(int featureID, boolean resolve, boolean coreType) {
185 switch (featureID) {
186 case TaxationPackage.DONATION__BENEFICIARY1:
187 return getBeneficiary1();
188 case TaxationPackage.DONATION__IS_BENEFICIARY_ELIGIBLE:
189 return isIs_beneficiary_eligible();
190 case TaxationPackage.DONATION__IS_DONATION_REPORTED:
191 return isIs_donation_reported();
192 }
193 return super.eGet(featureID, resolve, coreType);
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 @Override
202 public void eSet(int featureID, Object newValue) {
203 switch (featureID) {
204 case TaxationPackage.DONATION__BENEFICIARY1:
205 setBeneficiary1((String)newValue);
206 return;
207 case TaxationPackage.DONATION__IS_BENEFICIARY_ELIGIBLE:
208 setIs_beneficiary_eligible((Boolean)newValue);
209 return;
210 case TaxationPackage.DONATION__IS_DONATION_REPORTED:
211 setIs_donation_reported((Boolean)newValue);
212 return;
213 }
214 super.eSet(featureID, newValue);
215 }
216
217 /**
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 @Override
223 public void eUnset(int featureID) {
224 switch (featureID) {
225 case TaxationPackage.DONATION__BENEFICIARY1:
226 setBeneficiary1(BENEFICIARY1_EDEFAULT);
227 return;
228 case TaxationPackage.DONATION__IS_BENEFICIARY_ELIGIBLE:
229 setIs_beneficiary_eligible(IS_BENEFICIARY_ELIGIBLE_EDEFAULT);
230 return;
231 case TaxationPackage.DONATION__IS_DONATION_REPORTED:
232 setIs_donation_reported(IS_DONATION_REPORTED_EDEFAULT);
233 return;
234 }
235 super.eUnset(featureID);
236 }
237
238 /**
239 * <!-- begin-user-doc -->
240 * <!-- end-user-doc -->
241 * @generated
242 */
243 @Override
244 public boolean eIsSet(int featureID) {
245 switch (featureID) {
246 case TaxationPackage.DONATION__BENEFICIARY1:
247 return BENEFICIARY1_EDEFAULT == null ? beneficiary1 != null : !BENEFICIARY1_EDEFAULT.equals(beneficiary1);
248 case TaxationPackage.DONATION__IS_BENEFICIARY_ELIGIBLE:
249 return is_beneficiary_eligible != IS_BENEFICIARY_ELIGIBLE_EDEFAULT;
250 case TaxationPackage.DONATION__IS_DONATION_REPORTED:
251 return is_donation_reported != IS_DONATION_REPORTED_EDEFAULT;
252 }
253 return super.eIsSet(featureID);
254 }
255
256 /**
257 * <!-- begin-user-doc -->
258 * <!-- end-user-doc -->
259 * @generated
260 */
261 @Override
262 public String toString() {
263 if (eIsProxy()) return super.toString();
264
265 StringBuilder result = new StringBuilder(super.toString());
266 result.append(" (beneficiary1: ");
267 result.append(beneficiary1);
268 result.append(", is_beneficiary_eligible: ");
269 result.append(is_beneficiary_eligible);
270 result.append(", is_donation_reported: ");
271 result.append(is_donation_reported);
272 result.append(')');
273 return result.toString();
274 }
275
276} //DonationImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Employment_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Employment_IncomeImpl.java
new file mode 100644
index 00000000..3cdce780
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Employment_IncomeImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Employment_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Employment Income</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Employment_IncomeImpl extends Income_TypeImpl implements Employment_Income {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Employment_IncomeImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.EMPLOYMENT_INCOME;
35 }
36
37} //Employment_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ExpenseImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ExpenseImpl.java
new file mode 100644
index 00000000..70dfc53e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/ExpenseImpl.java
@@ -0,0 +1,653 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Dependent;
6import Taxation.Expense;
7import Taxation.Expense_Purpose;
8import Taxation.FromAgent;
9import Taxation.Income;
10import Taxation.Physical_Person;
11import Taxation.TaxationPackage;
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.ecore.EClass;
16import org.eclipse.emf.ecore.InternalEObject;
17
18import org.eclipse.emf.ecore.impl.ENotificationImpl;
19import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
20
21import org.eclipse.emf.ecore.util.EcoreUtil;
22
23/**
24 * <!-- begin-user-doc -->
25 * An implementation of the model object '<em><b>Expense</b></em>'.
26 * <!-- end-user-doc -->
27 * <p>
28 * The following features are implemented:
29 * </p>
30 * <ul>
31 * <li>{@link Taxation.impl.ExpenseImpl#getDeclared_amount <em>Declared amount</em>}</li>
32 * <li>{@link Taxation.impl.ExpenseImpl#getExpense_purpose <em>Expense purpose</em>}</li>
33 * <li>{@link Taxation.impl.ExpenseImpl#getDependent <em>Dependent</em>}</li>
34 * <li>{@link Taxation.impl.ExpenseImpl#getFrom_agent <em>From agent</em>}</li>
35 * <li>{@link Taxation.impl.ExpenseImpl#getIncome <em>Income</em>}</li>
36 * <li>{@link Taxation.impl.ExpenseImpl#getId4 <em>Id4</em>}</li>
37 * <li>{@link Taxation.impl.ExpenseImpl#getBeneficiary <em>Beneficiary</em>}</li>
38 * </ul>
39 *
40 * @generated
41 */
42public class ExpenseImpl extends MinimalEObjectImpl.Container implements Expense {
43 /**
44 * The default value of the '{@link #getDeclared_amount() <em>Declared amount</em>}' attribute.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @see #getDeclared_amount()
48 * @generated
49 * @ordered
50 */
51 protected static final double DECLARED_AMOUNT_EDEFAULT = 0.0;
52
53 /**
54 * The cached value of the '{@link #getDeclared_amount() <em>Declared amount</em>}' attribute.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @see #getDeclared_amount()
58 * @generated
59 * @ordered
60 */
61 protected double declared_amount = DECLARED_AMOUNT_EDEFAULT;
62
63 /**
64 * The default value of the '{@link #getExpense_purpose() <em>Expense purpose</em>}' attribute.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @see #getExpense_purpose()
68 * @generated
69 * @ordered
70 */
71 protected static final Expense_Purpose EXPENSE_PURPOSE_EDEFAULT = Expense_Purpose.OTHER;
72
73 /**
74 * The cached value of the '{@link #getExpense_purpose() <em>Expense purpose</em>}' attribute.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #getExpense_purpose()
78 * @generated
79 * @ordered
80 */
81 protected Expense_Purpose expense_purpose = EXPENSE_PURPOSE_EDEFAULT;
82
83 /**
84 * The cached value of the '{@link #getDependent() <em>Dependent</em>}' reference.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @see #getDependent()
88 * @generated
89 * @ordered
90 */
91 protected Dependent dependent;
92
93 /**
94 * The cached value of the '{@link #getFrom_agent() <em>From agent</em>}' reference.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #getFrom_agent()
98 * @generated
99 * @ordered
100 */
101 protected FromAgent from_agent;
102
103 /**
104 * The default value of the '{@link #getId4() <em>Id4</em>}' attribute.
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @see #getId4()
108 * @generated
109 * @ordered
110 */
111 protected static final String ID4_EDEFAULT = null;
112
113 /**
114 * The cached value of the '{@link #getId4() <em>Id4</em>}' attribute.
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @see #getId4()
118 * @generated
119 * @ordered
120 */
121 protected String id4 = ID4_EDEFAULT;
122
123 /**
124 * The cached value of the '{@link #getBeneficiary() <em>Beneficiary</em>}' reference.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @see #getBeneficiary()
128 * @generated
129 * @ordered
130 */
131 protected Physical_Person beneficiary;
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 protected ExpenseImpl() {
139 super();
140 }
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 @Override
148 protected EClass eStaticClass() {
149 return TaxationPackage.Literals.EXPENSE;
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 @Override
158 public double getDeclared_amount() {
159 return declared_amount;
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public void setDeclared_amount(double newDeclared_amount) {
169 double oldDeclared_amount = declared_amount;
170 declared_amount = newDeclared_amount;
171 if (eNotificationRequired())
172 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__DECLARED_AMOUNT, oldDeclared_amount, declared_amount));
173 }
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 @Override
181 public Expense_Purpose getExpense_purpose() {
182 return expense_purpose;
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 @Override
191 public void setExpense_purpose(Expense_Purpose newExpense_purpose) {
192 Expense_Purpose oldExpense_purpose = expense_purpose;
193 expense_purpose = newExpense_purpose == null ? EXPENSE_PURPOSE_EDEFAULT : newExpense_purpose;
194 if (eNotificationRequired())
195 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__EXPENSE_PURPOSE, oldExpense_purpose, expense_purpose));
196 }
197
198 /**
199 * <!-- begin-user-doc -->
200 * <!-- end-user-doc -->
201 * @generated
202 */
203 @Override
204 public Dependent getDependent() {
205 if (dependent != null && dependent.eIsProxy()) {
206 InternalEObject oldDependent = (InternalEObject)dependent;
207 dependent = (Dependent)eResolveProxy(oldDependent);
208 if (dependent != oldDependent) {
209 if (eNotificationRequired())
210 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.EXPENSE__DEPENDENT, oldDependent, dependent));
211 }
212 }
213 return dependent;
214 }
215
216 /**
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @generated
220 */
221 public Dependent basicGetDependent() {
222 return dependent;
223 }
224
225 /**
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 */
230 public NotificationChain basicSetDependent(Dependent newDependent, NotificationChain msgs) {
231 Dependent oldDependent = dependent;
232 dependent = newDependent;
233 if (eNotificationRequired()) {
234 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__DEPENDENT, oldDependent, newDependent);
235 if (msgs == null) msgs = notification; else msgs.add(notification);
236 }
237 return msgs;
238 }
239
240 /**
241 * <!-- begin-user-doc -->
242 * <!-- end-user-doc -->
243 * @generated
244 */
245 @Override
246 public void setDependent(Dependent newDependent) {
247 if (newDependent != dependent) {
248 NotificationChain msgs = null;
249 if (dependent != null)
250 msgs = ((InternalEObject)dependent).eInverseRemove(this, TaxationPackage.DEPENDENT__EXPENSE, Dependent.class, msgs);
251 if (newDependent != null)
252 msgs = ((InternalEObject)newDependent).eInverseAdd(this, TaxationPackage.DEPENDENT__EXPENSE, Dependent.class, msgs);
253 msgs = basicSetDependent(newDependent, msgs);
254 if (msgs != null) msgs.dispatch();
255 }
256 else if (eNotificationRequired())
257 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__DEPENDENT, newDependent, newDependent));
258 }
259
260 /**
261 * <!-- begin-user-doc -->
262 * <!-- end-user-doc -->
263 * @generated
264 */
265 @Override
266 public FromAgent getFrom_agent() {
267 if (from_agent != null && from_agent.eIsProxy()) {
268 InternalEObject oldFrom_agent = (InternalEObject)from_agent;
269 from_agent = (FromAgent)eResolveProxy(oldFrom_agent);
270 if (from_agent != oldFrom_agent) {
271 if (eNotificationRequired())
272 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.EXPENSE__FROM_AGENT, oldFrom_agent, from_agent));
273 }
274 }
275 return from_agent;
276 }
277
278 /**
279 * <!-- begin-user-doc -->
280 * <!-- end-user-doc -->
281 * @generated
282 */
283 public FromAgent basicGetFrom_agent() {
284 return from_agent;
285 }
286
287 /**
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 public NotificationChain basicSetFrom_agent(FromAgent newFrom_agent, NotificationChain msgs) {
293 FromAgent oldFrom_agent = from_agent;
294 from_agent = newFrom_agent;
295 if (eNotificationRequired()) {
296 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__FROM_AGENT, oldFrom_agent, newFrom_agent);
297 if (msgs == null) msgs = notification; else msgs.add(notification);
298 }
299 return msgs;
300 }
301
302 /**
303 * <!-- begin-user-doc -->
304 * <!-- end-user-doc -->
305 * @generated
306 */
307 @Override
308 public void setFrom_agent(FromAgent newFrom_agent) {
309 if (newFrom_agent != from_agent) {
310 NotificationChain msgs = null;
311 if (from_agent != null)
312 msgs = ((InternalEObject)from_agent).eInverseRemove(this, TaxationPackage.FROM_AGENT__EXPENSE, FromAgent.class, msgs);
313 if (newFrom_agent != null)
314 msgs = ((InternalEObject)newFrom_agent).eInverseAdd(this, TaxationPackage.FROM_AGENT__EXPENSE, FromAgent.class, msgs);
315 msgs = basicSetFrom_agent(newFrom_agent, msgs);
316 if (msgs != null) msgs.dispatch();
317 }
318 else if (eNotificationRequired())
319 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__FROM_AGENT, newFrom_agent, newFrom_agent));
320 }
321
322 /**
323 * <!-- begin-user-doc -->
324 * <!-- end-user-doc -->
325 * @generated
326 */
327 @Override
328 public Income getIncome() {
329 if (eContainerFeatureID() != TaxationPackage.EXPENSE__INCOME) return null;
330 return (Income)eInternalContainer();
331 }
332
333 /**
334 * <!-- begin-user-doc -->
335 * <!-- end-user-doc -->
336 * @generated
337 */
338 public NotificationChain basicSetIncome(Income newIncome, NotificationChain msgs) {
339 msgs = eBasicSetContainer((InternalEObject)newIncome, TaxationPackage.EXPENSE__INCOME, msgs);
340 return msgs;
341 }
342
343 /**
344 * <!-- begin-user-doc -->
345 * <!-- end-user-doc -->
346 * @generated
347 */
348 @Override
349 public void setIncome(Income newIncome) {
350 if (newIncome != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.EXPENSE__INCOME && newIncome != null)) {
351 if (EcoreUtil.isAncestor(this, newIncome))
352 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
353 NotificationChain msgs = null;
354 if (eInternalContainer() != null)
355 msgs = eBasicRemoveFromContainer(msgs);
356 if (newIncome != null)
357 msgs = ((InternalEObject)newIncome).eInverseAdd(this, TaxationPackage.INCOME__EXPENSES, Income.class, msgs);
358 msgs = basicSetIncome(newIncome, msgs);
359 if (msgs != null) msgs.dispatch();
360 }
361 else if (eNotificationRequired())
362 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__INCOME, newIncome, newIncome));
363 }
364
365 /**
366 * <!-- begin-user-doc -->
367 * <!-- end-user-doc -->
368 * @generated
369 */
370 @Override
371 public String getId4() {
372 return id4;
373 }
374
375 /**
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @generated
379 */
380 @Override
381 public void setId4(String newId4) {
382 String oldId4 = id4;
383 id4 = newId4;
384 if (eNotificationRequired())
385 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__ID4, oldId4, id4));
386 }
387
388 /**
389 * <!-- begin-user-doc -->
390 * <!-- end-user-doc -->
391 * @generated
392 */
393 @Override
394 public Physical_Person getBeneficiary() {
395 if (beneficiary != null && beneficiary.eIsProxy()) {
396 InternalEObject oldBeneficiary = (InternalEObject)beneficiary;
397 beneficiary = (Physical_Person)eResolveProxy(oldBeneficiary);
398 if (beneficiary != oldBeneficiary) {
399 if (eNotificationRequired())
400 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.EXPENSE__BENEFICIARY, oldBeneficiary, beneficiary));
401 }
402 }
403 return beneficiary;
404 }
405
406 /**
407 * <!-- begin-user-doc -->
408 * <!-- end-user-doc -->
409 * @generated
410 */
411 public Physical_Person basicGetBeneficiary() {
412 return beneficiary;
413 }
414
415 /**
416 * <!-- begin-user-doc -->
417 * <!-- end-user-doc -->
418 * @generated
419 */
420 public NotificationChain basicSetBeneficiary(Physical_Person newBeneficiary, NotificationChain msgs) {
421 Physical_Person oldBeneficiary = beneficiary;
422 beneficiary = newBeneficiary;
423 if (eNotificationRequired()) {
424 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__BENEFICIARY, oldBeneficiary, newBeneficiary);
425 if (msgs == null) msgs = notification; else msgs.add(notification);
426 }
427 return msgs;
428 }
429
430 /**
431 * <!-- begin-user-doc -->
432 * <!-- end-user-doc -->
433 * @generated
434 */
435 @Override
436 public void setBeneficiary(Physical_Person newBeneficiary) {
437 if (newBeneficiary != beneficiary) {
438 NotificationChain msgs = null;
439 if (beneficiary != null)
440 msgs = ((InternalEObject)beneficiary).eInverseRemove(this, TaxationPackage.PHYSICAL_PERSON__EXPENSES, Physical_Person.class, msgs);
441 if (newBeneficiary != null)
442 msgs = ((InternalEObject)newBeneficiary).eInverseAdd(this, TaxationPackage.PHYSICAL_PERSON__EXPENSES, Physical_Person.class, msgs);
443 msgs = basicSetBeneficiary(newBeneficiary, msgs);
444 if (msgs != null) msgs.dispatch();
445 }
446 else if (eNotificationRequired())
447 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXPENSE__BENEFICIARY, newBeneficiary, newBeneficiary));
448 }
449
450 /**
451 * <!-- begin-user-doc -->
452 * <!-- end-user-doc -->
453 * @generated
454 */
455 @Override
456 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
457 switch (featureID) {
458 case TaxationPackage.EXPENSE__DEPENDENT:
459 if (dependent != null)
460 msgs = ((InternalEObject)dependent).eInverseRemove(this, TaxationPackage.DEPENDENT__EXPENSE, Dependent.class, msgs);
461 return basicSetDependent((Dependent)otherEnd, msgs);
462 case TaxationPackage.EXPENSE__FROM_AGENT:
463 if (from_agent != null)
464 msgs = ((InternalEObject)from_agent).eInverseRemove(this, TaxationPackage.FROM_AGENT__EXPENSE, FromAgent.class, msgs);
465 return basicSetFrom_agent((FromAgent)otherEnd, msgs);
466 case TaxationPackage.EXPENSE__INCOME:
467 if (eInternalContainer() != null)
468 msgs = eBasicRemoveFromContainer(msgs);
469 return basicSetIncome((Income)otherEnd, msgs);
470 case TaxationPackage.EXPENSE__BENEFICIARY:
471 if (beneficiary != null)
472 msgs = ((InternalEObject)beneficiary).eInverseRemove(this, TaxationPackage.PHYSICAL_PERSON__EXPENSES, Physical_Person.class, msgs);
473 return basicSetBeneficiary((Physical_Person)otherEnd, msgs);
474 }
475 return super.eInverseAdd(otherEnd, featureID, msgs);
476 }
477
478 /**
479 * <!-- begin-user-doc -->
480 * <!-- end-user-doc -->
481 * @generated
482 */
483 @Override
484 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
485 switch (featureID) {
486 case TaxationPackage.EXPENSE__DEPENDENT:
487 return basicSetDependent(null, msgs);
488 case TaxationPackage.EXPENSE__FROM_AGENT:
489 return basicSetFrom_agent(null, msgs);
490 case TaxationPackage.EXPENSE__INCOME:
491 return basicSetIncome(null, msgs);
492 case TaxationPackage.EXPENSE__BENEFICIARY:
493 return basicSetBeneficiary(null, msgs);
494 }
495 return super.eInverseRemove(otherEnd, featureID, msgs);
496 }
497
498 /**
499 * <!-- begin-user-doc -->
500 * <!-- end-user-doc -->
501 * @generated
502 */
503 @Override
504 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
505 switch (eContainerFeatureID()) {
506 case TaxationPackage.EXPENSE__INCOME:
507 return eInternalContainer().eInverseRemove(this, TaxationPackage.INCOME__EXPENSES, Income.class, msgs);
508 }
509 return super.eBasicRemoveFromContainerFeature(msgs);
510 }
511
512 /**
513 * <!-- begin-user-doc -->
514 * <!-- end-user-doc -->
515 * @generated
516 */
517 @Override
518 public Object eGet(int featureID, boolean resolve, boolean coreType) {
519 switch (featureID) {
520 case TaxationPackage.EXPENSE__DECLARED_AMOUNT:
521 return getDeclared_amount();
522 case TaxationPackage.EXPENSE__EXPENSE_PURPOSE:
523 return getExpense_purpose();
524 case TaxationPackage.EXPENSE__DEPENDENT:
525 if (resolve) return getDependent();
526 return basicGetDependent();
527 case TaxationPackage.EXPENSE__FROM_AGENT:
528 if (resolve) return getFrom_agent();
529 return basicGetFrom_agent();
530 case TaxationPackage.EXPENSE__INCOME:
531 return getIncome();
532 case TaxationPackage.EXPENSE__ID4:
533 return getId4();
534 case TaxationPackage.EXPENSE__BENEFICIARY:
535 if (resolve) return getBeneficiary();
536 return basicGetBeneficiary();
537 }
538 return super.eGet(featureID, resolve, coreType);
539 }
540
541 /**
542 * <!-- begin-user-doc -->
543 * <!-- end-user-doc -->
544 * @generated
545 */
546 @Override
547 public void eSet(int featureID, Object newValue) {
548 switch (featureID) {
549 case TaxationPackage.EXPENSE__DECLARED_AMOUNT:
550 setDeclared_amount((Double)newValue);
551 return;
552 case TaxationPackage.EXPENSE__EXPENSE_PURPOSE:
553 setExpense_purpose((Expense_Purpose)newValue);
554 return;
555 case TaxationPackage.EXPENSE__DEPENDENT:
556 setDependent((Dependent)newValue);
557 return;
558 case TaxationPackage.EXPENSE__FROM_AGENT:
559 setFrom_agent((FromAgent)newValue);
560 return;
561 case TaxationPackage.EXPENSE__INCOME:
562 setIncome((Income)newValue);
563 return;
564 case TaxationPackage.EXPENSE__ID4:
565 setId4((String)newValue);
566 return;
567 case TaxationPackage.EXPENSE__BENEFICIARY:
568 setBeneficiary((Physical_Person)newValue);
569 return;
570 }
571 super.eSet(featureID, newValue);
572 }
573
574 /**
575 * <!-- begin-user-doc -->
576 * <!-- end-user-doc -->
577 * @generated
578 */
579 @Override
580 public void eUnset(int featureID) {
581 switch (featureID) {
582 case TaxationPackage.EXPENSE__DECLARED_AMOUNT:
583 setDeclared_amount(DECLARED_AMOUNT_EDEFAULT);
584 return;
585 case TaxationPackage.EXPENSE__EXPENSE_PURPOSE:
586 setExpense_purpose(EXPENSE_PURPOSE_EDEFAULT);
587 return;
588 case TaxationPackage.EXPENSE__DEPENDENT:
589 setDependent((Dependent)null);
590 return;
591 case TaxationPackage.EXPENSE__FROM_AGENT:
592 setFrom_agent((FromAgent)null);
593 return;
594 case TaxationPackage.EXPENSE__INCOME:
595 setIncome((Income)null);
596 return;
597 case TaxationPackage.EXPENSE__ID4:
598 setId4(ID4_EDEFAULT);
599 return;
600 case TaxationPackage.EXPENSE__BENEFICIARY:
601 setBeneficiary((Physical_Person)null);
602 return;
603 }
604 super.eUnset(featureID);
605 }
606
607 /**
608 * <!-- begin-user-doc -->
609 * <!-- end-user-doc -->
610 * @generated
611 */
612 @Override
613 public boolean eIsSet(int featureID) {
614 switch (featureID) {
615 case TaxationPackage.EXPENSE__DECLARED_AMOUNT:
616 return declared_amount != DECLARED_AMOUNT_EDEFAULT;
617 case TaxationPackage.EXPENSE__EXPENSE_PURPOSE:
618 return expense_purpose != EXPENSE_PURPOSE_EDEFAULT;
619 case TaxationPackage.EXPENSE__DEPENDENT:
620 return dependent != null;
621 case TaxationPackage.EXPENSE__FROM_AGENT:
622 return from_agent != null;
623 case TaxationPackage.EXPENSE__INCOME:
624 return getIncome() != null;
625 case TaxationPackage.EXPENSE__ID4:
626 return ID4_EDEFAULT == null ? id4 != null : !ID4_EDEFAULT.equals(id4);
627 case TaxationPackage.EXPENSE__BENEFICIARY:
628 return beneficiary != null;
629 }
630 return super.eIsSet(featureID);
631 }
632
633 /**
634 * <!-- begin-user-doc -->
635 * <!-- end-user-doc -->
636 * @generated
637 */
638 @Override
639 public String toString() {
640 if (eIsProxy()) return super.toString();
641
642 StringBuilder result = new StringBuilder(super.toString());
643 result.append(" (declared_amount: ");
644 result.append(declared_amount);
645 result.append(", expense_purpose: ");
646 result.append(expense_purpose);
647 result.append(", id4: ");
648 result.append(id4);
649 result.append(')');
650 return result.toString();
651 }
652
653} //ExpenseImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/External_AllowanceImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/External_AllowanceImpl.java
new file mode 100644
index 00000000..0d0119a5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/External_AllowanceImpl.java
@@ -0,0 +1,555 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Dependent;
6import Taxation.External_Allowance;
7import Taxation.Grantor;
8import Taxation.Physical_Person;
9import Taxation.TaxationPackage;
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.InternalEObject;
15
16import org.eclipse.emf.ecore.impl.ENotificationImpl;
17import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
18
19import org.eclipse.emf.ecore.util.EcoreUtil;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>External Allowance</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link Taxation.impl.External_AllowanceImpl#getAmount <em>Amount</em>}</li>
30 * <li>{@link Taxation.impl.External_AllowanceImpl#getGrantor <em>Grantor</em>}</li>
31 * <li>{@link Taxation.impl.External_AllowanceImpl#getStarting_year <em>Starting year</em>}</li>
32 * <li>{@link Taxation.impl.External_AllowanceImpl#getEnding_year <em>Ending year</em>}</li>
33 * <li>{@link Taxation.impl.External_AllowanceImpl#getReciver <em>Reciver</em>}</li>
34 * <li>{@link Taxation.impl.External_AllowanceImpl#getId5 <em>Id5</em>}</li>
35 * <li>{@link Taxation.impl.External_AllowanceImpl#getPerson <em>Person</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public class External_AllowanceImpl extends MinimalEObjectImpl.Container implements External_Allowance {
41 /**
42 * The default value of the '{@link #getAmount() <em>Amount</em>}' attribute.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getAmount()
46 * @generated
47 * @ordered
48 */
49 protected static final double AMOUNT_EDEFAULT = 0.0;
50
51 /**
52 * The cached value of the '{@link #getAmount() <em>Amount</em>}' attribute.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getAmount()
56 * @generated
57 * @ordered
58 */
59 protected double amount = AMOUNT_EDEFAULT;
60
61 /**
62 * The default value of the '{@link #getGrantor() <em>Grantor</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #getGrantor()
66 * @generated
67 * @ordered
68 */
69 protected static final Grantor GRANTOR_EDEFAULT = Grantor.WWW;
70
71 /**
72 * The cached value of the '{@link #getGrantor() <em>Grantor</em>}' attribute.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #getGrantor()
76 * @generated
77 * @ordered
78 */
79 protected Grantor grantor = GRANTOR_EDEFAULT;
80
81 /**
82 * The default value of the '{@link #getStarting_year() <em>Starting year</em>}' attribute.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #getStarting_year()
86 * @generated
87 * @ordered
88 */
89 protected static final int STARTING_YEAR_EDEFAULT = 0;
90
91 /**
92 * The cached value of the '{@link #getStarting_year() <em>Starting year</em>}' attribute.
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @see #getStarting_year()
96 * @generated
97 * @ordered
98 */
99 protected int starting_year = STARTING_YEAR_EDEFAULT;
100
101 /**
102 * The default value of the '{@link #getEnding_year() <em>Ending year</em>}' attribute.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @see #getEnding_year()
106 * @generated
107 * @ordered
108 */
109 protected static final int ENDING_YEAR_EDEFAULT = 0;
110
111 /**
112 * The cached value of the '{@link #getEnding_year() <em>Ending year</em>}' attribute.
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @see #getEnding_year()
116 * @generated
117 * @ordered
118 */
119 protected int ending_year = ENDING_YEAR_EDEFAULT;
120
121 /**
122 * The cached value of the '{@link #getReciver() <em>Reciver</em>}' reference.
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @see #getReciver()
126 * @generated
127 * @ordered
128 */
129 protected Physical_Person reciver;
130
131 /**
132 * The default value of the '{@link #getId5() <em>Id5</em>}' attribute.
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @see #getId5()
136 * @generated
137 * @ordered
138 */
139 protected static final String ID5_EDEFAULT = null;
140
141 /**
142 * The cached value of the '{@link #getId5() <em>Id5</em>}' attribute.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @see #getId5()
146 * @generated
147 * @ordered
148 */
149 protected String id5 = ID5_EDEFAULT;
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 protected External_AllowanceImpl() {
157 super();
158 }
159
160 /**
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @generated
164 */
165 @Override
166 protected EClass eStaticClass() {
167 return TaxationPackage.Literals.EXTERNAL_ALLOWANCE;
168 }
169
170 /**
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 */
175 @Override
176 public double getAmount() {
177 return amount;
178 }
179
180 /**
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 @Override
186 public void setAmount(double newAmount) {
187 double oldAmount = amount;
188 amount = newAmount;
189 if (eNotificationRequired())
190 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__AMOUNT, oldAmount, amount));
191 }
192
193 /**
194 * <!-- begin-user-doc -->
195 * <!-- end-user-doc -->
196 * @generated
197 */
198 @Override
199 public Grantor getGrantor() {
200 return grantor;
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public void setGrantor(Grantor newGrantor) {
210 Grantor oldGrantor = grantor;
211 grantor = newGrantor == null ? GRANTOR_EDEFAULT : newGrantor;
212 if (eNotificationRequired())
213 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__GRANTOR, oldGrantor, grantor));
214 }
215
216 /**
217 * <!-- begin-user-doc -->
218 * <!-- end-user-doc -->
219 * @generated
220 */
221 @Override
222 public int getStarting_year() {
223 return starting_year;
224 }
225
226 /**
227 * <!-- begin-user-doc -->
228 * <!-- end-user-doc -->
229 * @generated
230 */
231 @Override
232 public void setStarting_year(int newStarting_year) {
233 int oldStarting_year = starting_year;
234 starting_year = newStarting_year;
235 if (eNotificationRequired())
236 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__STARTING_YEAR, oldStarting_year, starting_year));
237 }
238
239 /**
240 * <!-- begin-user-doc -->
241 * <!-- end-user-doc -->
242 * @generated
243 */
244 @Override
245 public int getEnding_year() {
246 return ending_year;
247 }
248
249 /**
250 * <!-- begin-user-doc -->
251 * <!-- end-user-doc -->
252 * @generated
253 */
254 @Override
255 public void setEnding_year(int newEnding_year) {
256 int oldEnding_year = ending_year;
257 ending_year = newEnding_year;
258 if (eNotificationRequired())
259 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__ENDING_YEAR, oldEnding_year, ending_year));
260 }
261
262 /**
263 * <!-- begin-user-doc -->
264 * <!-- end-user-doc -->
265 * @generated
266 */
267 @Override
268 public Physical_Person getReciver() {
269 if (reciver != null && reciver.eIsProxy()) {
270 InternalEObject oldReciver = (InternalEObject)reciver;
271 reciver = (Physical_Person)eResolveProxy(oldReciver);
272 if (reciver != oldReciver) {
273 if (eNotificationRequired())
274 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.EXTERNAL_ALLOWANCE__RECIVER, oldReciver, reciver));
275 }
276 }
277 return reciver;
278 }
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 public Physical_Person basicGetReciver() {
286 return reciver;
287 }
288
289 /**
290 * <!-- begin-user-doc -->
291 * <!-- end-user-doc -->
292 * @generated
293 */
294 @Override
295 public void setReciver(Physical_Person newReciver) {
296 Physical_Person oldReciver = reciver;
297 reciver = newReciver;
298 if (eNotificationRequired())
299 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__RECIVER, oldReciver, reciver));
300 }
301
302 /**
303 * <!-- begin-user-doc -->
304 * <!-- end-user-doc -->
305 * @generated
306 */
307 @Override
308 public String getId5() {
309 return id5;
310 }
311
312 /**
313 * <!-- begin-user-doc -->
314 * <!-- end-user-doc -->
315 * @generated
316 */
317 @Override
318 public void setId5(String newId5) {
319 String oldId5 = id5;
320 id5 = newId5;
321 if (eNotificationRequired())
322 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__ID5, oldId5, id5));
323 }
324
325 /**
326 * <!-- begin-user-doc -->
327 * <!-- end-user-doc -->
328 * @generated
329 */
330 @Override
331 public Dependent getPerson() {
332 if (eContainerFeatureID() != TaxationPackage.EXTERNAL_ALLOWANCE__PERSON) return null;
333 return (Dependent)eInternalContainer();
334 }
335
336 /**
337 * <!-- begin-user-doc -->
338 * <!-- end-user-doc -->
339 * @generated
340 */
341 public NotificationChain basicSetPerson(Dependent newPerson, NotificationChain msgs) {
342 msgs = eBasicSetContainer((InternalEObject)newPerson, TaxationPackage.EXTERNAL_ALLOWANCE__PERSON, msgs);
343 return msgs;
344 }
345
346 /**
347 * <!-- begin-user-doc -->
348 * <!-- end-user-doc -->
349 * @generated
350 */
351 @Override
352 public void setPerson(Dependent newPerson) {
353 if (newPerson != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.EXTERNAL_ALLOWANCE__PERSON && newPerson != null)) {
354 if (EcoreUtil.isAncestor(this, newPerson))
355 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
356 NotificationChain msgs = null;
357 if (eInternalContainer() != null)
358 msgs = eBasicRemoveFromContainer(msgs);
359 if (newPerson != null)
360 msgs = ((InternalEObject)newPerson).eInverseAdd(this, TaxationPackage.DEPENDENT__ALLOWANCES, Dependent.class, msgs);
361 msgs = basicSetPerson(newPerson, msgs);
362 if (msgs != null) msgs.dispatch();
363 }
364 else if (eNotificationRequired())
365 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTERNAL_ALLOWANCE__PERSON, newPerson, newPerson));
366 }
367
368 /**
369 * <!-- begin-user-doc -->
370 * <!-- end-user-doc -->
371 * @generated
372 */
373 @Override
374 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
375 switch (featureID) {
376 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
377 if (eInternalContainer() != null)
378 msgs = eBasicRemoveFromContainer(msgs);
379 return basicSetPerson((Dependent)otherEnd, msgs);
380 }
381 return super.eInverseAdd(otherEnd, featureID, msgs);
382 }
383
384 /**
385 * <!-- begin-user-doc -->
386 * <!-- end-user-doc -->
387 * @generated
388 */
389 @Override
390 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
391 switch (featureID) {
392 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
393 return basicSetPerson(null, msgs);
394 }
395 return super.eInverseRemove(otherEnd, featureID, msgs);
396 }
397
398 /**
399 * <!-- begin-user-doc -->
400 * <!-- end-user-doc -->
401 * @generated
402 */
403 @Override
404 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
405 switch (eContainerFeatureID()) {
406 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
407 return eInternalContainer().eInverseRemove(this, TaxationPackage.DEPENDENT__ALLOWANCES, Dependent.class, msgs);
408 }
409 return super.eBasicRemoveFromContainerFeature(msgs);
410 }
411
412 /**
413 * <!-- begin-user-doc -->
414 * <!-- end-user-doc -->
415 * @generated
416 */
417 @Override
418 public Object eGet(int featureID, boolean resolve, boolean coreType) {
419 switch (featureID) {
420 case TaxationPackage.EXTERNAL_ALLOWANCE__AMOUNT:
421 return getAmount();
422 case TaxationPackage.EXTERNAL_ALLOWANCE__GRANTOR:
423 return getGrantor();
424 case TaxationPackage.EXTERNAL_ALLOWANCE__STARTING_YEAR:
425 return getStarting_year();
426 case TaxationPackage.EXTERNAL_ALLOWANCE__ENDING_YEAR:
427 return getEnding_year();
428 case TaxationPackage.EXTERNAL_ALLOWANCE__RECIVER:
429 if (resolve) return getReciver();
430 return basicGetReciver();
431 case TaxationPackage.EXTERNAL_ALLOWANCE__ID5:
432 return getId5();
433 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
434 return getPerson();
435 }
436 return super.eGet(featureID, resolve, coreType);
437 }
438
439 /**
440 * <!-- begin-user-doc -->
441 * <!-- end-user-doc -->
442 * @generated
443 */
444 @Override
445 public void eSet(int featureID, Object newValue) {
446 switch (featureID) {
447 case TaxationPackage.EXTERNAL_ALLOWANCE__AMOUNT:
448 setAmount((Double)newValue);
449 return;
450 case TaxationPackage.EXTERNAL_ALLOWANCE__GRANTOR:
451 setGrantor((Grantor)newValue);
452 return;
453 case TaxationPackage.EXTERNAL_ALLOWANCE__STARTING_YEAR:
454 setStarting_year((Integer)newValue);
455 return;
456 case TaxationPackage.EXTERNAL_ALLOWANCE__ENDING_YEAR:
457 setEnding_year((Integer)newValue);
458 return;
459 case TaxationPackage.EXTERNAL_ALLOWANCE__RECIVER:
460 setReciver((Physical_Person)newValue);
461 return;
462 case TaxationPackage.EXTERNAL_ALLOWANCE__ID5:
463 setId5((String)newValue);
464 return;
465 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
466 setPerson((Dependent)newValue);
467 return;
468 }
469 super.eSet(featureID, newValue);
470 }
471
472 /**
473 * <!-- begin-user-doc -->
474 * <!-- end-user-doc -->
475 * @generated
476 */
477 @Override
478 public void eUnset(int featureID) {
479 switch (featureID) {
480 case TaxationPackage.EXTERNAL_ALLOWANCE__AMOUNT:
481 setAmount(AMOUNT_EDEFAULT);
482 return;
483 case TaxationPackage.EXTERNAL_ALLOWANCE__GRANTOR:
484 setGrantor(GRANTOR_EDEFAULT);
485 return;
486 case TaxationPackage.EXTERNAL_ALLOWANCE__STARTING_YEAR:
487 setStarting_year(STARTING_YEAR_EDEFAULT);
488 return;
489 case TaxationPackage.EXTERNAL_ALLOWANCE__ENDING_YEAR:
490 setEnding_year(ENDING_YEAR_EDEFAULT);
491 return;
492 case TaxationPackage.EXTERNAL_ALLOWANCE__RECIVER:
493 setReciver((Physical_Person)null);
494 return;
495 case TaxationPackage.EXTERNAL_ALLOWANCE__ID5:
496 setId5(ID5_EDEFAULT);
497 return;
498 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
499 setPerson((Dependent)null);
500 return;
501 }
502 super.eUnset(featureID);
503 }
504
505 /**
506 * <!-- begin-user-doc -->
507 * <!-- end-user-doc -->
508 * @generated
509 */
510 @Override
511 public boolean eIsSet(int featureID) {
512 switch (featureID) {
513 case TaxationPackage.EXTERNAL_ALLOWANCE__AMOUNT:
514 return amount != AMOUNT_EDEFAULT;
515 case TaxationPackage.EXTERNAL_ALLOWANCE__GRANTOR:
516 return grantor != GRANTOR_EDEFAULT;
517 case TaxationPackage.EXTERNAL_ALLOWANCE__STARTING_YEAR:
518 return starting_year != STARTING_YEAR_EDEFAULT;
519 case TaxationPackage.EXTERNAL_ALLOWANCE__ENDING_YEAR:
520 return ending_year != ENDING_YEAR_EDEFAULT;
521 case TaxationPackage.EXTERNAL_ALLOWANCE__RECIVER:
522 return reciver != null;
523 case TaxationPackage.EXTERNAL_ALLOWANCE__ID5:
524 return ID5_EDEFAULT == null ? id5 != null : !ID5_EDEFAULT.equals(id5);
525 case TaxationPackage.EXTERNAL_ALLOWANCE__PERSON:
526 return getPerson() != null;
527 }
528 return super.eIsSet(featureID);
529 }
530
531 /**
532 * <!-- begin-user-doc -->
533 * <!-- end-user-doc -->
534 * @generated
535 */
536 @Override
537 public String toString() {
538 if (eIsProxy()) return super.toString();
539
540 StringBuilder result = new StringBuilder(super.toString());
541 result.append(" (amount: ");
542 result.append(amount);
543 result.append(", grantor: ");
544 result.append(grantor);
545 result.append(", starting_year: ");
546 result.append(starting_year);
547 result.append(", ending_year: ");
548 result.append(ending_year);
549 result.append(", id5: ");
550 result.append(id5);
551 result.append(')');
552 return result.toString();
553 }
554
555} //External_AllowanceImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Extraordinary_Expense_CEImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Extraordinary_Expense_CEImpl.java
new file mode 100644
index 00000000..ce69931c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Extraordinary_Expense_CEImpl.java
@@ -0,0 +1,221 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.CE_Type;
6import Taxation.Extraordinary_Expense_CE;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>Extraordinary Expense CE</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.Extraordinary_Expense_CEImpl#getThresholded_deduction_percentage <em>Thresholded deduction percentage</em>}</li>
24 * <li>{@link Taxation.impl.Extraordinary_Expense_CEImpl#getCe_type <em>Ce type</em>}</li>
25 * </ul>
26 *
27 * @generated
28 */
29public class Extraordinary_Expense_CEImpl extends ExpenseImpl implements Extraordinary_Expense_CE {
30 /**
31 * The default value of the '{@link #getThresholded_deduction_percentage() <em>Thresholded deduction percentage</em>}' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @see #getThresholded_deduction_percentage()
35 * @generated
36 * @ordered
37 */
38 protected static final double THRESHOLDED_DEDUCTION_PERCENTAGE_EDEFAULT = 0.0;
39
40 /**
41 * The cached value of the '{@link #getThresholded_deduction_percentage() <em>Thresholded deduction percentage</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getThresholded_deduction_percentage()
45 * @generated
46 * @ordered
47 */
48 protected double thresholded_deduction_percentage = THRESHOLDED_DEDUCTION_PERCENTAGE_EDEFAULT;
49
50 /**
51 * The default value of the '{@link #getCe_type() <em>Ce type</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #getCe_type()
55 * @generated
56 * @ordered
57 */
58 protected static final CE_Type CE_TYPE_EDEFAULT = CE_Type.INALIDITY_AND_INFIRMITY;
59
60 /**
61 * The cached value of the '{@link #getCe_type() <em>Ce type</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #getCe_type()
65 * @generated
66 * @ordered
67 */
68 protected CE_Type ce_type = CE_TYPE_EDEFAULT;
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 protected Extraordinary_Expense_CEImpl() {
76 super();
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 protected EClass eStaticClass() {
86 return TaxationPackage.Literals.EXTRAORDINARY_EXPENSE_CE;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 @Override
95 public double getThresholded_deduction_percentage() {
96 return thresholded_deduction_percentage;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setThresholded_deduction_percentage(double newThresholded_deduction_percentage) {
106 double oldThresholded_deduction_percentage = thresholded_deduction_percentage;
107 thresholded_deduction_percentage = newThresholded_deduction_percentage;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE, oldThresholded_deduction_percentage, thresholded_deduction_percentage));
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
118 public CE_Type getCe_type() {
119 return ce_type;
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public void setCe_type(CE_Type newCe_type) {
129 CE_Type oldCe_type = ce_type;
130 ce_type = newCe_type == null ? CE_TYPE_EDEFAULT : newCe_type;
131 if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.EXTRAORDINARY_EXPENSE_CE__CE_TYPE, oldCe_type, ce_type));
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public Object eGet(int featureID, boolean resolve, boolean coreType) {
142 switch (featureID) {
143 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE:
144 return getThresholded_deduction_percentage();
145 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__CE_TYPE:
146 return getCe_type();
147 }
148 return super.eGet(featureID, resolve, coreType);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public void eSet(int featureID, Object newValue) {
158 switch (featureID) {
159 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE:
160 setThresholded_deduction_percentage((Double)newValue);
161 return;
162 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__CE_TYPE:
163 setCe_type((CE_Type)newValue);
164 return;
165 }
166 super.eSet(featureID, newValue);
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 @Override
175 public void eUnset(int featureID) {
176 switch (featureID) {
177 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE:
178 setThresholded_deduction_percentage(THRESHOLDED_DEDUCTION_PERCENTAGE_EDEFAULT);
179 return;
180 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__CE_TYPE:
181 setCe_type(CE_TYPE_EDEFAULT);
182 return;
183 }
184 super.eUnset(featureID);
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public boolean eIsSet(int featureID) {
194 switch (featureID) {
195 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE:
196 return thresholded_deduction_percentage != THRESHOLDED_DEDUCTION_PERCENTAGE_EDEFAULT;
197 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE__CE_TYPE:
198 return ce_type != CE_TYPE_EDEFAULT;
199 }
200 return super.eIsSet(featureID);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public String toString() {
210 if (eIsProxy()) return super.toString();
211
212 StringBuilder result = new StringBuilder(super.toString());
213 result.append(" (thresholded_deduction_percentage: ");
214 result.append(thresholded_deduction_percentage);
215 result.append(", ce_type: ");
216 result.append(ce_type);
217 result.append(')');
218 return result.toString();
219 }
220
221} //Extraordinary_Expense_CEImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FDImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FDImpl.java
new file mode 100644
index 00000000..70b890f3
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FDImpl.java
@@ -0,0 +1,220 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.FD;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>FD</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.FDImpl#getDistance_declared_in_january <em>Distance declared in january</em>}</li>
23 * <li>{@link Taxation.impl.FDImpl#getCalculated_distance <em>Calculated distance</em>}</li>
24 * </ul>
25 *
26 * @generated
27 */
28public class FDImpl extends Professional_Expenses_DeductionImpl implements FD {
29 /**
30 * The default value of the '{@link #getDistance_declared_in_january() <em>Distance declared in january</em>}' attribute.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @see #getDistance_declared_in_january()
34 * @generated
35 * @ordered
36 */
37 protected static final double DISTANCE_DECLARED_IN_JANUARY_EDEFAULT = 0.0;
38
39 /**
40 * The cached value of the '{@link #getDistance_declared_in_january() <em>Distance declared in january</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getDistance_declared_in_january()
44 * @generated
45 * @ordered
46 */
47 protected double distance_declared_in_january = DISTANCE_DECLARED_IN_JANUARY_EDEFAULT;
48
49 /**
50 * The default value of the '{@link #getCalculated_distance() <em>Calculated distance</em>}' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #getCalculated_distance()
54 * @generated
55 * @ordered
56 */
57 protected static final double CALCULATED_DISTANCE_EDEFAULT = 0.0;
58
59 /**
60 * The cached value of the '{@link #getCalculated_distance() <em>Calculated distance</em>}' attribute.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see #getCalculated_distance()
64 * @generated
65 * @ordered
66 */
67 protected double calculated_distance = CALCULATED_DISTANCE_EDEFAULT;
68
69 /**
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @generated
73 */
74 protected FDImpl() {
75 super();
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 protected EClass eStaticClass() {
85 return TaxationPackage.Literals.FD;
86 }
87
88 /**
89 * <!-- begin-user-doc -->
90 * <!-- end-user-doc -->
91 * @generated
92 */
93 @Override
94 public double getDistance_declared_in_january() {
95 return distance_declared_in_january;
96 }
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 @Override
104 public void setDistance_declared_in_january(double newDistance_declared_in_january) {
105 double oldDistance_declared_in_january = distance_declared_in_january;
106 distance_declared_in_january = newDistance_declared_in_january;
107 if (eNotificationRequired())
108 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FD__DISTANCE_DECLARED_IN_JANUARY, oldDistance_declared_in_january, distance_declared_in_january));
109 }
110
111 /**
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @generated
115 */
116 @Override
117 public double getCalculated_distance() {
118 return calculated_distance;
119 }
120
121 /**
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @generated
125 */
126 @Override
127 public void setCalculated_distance(double newCalculated_distance) {
128 double oldCalculated_distance = calculated_distance;
129 calculated_distance = newCalculated_distance;
130 if (eNotificationRequired())
131 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FD__CALCULATED_DISTANCE, oldCalculated_distance, calculated_distance));
132 }
133
134 /**
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @generated
138 */
139 @Override
140 public Object eGet(int featureID, boolean resolve, boolean coreType) {
141 switch (featureID) {
142 case TaxationPackage.FD__DISTANCE_DECLARED_IN_JANUARY:
143 return getDistance_declared_in_january();
144 case TaxationPackage.FD__CALCULATED_DISTANCE:
145 return getCalculated_distance();
146 }
147 return super.eGet(featureID, resolve, coreType);
148 }
149
150 /**
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @generated
154 */
155 @Override
156 public void eSet(int featureID, Object newValue) {
157 switch (featureID) {
158 case TaxationPackage.FD__DISTANCE_DECLARED_IN_JANUARY:
159 setDistance_declared_in_january((Double)newValue);
160 return;
161 case TaxationPackage.FD__CALCULATED_DISTANCE:
162 setCalculated_distance((Double)newValue);
163 return;
164 }
165 super.eSet(featureID, newValue);
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 public void eUnset(int featureID) {
175 switch (featureID) {
176 case TaxationPackage.FD__DISTANCE_DECLARED_IN_JANUARY:
177 setDistance_declared_in_january(DISTANCE_DECLARED_IN_JANUARY_EDEFAULT);
178 return;
179 case TaxationPackage.FD__CALCULATED_DISTANCE:
180 setCalculated_distance(CALCULATED_DISTANCE_EDEFAULT);
181 return;
182 }
183 super.eUnset(featureID);
184 }
185
186 /**
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @generated
190 */
191 @Override
192 public boolean eIsSet(int featureID) {
193 switch (featureID) {
194 case TaxationPackage.FD__DISTANCE_DECLARED_IN_JANUARY:
195 return distance_declared_in_january != DISTANCE_DECLARED_IN_JANUARY_EDEFAULT;
196 case TaxationPackage.FD__CALCULATED_DISTANCE:
197 return calculated_distance != CALCULATED_DISTANCE_EDEFAULT;
198 }
199 return super.eIsSet(featureID);
200 }
201
202 /**
203 * <!-- begin-user-doc -->
204 * <!-- end-user-doc -->
205 * @generated
206 */
207 @Override
208 public String toString() {
209 if (eIsProxy()) return super.toString();
210
211 StringBuilder result = new StringBuilder(super.toString());
212 result.append(" (distance_declared_in_january: ");
213 result.append(distance_declared_in_january);
214 result.append(", calculated_distance: ");
215 result.append(calculated_distance);
216 result.append(')');
217 return result.toString();
218 }
219
220} //FDImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FOImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FOImpl.java
new file mode 100644
index 00000000..d03ee8bc
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FOImpl.java
@@ -0,0 +1,165 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.FO;
6import Taxation.TaxationPackage;
7import Taxation.Type_of_Rate;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>FO</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.FOImpl#getRate_type_for_FO <em>Rate type for FO</em>}</li>
24 * </ul>
25 *
26 * @generated
27 */
28public class FOImpl extends Professional_Expenses_DeductionImpl implements FO {
29 /**
30 * The default value of the '{@link #getRate_type_for_FO() <em>Rate type for FO</em>}' attribute.
31 * <!-- begin-user-doc -->
32 * <!-- end-user-doc -->
33 * @see #getRate_type_for_FO()
34 * @generated
35 * @ordered
36 */
37 protected static final Type_of_Rate RATE_TYPE_FOR_FO_EDEFAULT = Type_of_Rate.REGULAR;
38
39 /**
40 * The cached value of the '{@link #getRate_type_for_FO() <em>Rate type for FO</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getRate_type_for_FO()
44 * @generated
45 * @ordered
46 */
47 protected Type_of_Rate rate_type_for_FO = RATE_TYPE_FOR_FO_EDEFAULT;
48
49 /**
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @generated
53 */
54 protected FOImpl() {
55 super();
56 }
57
58 /**
59 * <!-- begin-user-doc -->
60 * <!-- end-user-doc -->
61 * @generated
62 */
63 @Override
64 protected EClass eStaticClass() {
65 return TaxationPackage.Literals.FO;
66 }
67
68 /**
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @generated
72 */
73 @Override
74 public Type_of_Rate getRate_type_for_FO() {
75 return rate_type_for_FO;
76 }
77
78 /**
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 */
83 @Override
84 public void setRate_type_for_FO(Type_of_Rate newRate_type_for_FO) {
85 Type_of_Rate oldRate_type_for_FO = rate_type_for_FO;
86 rate_type_for_FO = newRate_type_for_FO == null ? RATE_TYPE_FOR_FO_EDEFAULT : newRate_type_for_FO;
87 if (eNotificationRequired())
88 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FO__RATE_TYPE_FOR_FO, oldRate_type_for_FO, rate_type_for_FO));
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 public Object eGet(int featureID, boolean resolve, boolean coreType) {
98 switch (featureID) {
99 case TaxationPackage.FO__RATE_TYPE_FOR_FO:
100 return getRate_type_for_FO();
101 }
102 return super.eGet(featureID, resolve, coreType);
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public void eSet(int featureID, Object newValue) {
112 switch (featureID) {
113 case TaxationPackage.FO__RATE_TYPE_FOR_FO:
114 setRate_type_for_FO((Type_of_Rate)newValue);
115 return;
116 }
117 super.eSet(featureID, newValue);
118 }
119
120 /**
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 @Override
126 public void eUnset(int featureID) {
127 switch (featureID) {
128 case TaxationPackage.FO__RATE_TYPE_FOR_FO:
129 setRate_type_for_FO(RATE_TYPE_FOR_FO_EDEFAULT);
130 return;
131 }
132 super.eUnset(featureID);
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public boolean eIsSet(int featureID) {
142 switch (featureID) {
143 case TaxationPackage.FO__RATE_TYPE_FOR_FO:
144 return rate_type_for_FO != RATE_TYPE_FOR_FO_EDEFAULT;
145 }
146 return super.eIsSet(featureID);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public String toString() {
156 if (eIsProxy()) return super.toString();
157
158 StringBuilder result = new StringBuilder(super.toString());
159 result.append(" (rate_type_for_FO: ");
160 result.append(rate_type_for_FO);
161 result.append(')');
162 return result.toString();
163 }
164
165} //FOImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Fiscal_AddressImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Fiscal_AddressImpl.java
new file mode 100644
index 00000000..70fa328e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Fiscal_AddressImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Fiscal_Address;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Fiscal Address</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Fiscal_AddressImpl extends AddressImpl implements Fiscal_Address {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Fiscal_AddressImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.FISCAL_ADDRESS;
35 }
36
37} //Fiscal_AddressImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Foreign_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Foreign_IncomeImpl.java
new file mode 100644
index 00000000..64c4e9b8
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Foreign_IncomeImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Foreign_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Foreign Income</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Foreign_IncomeImpl extends IncomeImpl implements Foreign_Income {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Foreign_IncomeImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.FOREIGN_INCOME;
35 }
36
37} //Foreign_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromAgentImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromAgentImpl.java
new file mode 100644
index 00000000..930a23de
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromAgentImpl.java
@@ -0,0 +1,505 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Dependent;
6import Taxation.Expense;
7import Taxation.FromAgent;
8import Taxation.Tax_Payer;
9import Taxation.TaxationPackage;
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.InternalEObject;
15
16import org.eclipse.emf.ecore.impl.ENotificationImpl;
17import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
18
19import org.eclipse.emf.ecore.util.EcoreUtil;
20
21/**
22 * <!-- begin-user-doc -->
23 * An implementation of the model object '<em><b>From Agent</b></em>'.
24 * <!-- end-user-doc -->
25 * <p>
26 * The following features are implemented:
27 * </p>
28 * <ul>
29 * <li>{@link Taxation.impl.FromAgentImpl#getTaxPayer <em>Tax Payer</em>}</li>
30 * <li>{@link Taxation.impl.FromAgentImpl#isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care <em>Is dependent eligible for CE Not In Houshold Children Care</em>}</li>
31 * <li>{@link Taxation.impl.FromAgentImpl#getExpense <em>Expense</em>}</li>
32 * <li>{@link Taxation.impl.FromAgentImpl#isIs_eligible_debt <em>Is eligible debt</em>}</li>
33 * <li>{@link Taxation.impl.FromAgentImpl#getDependent <em>Dependent</em>}</li>
34 * </ul>
35 *
36 * @generated
37 */
38public class FromAgentImpl extends MinimalEObjectImpl.Container implements FromAgent {
39 /**
40 * The default value of the '{@link #isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care() <em>Is dependent eligible for CE Not In Houshold Children Care</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care()
44 * @generated
45 * @ordered
46 */
47 protected static final boolean IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE_EDEFAULT = false;
48
49 /**
50 * The cached value of the '{@link #isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care() <em>Is dependent eligible for CE Not In Houshold Children Care</em>}' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care()
54 * @generated
55 * @ordered
56 */
57 protected boolean is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care = IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE_EDEFAULT;
58
59 /**
60 * The cached value of the '{@link #getExpense() <em>Expense</em>}' reference.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see #getExpense()
64 * @generated
65 * @ordered
66 */
67 protected Expense expense;
68
69 /**
70 * The default value of the '{@link #isIs_eligible_debt() <em>Is eligible debt</em>}' attribute.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @see #isIs_eligible_debt()
74 * @generated
75 * @ordered
76 */
77 protected static final boolean IS_ELIGIBLE_DEBT_EDEFAULT = false;
78
79 /**
80 * The cached value of the '{@link #isIs_eligible_debt() <em>Is eligible debt</em>}' attribute.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @see #isIs_eligible_debt()
84 * @generated
85 * @ordered
86 */
87 protected boolean is_eligible_debt = IS_ELIGIBLE_DEBT_EDEFAULT;
88
89 /**
90 * The cached value of the '{@link #getDependent() <em>Dependent</em>}' reference.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @see #getDependent()
94 * @generated
95 * @ordered
96 */
97 protected Dependent dependent;
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 protected FromAgentImpl() {
105 super();
106 }
107
108 /**
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 */
113 @Override
114 protected EClass eStaticClass() {
115 return TaxationPackage.Literals.FROM_AGENT;
116 }
117
118 /**
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 */
123 @Override
124 public Tax_Payer getTaxPayer() {
125 if (eContainerFeatureID() != TaxationPackage.FROM_AGENT__TAX_PAYER) return null;
126 return (Tax_Payer)eInternalContainer();
127 }
128
129 /**
130 * <!-- begin-user-doc -->
131 * <!-- end-user-doc -->
132 * @generated
133 */
134 public NotificationChain basicSetTaxPayer(Tax_Payer newTaxPayer, NotificationChain msgs) {
135 msgs = eBasicSetContainer((InternalEObject)newTaxPayer, TaxationPackage.FROM_AGENT__TAX_PAYER, msgs);
136 return msgs;
137 }
138
139 /**
140 * <!-- begin-user-doc -->
141 * <!-- end-user-doc -->
142 * @generated
143 */
144 @Override
145 public void setTaxPayer(Tax_Payer newTaxPayer) {
146 if (newTaxPayer != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.FROM_AGENT__TAX_PAYER && newTaxPayer != null)) {
147 if (EcoreUtil.isAncestor(this, newTaxPayer))
148 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
149 NotificationChain msgs = null;
150 if (eInternalContainer() != null)
151 msgs = eBasicRemoveFromContainer(msgs);
152 if (newTaxPayer != null)
153 msgs = ((InternalEObject)newTaxPayer).eInverseAdd(this, TaxationPackage.TAX_PAYER__FROM_AGENT, Tax_Payer.class, msgs);
154 msgs = basicSetTaxPayer(newTaxPayer, msgs);
155 if (msgs != null) msgs.dispatch();
156 }
157 else if (eNotificationRequired())
158 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__TAX_PAYER, newTaxPayer, newTaxPayer));
159 }
160
161 /**
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 */
166 @Override
167 public boolean isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care() {
168 return is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care;
169 }
170
171 /**
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @generated
175 */
176 @Override
177 public void setIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care(boolean newIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care) {
178 boolean oldIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care = is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care;
179 is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care = newIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care;
180 if (eNotificationRequired())
181 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE, oldIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care, is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care));
182 }
183
184 /**
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @generated
188 */
189 @Override
190 public Expense getExpense() {
191 if (expense != null && expense.eIsProxy()) {
192 InternalEObject oldExpense = (InternalEObject)expense;
193 expense = (Expense)eResolveProxy(oldExpense);
194 if (expense != oldExpense) {
195 if (eNotificationRequired())
196 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.FROM_AGENT__EXPENSE, oldExpense, expense));
197 }
198 }
199 return expense;
200 }
201
202 /**
203 * <!-- begin-user-doc -->
204 * <!-- end-user-doc -->
205 * @generated
206 */
207 public Expense basicGetExpense() {
208 return expense;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 public NotificationChain basicSetExpense(Expense newExpense, NotificationChain msgs) {
217 Expense oldExpense = expense;
218 expense = newExpense;
219 if (eNotificationRequired()) {
220 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__EXPENSE, oldExpense, newExpense);
221 if (msgs == null) msgs = notification; else msgs.add(notification);
222 }
223 return msgs;
224 }
225
226 /**
227 * <!-- begin-user-doc -->
228 * <!-- end-user-doc -->
229 * @generated
230 */
231 @Override
232 public void setExpense(Expense newExpense) {
233 if (newExpense != expense) {
234 NotificationChain msgs = null;
235 if (expense != null)
236 msgs = ((InternalEObject)expense).eInverseRemove(this, TaxationPackage.EXPENSE__FROM_AGENT, Expense.class, msgs);
237 if (newExpense != null)
238 msgs = ((InternalEObject)newExpense).eInverseAdd(this, TaxationPackage.EXPENSE__FROM_AGENT, Expense.class, msgs);
239 msgs = basicSetExpense(newExpense, msgs);
240 if (msgs != null) msgs.dispatch();
241 }
242 else if (eNotificationRequired())
243 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__EXPENSE, newExpense, newExpense));
244 }
245
246 /**
247 * <!-- begin-user-doc -->
248 * <!-- end-user-doc -->
249 * @generated
250 */
251 @Override
252 public boolean isIs_eligible_debt() {
253 return is_eligible_debt;
254 }
255
256 /**
257 * <!-- begin-user-doc -->
258 * <!-- end-user-doc -->
259 * @generated
260 */
261 @Override
262 public void setIs_eligible_debt(boolean newIs_eligible_debt) {
263 boolean oldIs_eligible_debt = is_eligible_debt;
264 is_eligible_debt = newIs_eligible_debt;
265 if (eNotificationRequired())
266 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__IS_ELIGIBLE_DEBT, oldIs_eligible_debt, is_eligible_debt));
267 }
268
269 /**
270 * <!-- begin-user-doc -->
271 * <!-- end-user-doc -->
272 * @generated
273 */
274 @Override
275 public Dependent getDependent() {
276 if (dependent != null && dependent.eIsProxy()) {
277 InternalEObject oldDependent = (InternalEObject)dependent;
278 dependent = (Dependent)eResolveProxy(oldDependent);
279 if (dependent != oldDependent) {
280 if (eNotificationRequired())
281 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.FROM_AGENT__DEPENDENT, oldDependent, dependent));
282 }
283 }
284 return dependent;
285 }
286
287 /**
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 public Dependent basicGetDependent() {
293 return dependent;
294 }
295
296 /**
297 * <!-- begin-user-doc -->
298 * <!-- end-user-doc -->
299 * @generated
300 */
301 public NotificationChain basicSetDependent(Dependent newDependent, NotificationChain msgs) {
302 Dependent oldDependent = dependent;
303 dependent = newDependent;
304 if (eNotificationRequired()) {
305 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__DEPENDENT, oldDependent, newDependent);
306 if (msgs == null) msgs = notification; else msgs.add(notification);
307 }
308 return msgs;
309 }
310
311 /**
312 * <!-- begin-user-doc -->
313 * <!-- end-user-doc -->
314 * @generated
315 */
316 @Override
317 public void setDependent(Dependent newDependent) {
318 if (newDependent != dependent) {
319 NotificationChain msgs = null;
320 if (dependent != null)
321 msgs = ((InternalEObject)dependent).eInverseRemove(this, TaxationPackage.DEPENDENT__FROM_AGENT, Dependent.class, msgs);
322 if (newDependent != null)
323 msgs = ((InternalEObject)newDependent).eInverseAdd(this, TaxationPackage.DEPENDENT__FROM_AGENT, Dependent.class, msgs);
324 msgs = basicSetDependent(newDependent, msgs);
325 if (msgs != null) msgs.dispatch();
326 }
327 else if (eNotificationRequired())
328 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_AGENT__DEPENDENT, newDependent, newDependent));
329 }
330
331 /**
332 * <!-- begin-user-doc -->
333 * <!-- end-user-doc -->
334 * @generated
335 */
336 @Override
337 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
338 switch (featureID) {
339 case TaxationPackage.FROM_AGENT__TAX_PAYER:
340 if (eInternalContainer() != null)
341 msgs = eBasicRemoveFromContainer(msgs);
342 return basicSetTaxPayer((Tax_Payer)otherEnd, msgs);
343 case TaxationPackage.FROM_AGENT__EXPENSE:
344 if (expense != null)
345 msgs = ((InternalEObject)expense).eInverseRemove(this, TaxationPackage.EXPENSE__FROM_AGENT, Expense.class, msgs);
346 return basicSetExpense((Expense)otherEnd, msgs);
347 case TaxationPackage.FROM_AGENT__DEPENDENT:
348 if (dependent != null)
349 msgs = ((InternalEObject)dependent).eInverseRemove(this, TaxationPackage.DEPENDENT__FROM_AGENT, Dependent.class, msgs);
350 return basicSetDependent((Dependent)otherEnd, msgs);
351 }
352 return super.eInverseAdd(otherEnd, featureID, msgs);
353 }
354
355 /**
356 * <!-- begin-user-doc -->
357 * <!-- end-user-doc -->
358 * @generated
359 */
360 @Override
361 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
362 switch (featureID) {
363 case TaxationPackage.FROM_AGENT__TAX_PAYER:
364 return basicSetTaxPayer(null, msgs);
365 case TaxationPackage.FROM_AGENT__EXPENSE:
366 return basicSetExpense(null, msgs);
367 case TaxationPackage.FROM_AGENT__DEPENDENT:
368 return basicSetDependent(null, msgs);
369 }
370 return super.eInverseRemove(otherEnd, featureID, msgs);
371 }
372
373 /**
374 * <!-- begin-user-doc -->
375 * <!-- end-user-doc -->
376 * @generated
377 */
378 @Override
379 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
380 switch (eContainerFeatureID()) {
381 case TaxationPackage.FROM_AGENT__TAX_PAYER:
382 return eInternalContainer().eInverseRemove(this, TaxationPackage.TAX_PAYER__FROM_AGENT, Tax_Payer.class, msgs);
383 }
384 return super.eBasicRemoveFromContainerFeature(msgs);
385 }
386
387 /**
388 * <!-- begin-user-doc -->
389 * <!-- end-user-doc -->
390 * @generated
391 */
392 @Override
393 public Object eGet(int featureID, boolean resolve, boolean coreType) {
394 switch (featureID) {
395 case TaxationPackage.FROM_AGENT__TAX_PAYER:
396 return getTaxPayer();
397 case TaxationPackage.FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE:
398 return isIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care();
399 case TaxationPackage.FROM_AGENT__EXPENSE:
400 if (resolve) return getExpense();
401 return basicGetExpense();
402 case TaxationPackage.FROM_AGENT__IS_ELIGIBLE_DEBT:
403 return isIs_eligible_debt();
404 case TaxationPackage.FROM_AGENT__DEPENDENT:
405 if (resolve) return getDependent();
406 return basicGetDependent();
407 }
408 return super.eGet(featureID, resolve, coreType);
409 }
410
411 /**
412 * <!-- begin-user-doc -->
413 * <!-- end-user-doc -->
414 * @generated
415 */
416 @Override
417 public void eSet(int featureID, Object newValue) {
418 switch (featureID) {
419 case TaxationPackage.FROM_AGENT__TAX_PAYER:
420 setTaxPayer((Tax_Payer)newValue);
421 return;
422 case TaxationPackage.FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE:
423 setIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care((Boolean)newValue);
424 return;
425 case TaxationPackage.FROM_AGENT__EXPENSE:
426 setExpense((Expense)newValue);
427 return;
428 case TaxationPackage.FROM_AGENT__IS_ELIGIBLE_DEBT:
429 setIs_eligible_debt((Boolean)newValue);
430 return;
431 case TaxationPackage.FROM_AGENT__DEPENDENT:
432 setDependent((Dependent)newValue);
433 return;
434 }
435 super.eSet(featureID, newValue);
436 }
437
438 /**
439 * <!-- begin-user-doc -->
440 * <!-- end-user-doc -->
441 * @generated
442 */
443 @Override
444 public void eUnset(int featureID) {
445 switch (featureID) {
446 case TaxationPackage.FROM_AGENT__TAX_PAYER:
447 setTaxPayer((Tax_Payer)null);
448 return;
449 case TaxationPackage.FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE:
450 setIs_dependent_eligible_for_CE_Not_In_Houshold_Children_Care(IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE_EDEFAULT);
451 return;
452 case TaxationPackage.FROM_AGENT__EXPENSE:
453 setExpense((Expense)null);
454 return;
455 case TaxationPackage.FROM_AGENT__IS_ELIGIBLE_DEBT:
456 setIs_eligible_debt(IS_ELIGIBLE_DEBT_EDEFAULT);
457 return;
458 case TaxationPackage.FROM_AGENT__DEPENDENT:
459 setDependent((Dependent)null);
460 return;
461 }
462 super.eUnset(featureID);
463 }
464
465 /**
466 * <!-- begin-user-doc -->
467 * <!-- end-user-doc -->
468 * @generated
469 */
470 @Override
471 public boolean eIsSet(int featureID) {
472 switch (featureID) {
473 case TaxationPackage.FROM_AGENT__TAX_PAYER:
474 return getTaxPayer() != null;
475 case TaxationPackage.FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE:
476 return is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care != IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE_EDEFAULT;
477 case TaxationPackage.FROM_AGENT__EXPENSE:
478 return expense != null;
479 case TaxationPackage.FROM_AGENT__IS_ELIGIBLE_DEBT:
480 return is_eligible_debt != IS_ELIGIBLE_DEBT_EDEFAULT;
481 case TaxationPackage.FROM_AGENT__DEPENDENT:
482 return dependent != null;
483 }
484 return super.eIsSet(featureID);
485 }
486
487 /**
488 * <!-- begin-user-doc -->
489 * <!-- end-user-doc -->
490 * @generated
491 */
492 @Override
493 public String toString() {
494 if (eIsProxy()) return super.toString();
495
496 StringBuilder result = new StringBuilder(super.toString());
497 result.append(" (is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care: ");
498 result.append(is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care);
499 result.append(", is_eligible_debt: ");
500 result.append(is_eligible_debt);
501 result.append(')');
502 return result.toString();
503 }
504
505} //FromAgentImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromLawImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromLawImpl.java
new file mode 100644
index 00000000..8a6a16c7
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/FromLawImpl.java
@@ -0,0 +1,268 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.FromLaw;
6import Taxation.Tax_Payer;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10import org.eclipse.emf.common.notify.NotificationChain;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EcoreUtil;
19
20/**
21 * <!-- begin-user-doc -->
22 * An implementation of the model object '<em><b>From Law</b></em>'.
23 * <!-- end-user-doc -->
24 * <p>
25 * The following features are implemented:
26 * </p>
27 * <ul>
28 * <li>{@link Taxation.impl.FromLawImpl#getId <em>Id</em>}</li>
29 * <li>{@link Taxation.impl.FromLawImpl#getTaxPayer <em>Tax Payer</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class FromLawImpl extends MinimalEObjectImpl.Container implements FromLaw {
35 /**
36 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getId()
40 * @generated
41 * @ordered
42 */
43 protected static final String ID_EDEFAULT = null;
44
45 /**
46 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @see #getId()
50 * @generated
51 * @ordered
52 */
53 protected String id = ID_EDEFAULT;
54
55 /**
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @generated
59 */
60 protected FromLawImpl() {
61 super();
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 @Override
70 protected EClass eStaticClass() {
71 return TaxationPackage.Literals.FROM_LAW;
72 }
73
74 /**
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @generated
78 */
79 @Override
80 public String getId() {
81 return id;
82 }
83
84 /**
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @generated
88 */
89 @Override
90 public void setId(String newId) {
91 String oldId = id;
92 id = newId;
93 if (eNotificationRequired())
94 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_LAW__ID, oldId, id));
95 }
96
97 /**
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 @Override
103 public Tax_Payer getTaxPayer() {
104 if (eContainerFeatureID() != TaxationPackage.FROM_LAW__TAX_PAYER) return null;
105 return (Tax_Payer)eInternalContainer();
106 }
107
108 /**
109 * <!-- begin-user-doc -->
110 * <!-- end-user-doc -->
111 * @generated
112 */
113 public NotificationChain basicSetTaxPayer(Tax_Payer newTaxPayer, NotificationChain msgs) {
114 msgs = eBasicSetContainer((InternalEObject)newTaxPayer, TaxationPackage.FROM_LAW__TAX_PAYER, msgs);
115 return msgs;
116 }
117
118 /**
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 */
123 @Override
124 public void setTaxPayer(Tax_Payer newTaxPayer) {
125 if (newTaxPayer != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.FROM_LAW__TAX_PAYER && newTaxPayer != null)) {
126 if (EcoreUtil.isAncestor(this, newTaxPayer))
127 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
128 NotificationChain msgs = null;
129 if (eInternalContainer() != null)
130 msgs = eBasicRemoveFromContainer(msgs);
131 if (newTaxPayer != null)
132 msgs = ((InternalEObject)newTaxPayer).eInverseAdd(this, TaxationPackage.TAX_PAYER__FROM_LAW, Tax_Payer.class, msgs);
133 msgs = basicSetTaxPayer(newTaxPayer, msgs);
134 if (msgs != null) msgs.dispatch();
135 }
136 else if (eNotificationRequired())
137 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.FROM_LAW__TAX_PAYER, newTaxPayer, newTaxPayer));
138 }
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 @Override
146 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
147 switch (featureID) {
148 case TaxationPackage.FROM_LAW__TAX_PAYER:
149 if (eInternalContainer() != null)
150 msgs = eBasicRemoveFromContainer(msgs);
151 return basicSetTaxPayer((Tax_Payer)otherEnd, msgs);
152 }
153 return super.eInverseAdd(otherEnd, featureID, msgs);
154 }
155
156 /**
157 * <!-- begin-user-doc -->
158 * <!-- end-user-doc -->
159 * @generated
160 */
161 @Override
162 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
163 switch (featureID) {
164 case TaxationPackage.FROM_LAW__TAX_PAYER:
165 return basicSetTaxPayer(null, msgs);
166 }
167 return super.eInverseRemove(otherEnd, featureID, msgs);
168 }
169
170 /**
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 */
175 @Override
176 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
177 switch (eContainerFeatureID()) {
178 case TaxationPackage.FROM_LAW__TAX_PAYER:
179 return eInternalContainer().eInverseRemove(this, TaxationPackage.TAX_PAYER__FROM_LAW, Tax_Payer.class, msgs);
180 }
181 return super.eBasicRemoveFromContainerFeature(msgs);
182 }
183
184 /**
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @generated
188 */
189 @Override
190 public Object eGet(int featureID, boolean resolve, boolean coreType) {
191 switch (featureID) {
192 case TaxationPackage.FROM_LAW__ID:
193 return getId();
194 case TaxationPackage.FROM_LAW__TAX_PAYER:
195 return getTaxPayer();
196 }
197 return super.eGet(featureID, resolve, coreType);
198 }
199
200 /**
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 */
205 @Override
206 public void eSet(int featureID, Object newValue) {
207 switch (featureID) {
208 case TaxationPackage.FROM_LAW__ID:
209 setId((String)newValue);
210 return;
211 case TaxationPackage.FROM_LAW__TAX_PAYER:
212 setTaxPayer((Tax_Payer)newValue);
213 return;
214 }
215 super.eSet(featureID, newValue);
216 }
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 @Override
224 public void eUnset(int featureID) {
225 switch (featureID) {
226 case TaxationPackage.FROM_LAW__ID:
227 setId(ID_EDEFAULT);
228 return;
229 case TaxationPackage.FROM_LAW__TAX_PAYER:
230 setTaxPayer((Tax_Payer)null);
231 return;
232 }
233 super.eUnset(featureID);
234 }
235
236 /**
237 * <!-- begin-user-doc -->
238 * <!-- end-user-doc -->
239 * @generated
240 */
241 @Override
242 public boolean eIsSet(int featureID) {
243 switch (featureID) {
244 case TaxationPackage.FROM_LAW__ID:
245 return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
246 case TaxationPackage.FROM_LAW__TAX_PAYER:
247 return getTaxPayer() != null;
248 }
249 return super.eIsSet(featureID);
250 }
251
252 /**
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 */
257 @Override
258 public String toString() {
259 if (eIsProxy()) return super.toString();
260
261 StringBuilder result = new StringBuilder(super.toString());
262 result.append(" (id: ");
263 result.append(id);
264 result.append(')');
265 return result.toString();
266 }
267
268} //FromLawImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Habitual_AddressImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Habitual_AddressImpl.java
new file mode 100644
index 00000000..9c759b8a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Habitual_AddressImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Habitual_Address;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Habitual Address</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Habitual_AddressImpl extends AddressImpl implements Habitual_Address {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Habitual_AddressImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.HABITUAL_ADDRESS;
35 }
36
37} //Habitual_AddressImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Health_and_Pension_InsuranceImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Health_and_Pension_InsuranceImpl.java
new file mode 100644
index 00000000..bbf21e82
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Health_and_Pension_InsuranceImpl.java
@@ -0,0 +1,221 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Category_of_Health_and_Pension_Insurances;
6import Taxation.Health_and_Pension_Insurance;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>Health and Pension Insurance</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.Health_and_Pension_InsuranceImpl#getCategory <em>Category</em>}</li>
24 * <li>{@link Taxation.impl.Health_and_Pension_InsuranceImpl#isIs_related_to_additional_salary <em>Is related to additional salary</em>}</li>
25 * </ul>
26 *
27 * @generated
28 */
29public class Health_and_Pension_InsuranceImpl extends Special_Expense_DSImpl implements Health_and_Pension_Insurance {
30 /**
31 * The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @see #getCategory()
35 * @generated
36 * @ordered
37 */
38 protected static final Category_of_Health_and_Pension_Insurances CATEGORY_EDEFAULT = Category_of_Health_and_Pension_Insurances.MANDATORY_HEALTH_AND_PENSION_INSURANCE;
39
40 /**
41 * The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getCategory()
45 * @generated
46 * @ordered
47 */
48 protected Category_of_Health_and_Pension_Insurances category = CATEGORY_EDEFAULT;
49
50 /**
51 * The default value of the '{@link #isIs_related_to_additional_salary() <em>Is related to additional salary</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #isIs_related_to_additional_salary()
55 * @generated
56 * @ordered
57 */
58 protected static final boolean IS_RELATED_TO_ADDITIONAL_SALARY_EDEFAULT = false;
59
60 /**
61 * The cached value of the '{@link #isIs_related_to_additional_salary() <em>Is related to additional salary</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #isIs_related_to_additional_salary()
65 * @generated
66 * @ordered
67 */
68 protected boolean is_related_to_additional_salary = IS_RELATED_TO_ADDITIONAL_SALARY_EDEFAULT;
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 protected Health_and_Pension_InsuranceImpl() {
76 super();
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 protected EClass eStaticClass() {
86 return TaxationPackage.Literals.HEALTH_AND_PENSION_INSURANCE;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 @Override
95 public Category_of_Health_and_Pension_Insurances getCategory() {
96 return category;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setCategory(Category_of_Health_and_Pension_Insurances newCategory) {
106 Category_of_Health_and_Pension_Insurances oldCategory = category;
107 category = newCategory == null ? CATEGORY_EDEFAULT : newCategory;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.HEALTH_AND_PENSION_INSURANCE__CATEGORY, oldCategory, category));
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
118 public boolean isIs_related_to_additional_salary() {
119 return is_related_to_additional_salary;
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public void setIs_related_to_additional_salary(boolean newIs_related_to_additional_salary) {
129 boolean oldIs_related_to_additional_salary = is_related_to_additional_salary;
130 is_related_to_additional_salary = newIs_related_to_additional_salary;
131 if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY, oldIs_related_to_additional_salary, is_related_to_additional_salary));
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public Object eGet(int featureID, boolean resolve, boolean coreType) {
142 switch (featureID) {
143 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__CATEGORY:
144 return getCategory();
145 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY:
146 return isIs_related_to_additional_salary();
147 }
148 return super.eGet(featureID, resolve, coreType);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public void eSet(int featureID, Object newValue) {
158 switch (featureID) {
159 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__CATEGORY:
160 setCategory((Category_of_Health_and_Pension_Insurances)newValue);
161 return;
162 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY:
163 setIs_related_to_additional_salary((Boolean)newValue);
164 return;
165 }
166 super.eSet(featureID, newValue);
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 @Override
175 public void eUnset(int featureID) {
176 switch (featureID) {
177 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__CATEGORY:
178 setCategory(CATEGORY_EDEFAULT);
179 return;
180 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY:
181 setIs_related_to_additional_salary(IS_RELATED_TO_ADDITIONAL_SALARY_EDEFAULT);
182 return;
183 }
184 super.eUnset(featureID);
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public boolean eIsSet(int featureID) {
194 switch (featureID) {
195 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__CATEGORY:
196 return category != CATEGORY_EDEFAULT;
197 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY:
198 return is_related_to_additional_salary != IS_RELATED_TO_ADDITIONAL_SALARY_EDEFAULT;
199 }
200 return super.eIsSet(featureID);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public String toString() {
210 if (eIsProxy()) return super.toString();
211
212 StringBuilder result = new StringBuilder(super.toString());
213 result.append(" (category: ");
214 result.append(category);
215 result.append(", is_related_to_additional_salary: ");
216 result.append(is_related_to_additional_salary);
217 result.append(')');
218 return result.toString();
219 }
220
221} //Health_and_Pension_InsuranceImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/HouseholdImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/HouseholdImpl.java
new file mode 100644
index 00000000..8c3cb920
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/HouseholdImpl.java
@@ -0,0 +1,313 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Dependent;
6import Taxation.Household;
7import Taxation.Legal_Union_Record;
8import Taxation.TaxationPackage;
9
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
24import org.eclipse.emf.ecore.util.InternalEList;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Household</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link Taxation.impl.HouseholdImpl#getParents <em>Parents</em>}</li>
35 * <li>{@link Taxation.impl.HouseholdImpl#getId1 <em>Id1</em>}</li>
36 * <li>{@link Taxation.impl.HouseholdImpl#getChildren <em>Children</em>}</li>
37 * </ul>
38 *
39 * @generated
40 */
41public class HouseholdImpl extends MinimalEObjectImpl.Container implements Household {
42 /**
43 * The cached value of the '{@link #getParents() <em>Parents</em>}' containment reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getParents()
47 * @generated
48 * @ordered
49 */
50 protected Legal_Union_Record parents;
51
52 /**
53 * The default value of the '{@link #getId1() <em>Id1</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #getId1()
57 * @generated
58 * @ordered
59 */
60 protected static final String ID1_EDEFAULT = null;
61
62 /**
63 * The cached value of the '{@link #getId1() <em>Id1</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #getId1()
67 * @generated
68 * @ordered
69 */
70 protected String id1 = ID1_EDEFAULT;
71
72 /**
73 * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @see #getChildren()
77 * @generated
78 * @ordered
79 */
80 protected EList<Dependent> children;
81
82 /**
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @generated
86 */
87 protected HouseholdImpl() {
88 super();
89 }
90
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 @Override
97 protected EClass eStaticClass() {
98 return TaxationPackage.Literals.HOUSEHOLD;
99 }
100
101 /**
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @generated
105 */
106 @Override
107 public Legal_Union_Record getParents() {
108 return parents;
109 }
110
111 /**
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @generated
115 */
116 public NotificationChain basicSetParents(Legal_Union_Record newParents, NotificationChain msgs) {
117 Legal_Union_Record oldParents = parents;
118 parents = newParents;
119 if (eNotificationRequired()) {
120 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.HOUSEHOLD__PARENTS, oldParents, newParents);
121 if (msgs == null) msgs = notification; else msgs.add(notification);
122 }
123 return msgs;
124 }
125
126 /**
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 */
131 @Override
132 public void setParents(Legal_Union_Record newParents) {
133 if (newParents != parents) {
134 NotificationChain msgs = null;
135 if (parents != null)
136 msgs = ((InternalEObject)parents).eInverseRemove(this, TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD, Legal_Union_Record.class, msgs);
137 if (newParents != null)
138 msgs = ((InternalEObject)newParents).eInverseAdd(this, TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD, Legal_Union_Record.class, msgs);
139 msgs = basicSetParents(newParents, msgs);
140 if (msgs != null) msgs.dispatch();
141 }
142 else if (eNotificationRequired())
143 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.HOUSEHOLD__PARENTS, newParents, newParents));
144 }
145
146 /**
147 * <!-- begin-user-doc -->
148 * <!-- end-user-doc -->
149 * @generated
150 */
151 @Override
152 public String getId1() {
153 return id1;
154 }
155
156 /**
157 * <!-- begin-user-doc -->
158 * <!-- end-user-doc -->
159 * @generated
160 */
161 @Override
162 public void setId1(String newId1) {
163 String oldId1 = id1;
164 id1 = newId1;
165 if (eNotificationRequired())
166 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.HOUSEHOLD__ID1, oldId1, id1));
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 @Override
175 public EList<Dependent> getChildren() {
176 if (children == null) {
177 children = new EObjectContainmentWithInverseEList<Dependent>(Dependent.class, this, TaxationPackage.HOUSEHOLD__CHILDREN, TaxationPackage.DEPENDENT__HOUSEHOLD);
178 }
179 return children;
180 }
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 @SuppressWarnings("unchecked")
188 @Override
189 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
190 switch (featureID) {
191 case TaxationPackage.HOUSEHOLD__PARENTS:
192 if (parents != null)
193 msgs = ((InternalEObject)parents).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.HOUSEHOLD__PARENTS, null, msgs);
194 return basicSetParents((Legal_Union_Record)otherEnd, msgs);
195 case TaxationPackage.HOUSEHOLD__CHILDREN:
196 return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
197 }
198 return super.eInverseAdd(otherEnd, featureID, msgs);
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
208 switch (featureID) {
209 case TaxationPackage.HOUSEHOLD__PARENTS:
210 return basicSetParents(null, msgs);
211 case TaxationPackage.HOUSEHOLD__CHILDREN:
212 return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
213 }
214 return super.eInverseRemove(otherEnd, featureID, msgs);
215 }
216
217 /**
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 @Override
223 public Object eGet(int featureID, boolean resolve, boolean coreType) {
224 switch (featureID) {
225 case TaxationPackage.HOUSEHOLD__PARENTS:
226 return getParents();
227 case TaxationPackage.HOUSEHOLD__ID1:
228 return getId1();
229 case TaxationPackage.HOUSEHOLD__CHILDREN:
230 return getChildren();
231 }
232 return super.eGet(featureID, resolve, coreType);
233 }
234
235 /**
236 * <!-- begin-user-doc -->
237 * <!-- end-user-doc -->
238 * @generated
239 */
240 @SuppressWarnings("unchecked")
241 @Override
242 public void eSet(int featureID, Object newValue) {
243 switch (featureID) {
244 case TaxationPackage.HOUSEHOLD__PARENTS:
245 setParents((Legal_Union_Record)newValue);
246 return;
247 case TaxationPackage.HOUSEHOLD__ID1:
248 setId1((String)newValue);
249 return;
250 case TaxationPackage.HOUSEHOLD__CHILDREN:
251 getChildren().clear();
252 getChildren().addAll((Collection<? extends Dependent>)newValue);
253 return;
254 }
255 super.eSet(featureID, newValue);
256 }
257
258 /**
259 * <!-- begin-user-doc -->
260 * <!-- end-user-doc -->
261 * @generated
262 */
263 @Override
264 public void eUnset(int featureID) {
265 switch (featureID) {
266 case TaxationPackage.HOUSEHOLD__PARENTS:
267 setParents((Legal_Union_Record)null);
268 return;
269 case TaxationPackage.HOUSEHOLD__ID1:
270 setId1(ID1_EDEFAULT);
271 return;
272 case TaxationPackage.HOUSEHOLD__CHILDREN:
273 getChildren().clear();
274 return;
275 }
276 super.eUnset(featureID);
277 }
278
279 /**
280 * <!-- begin-user-doc -->
281 * <!-- end-user-doc -->
282 * @generated
283 */
284 @Override
285 public boolean eIsSet(int featureID) {
286 switch (featureID) {
287 case TaxationPackage.HOUSEHOLD__PARENTS:
288 return parents != null;
289 case TaxationPackage.HOUSEHOLD__ID1:
290 return ID1_EDEFAULT == null ? id1 != null : !ID1_EDEFAULT.equals(id1);
291 case TaxationPackage.HOUSEHOLD__CHILDREN:
292 return children != null && !children.isEmpty();
293 }
294 return super.eIsSet(featureID);
295 }
296
297 /**
298 * <!-- begin-user-doc -->
299 * <!-- end-user-doc -->
300 * @generated
301 */
302 @Override
303 public String toString() {
304 if (eIsProxy()) return super.toString();
305
306 StringBuilder result = new StringBuilder(super.toString());
307 result.append(" (id1: ");
308 result.append(id1);
309 result.append(')');
310 return result.toString();
311 }
312
313} //HouseholdImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/IncomeImpl.java
new file mode 100644
index 00000000..233d467c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/IncomeImpl.java
@@ -0,0 +1,782 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Expense;
6import Taxation.Income;
7import Taxation.Income_Detail;
8import Taxation.Income_Type;
9import Taxation.Tax_Card;
10import Taxation.Tax_Payer;
11import Taxation.TaxationPackage;
12import java.util.Collection;
13import java.util.Date;
14
15import org.eclipse.emf.common.notify.Notification;
16import org.eclipse.emf.common.notify.NotificationChain;
17
18import org.eclipse.emf.common.util.EList;
19
20import org.eclipse.emf.ecore.EClass;
21import org.eclipse.emf.ecore.InternalEObject;
22
23import org.eclipse.emf.ecore.impl.ENotificationImpl;
24import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
25
26import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
27import org.eclipse.emf.ecore.util.EcoreUtil;
28import org.eclipse.emf.ecore.util.InternalEList;
29
30/**
31 * <!-- begin-user-doc -->
32 * An implementation of the model object '<em><b>Income</b></em>'.
33 * <!-- end-user-doc -->
34 * <p>
35 * The following features are implemented:
36 * </p>
37 * <ul>
38 * <li>{@link Taxation.impl.IncomeImpl#getIncome_amount <em>Income amount</em>}</li>
39 * <li>{@link Taxation.impl.IncomeImpl#getIncome_type <em>Income type</em>}</li>
40 * <li>{@link Taxation.impl.IncomeImpl#getStart_date_within_taxation_year <em>Start date within taxation year</em>}</li>
41 * <li>{@link Taxation.impl.IncomeImpl#getStart_date_of_contract <em>Start date of contract</em>}</li>
42 * <li>{@link Taxation.impl.IncomeImpl#getEnd_date_within_taxation_year <em>End date within taxation year</em>}</li>
43 * <li>{@link Taxation.impl.IncomeImpl#getTax_card <em>Tax card</em>}</li>
44 * <li>{@link Taxation.impl.IncomeImpl#getTax_liability <em>Tax liability</em>}</li>
45 * <li>{@link Taxation.impl.IncomeImpl#getTaxPayer <em>Tax Payer</em>}</li>
46 * <li>{@link Taxation.impl.IncomeImpl#getDetails <em>Details</em>}</li>
47 * <li>{@link Taxation.impl.IncomeImpl#getNum <em>Num</em>}</li>
48 * <li>{@link Taxation.impl.IncomeImpl#getExpenses <em>Expenses</em>}</li>
49 * </ul>
50 *
51 * @generated
52 */
53public abstract class IncomeImpl extends MinimalEObjectImpl.Container implements Income {
54 /**
55 * The default value of the '{@link #getIncome_amount() <em>Income amount</em>}' attribute.
56 * <!-- begin-user-doc -->
57 * <!-- end-user-doc -->
58 * @see #getIncome_amount()
59 * @generated
60 * @ordered
61 */
62 protected static final double INCOME_AMOUNT_EDEFAULT = 0.0;
63
64 /**
65 * The cached value of the '{@link #getIncome_amount() <em>Income amount</em>}' attribute.
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @see #getIncome_amount()
69 * @generated
70 * @ordered
71 */
72 protected double income_amount = INCOME_AMOUNT_EDEFAULT;
73
74 /**
75 * The cached value of the '{@link #getIncome_type() <em>Income type</em>}' containment reference.
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @see #getIncome_type()
79 * @generated
80 * @ordered
81 */
82 protected Income_Type income_type;
83
84 /**
85 * The default value of the '{@link #getStart_date_within_taxation_year() <em>Start date within taxation year</em>}' attribute.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @see #getStart_date_within_taxation_year()
89 * @generated
90 * @ordered
91 */
92 protected static final Date START_DATE_WITHIN_TAXATION_YEAR_EDEFAULT = null;
93
94 /**
95 * The cached value of the '{@link #getStart_date_within_taxation_year() <em>Start date within taxation year</em>}' attribute.
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @see #getStart_date_within_taxation_year()
99 * @generated
100 * @ordered
101 */
102 protected Date start_date_within_taxation_year = START_DATE_WITHIN_TAXATION_YEAR_EDEFAULT;
103
104 /**
105 * The default value of the '{@link #getStart_date_of_contract() <em>Start date of contract</em>}' attribute.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @see #getStart_date_of_contract()
109 * @generated
110 * @ordered
111 */
112 protected static final Date START_DATE_OF_CONTRACT_EDEFAULT = null;
113
114 /**
115 * The cached value of the '{@link #getStart_date_of_contract() <em>Start date of contract</em>}' attribute.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @see #getStart_date_of_contract()
119 * @generated
120 * @ordered
121 */
122 protected Date start_date_of_contract = START_DATE_OF_CONTRACT_EDEFAULT;
123
124 /**
125 * The default value of the '{@link #getEnd_date_within_taxation_year() <em>End date within taxation year</em>}' attribute.
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @see #getEnd_date_within_taxation_year()
129 * @generated
130 * @ordered
131 */
132 protected static final Date END_DATE_WITHIN_TAXATION_YEAR_EDEFAULT = null;
133
134 /**
135 * The cached value of the '{@link #getEnd_date_within_taxation_year() <em>End date within taxation year</em>}' attribute.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @see #getEnd_date_within_taxation_year()
139 * @generated
140 * @ordered
141 */
142 protected Date end_date_within_taxation_year = END_DATE_WITHIN_TAXATION_YEAR_EDEFAULT;
143
144 /**
145 * The cached value of the '{@link #getTax_card() <em>Tax card</em>}' containment reference.
146 * <!-- begin-user-doc -->
147 * <!-- end-user-doc -->
148 * @see #getTax_card()
149 * @generated
150 * @ordered
151 */
152 protected Tax_Card tax_card;
153
154 /**
155 * The default value of the '{@link #getTax_liability() <em>Tax liability</em>}' attribute.
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @see #getTax_liability()
159 * @generated
160 * @ordered
161 */
162 protected static final double TAX_LIABILITY_EDEFAULT = 0.0;
163
164 /**
165 * The cached value of the '{@link #getTax_liability() <em>Tax liability</em>}' attribute.
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @see #getTax_liability()
169 * @generated
170 * @ordered
171 */
172 protected double tax_liability = TAX_LIABILITY_EDEFAULT;
173
174 /**
175 * The cached value of the '{@link #getDetails() <em>Details</em>}' containment reference list.
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @see #getDetails()
179 * @generated
180 * @ordered
181 */
182 protected EList<Income_Detail> details;
183
184 /**
185 * The default value of the '{@link #getNum() <em>Num</em>}' attribute.
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @see #getNum()
189 * @generated
190 * @ordered
191 */
192 protected static final int NUM_EDEFAULT = 0;
193
194 /**
195 * The cached value of the '{@link #getNum() <em>Num</em>}' attribute.
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @see #getNum()
199 * @generated
200 * @ordered
201 */
202 protected int num = NUM_EDEFAULT;
203
204 /**
205 * The cached value of the '{@link #getExpenses() <em>Expenses</em>}' containment reference list.
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @see #getExpenses()
209 * @generated
210 * @ordered
211 */
212 protected EList<Expense> expenses;
213
214 /**
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @generated
218 */
219 protected IncomeImpl() {
220 super();
221 }
222
223 /**
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @generated
227 */
228 @Override
229 protected EClass eStaticClass() {
230 return TaxationPackage.Literals.INCOME;
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public double getIncome_amount() {
240 return income_amount;
241 }
242
243 /**
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @generated
247 */
248 @Override
249 public void setIncome_amount(double newIncome_amount) {
250 double oldIncome_amount = income_amount;
251 income_amount = newIncome_amount;
252 if (eNotificationRequired())
253 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__INCOME_AMOUNT, oldIncome_amount, income_amount));
254 }
255
256 /**
257 * <!-- begin-user-doc -->
258 * <!-- end-user-doc -->
259 * @generated
260 */
261 @Override
262 public Income_Type getIncome_type() {
263 return income_type;
264 }
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 public NotificationChain basicSetIncome_type(Income_Type newIncome_type, NotificationChain msgs) {
272 Income_Type oldIncome_type = income_type;
273 income_type = newIncome_type;
274 if (eNotificationRequired()) {
275 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__INCOME_TYPE, oldIncome_type, newIncome_type);
276 if (msgs == null) msgs = notification; else msgs.add(notification);
277 }
278 return msgs;
279 }
280
281 /**
282 * <!-- begin-user-doc -->
283 * <!-- end-user-doc -->
284 * @generated
285 */
286 @Override
287 public void setIncome_type(Income_Type newIncome_type) {
288 if (newIncome_type != income_type) {
289 NotificationChain msgs = null;
290 if (income_type != null)
291 msgs = ((InternalEObject)income_type).eInverseRemove(this, TaxationPackage.INCOME_TYPE__INCOME, Income_Type.class, msgs);
292 if (newIncome_type != null)
293 msgs = ((InternalEObject)newIncome_type).eInverseAdd(this, TaxationPackage.INCOME_TYPE__INCOME, Income_Type.class, msgs);
294 msgs = basicSetIncome_type(newIncome_type, msgs);
295 if (msgs != null) msgs.dispatch();
296 }
297 else if (eNotificationRequired())
298 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__INCOME_TYPE, newIncome_type, newIncome_type));
299 }
300
301 /**
302 * <!-- begin-user-doc -->
303 * <!-- end-user-doc -->
304 * @generated
305 */
306 @Override
307 public Date getStart_date_within_taxation_year() {
308 return start_date_within_taxation_year;
309 }
310
311 /**
312 * <!-- begin-user-doc -->
313 * <!-- end-user-doc -->
314 * @generated
315 */
316 @Override
317 public void setStart_date_within_taxation_year(Date newStart_date_within_taxation_year) {
318 Date oldStart_date_within_taxation_year = start_date_within_taxation_year;
319 start_date_within_taxation_year = newStart_date_within_taxation_year;
320 if (eNotificationRequired())
321 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__START_DATE_WITHIN_TAXATION_YEAR, oldStart_date_within_taxation_year, start_date_within_taxation_year));
322 }
323
324 /**
325 * <!-- begin-user-doc -->
326 * <!-- end-user-doc -->
327 * @generated
328 */
329 @Override
330 public Date getStart_date_of_contract() {
331 return start_date_of_contract;
332 }
333
334 /**
335 * <!-- begin-user-doc -->
336 * <!-- end-user-doc -->
337 * @generated
338 */
339 @Override
340 public void setStart_date_of_contract(Date newStart_date_of_contract) {
341 Date oldStart_date_of_contract = start_date_of_contract;
342 start_date_of_contract = newStart_date_of_contract;
343 if (eNotificationRequired())
344 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__START_DATE_OF_CONTRACT, oldStart_date_of_contract, start_date_of_contract));
345 }
346
347 /**
348 * <!-- begin-user-doc -->
349 * <!-- end-user-doc -->
350 * @generated
351 */
352 @Override
353 public Date getEnd_date_within_taxation_year() {
354 return end_date_within_taxation_year;
355 }
356
357 /**
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @generated
361 */
362 @Override
363 public void setEnd_date_within_taxation_year(Date newEnd_date_within_taxation_year) {
364 Date oldEnd_date_within_taxation_year = end_date_within_taxation_year;
365 end_date_within_taxation_year = newEnd_date_within_taxation_year;
366 if (eNotificationRequired())
367 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__END_DATE_WITHIN_TAXATION_YEAR, oldEnd_date_within_taxation_year, end_date_within_taxation_year));
368 }
369
370 /**
371 * <!-- begin-user-doc -->
372 * <!-- end-user-doc -->
373 * @generated
374 */
375 @Override
376 public Tax_Card getTax_card() {
377 return tax_card;
378 }
379
380 /**
381 * <!-- begin-user-doc -->
382 * <!-- end-user-doc -->
383 * @generated
384 */
385 public NotificationChain basicSetTax_card(Tax_Card newTax_card, NotificationChain msgs) {
386 Tax_Card oldTax_card = tax_card;
387 tax_card = newTax_card;
388 if (eNotificationRequired()) {
389 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__TAX_CARD, oldTax_card, newTax_card);
390 if (msgs == null) msgs = notification; else msgs.add(notification);
391 }
392 return msgs;
393 }
394
395 /**
396 * <!-- begin-user-doc -->
397 * <!-- end-user-doc -->
398 * @generated
399 */
400 @Override
401 public void setTax_card(Tax_Card newTax_card) {
402 if (newTax_card != tax_card) {
403 NotificationChain msgs = null;
404 if (tax_card != null)
405 msgs = ((InternalEObject)tax_card).eInverseRemove(this, TaxationPackage.TAX_CARD__INCOME, Tax_Card.class, msgs);
406 if (newTax_card != null)
407 msgs = ((InternalEObject)newTax_card).eInverseAdd(this, TaxationPackage.TAX_CARD__INCOME, Tax_Card.class, msgs);
408 msgs = basicSetTax_card(newTax_card, msgs);
409 if (msgs != null) msgs.dispatch();
410 }
411 else if (eNotificationRequired())
412 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__TAX_CARD, newTax_card, newTax_card));
413 }
414
415 /**
416 * <!-- begin-user-doc -->
417 * <!-- end-user-doc -->
418 * @generated
419 */
420 @Override
421 public double getTax_liability() {
422 return tax_liability;
423 }
424
425 /**
426 * <!-- begin-user-doc -->
427 * <!-- end-user-doc -->
428 * @generated
429 */
430 @Override
431 public void setTax_liability(double newTax_liability) {
432 double oldTax_liability = tax_liability;
433 tax_liability = newTax_liability;
434 if (eNotificationRequired())
435 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__TAX_LIABILITY, oldTax_liability, tax_liability));
436 }
437
438 /**
439 * <!-- begin-user-doc -->
440 * <!-- end-user-doc -->
441 * @generated
442 */
443 @Override
444 public Tax_Payer getTaxPayer() {
445 if (eContainerFeatureID() != TaxationPackage.INCOME__TAX_PAYER) return null;
446 return (Tax_Payer)eInternalContainer();
447 }
448
449 /**
450 * <!-- begin-user-doc -->
451 * <!-- end-user-doc -->
452 * @generated
453 */
454 public NotificationChain basicSetTaxPayer(Tax_Payer newTaxPayer, NotificationChain msgs) {
455 msgs = eBasicSetContainer((InternalEObject)newTaxPayer, TaxationPackage.INCOME__TAX_PAYER, msgs);
456 return msgs;
457 }
458
459 /**
460 * <!-- begin-user-doc -->
461 * <!-- end-user-doc -->
462 * @generated
463 */
464 @Override
465 public void setTaxPayer(Tax_Payer newTaxPayer) {
466 if (newTaxPayer != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.INCOME__TAX_PAYER && newTaxPayer != null)) {
467 if (EcoreUtil.isAncestor(this, newTaxPayer))
468 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
469 NotificationChain msgs = null;
470 if (eInternalContainer() != null)
471 msgs = eBasicRemoveFromContainer(msgs);
472 if (newTaxPayer != null)
473 msgs = ((InternalEObject)newTaxPayer).eInverseAdd(this, TaxationPackage.TAX_PAYER__INCOMES, Tax_Payer.class, msgs);
474 msgs = basicSetTaxPayer(newTaxPayer, msgs);
475 if (msgs != null) msgs.dispatch();
476 }
477 else if (eNotificationRequired())
478 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__TAX_PAYER, newTaxPayer, newTaxPayer));
479 }
480
481 /**
482 * <!-- begin-user-doc -->
483 * <!-- end-user-doc -->
484 * @generated
485 */
486 @Override
487 public EList<Income_Detail> getDetails() {
488 if (details == null) {
489 details = new EObjectContainmentWithInverseEList<Income_Detail>(Income_Detail.class, this, TaxationPackage.INCOME__DETAILS, TaxationPackage.INCOME_DETAIL__INCOME);
490 }
491 return details;
492 }
493
494 /**
495 * <!-- begin-user-doc -->
496 * <!-- end-user-doc -->
497 * @generated
498 */
499 @Override
500 public int getNum() {
501 return num;
502 }
503
504 /**
505 * <!-- begin-user-doc -->
506 * <!-- end-user-doc -->
507 * @generated
508 */
509 @Override
510 public void setNum(int newNum) {
511 int oldNum = num;
512 num = newNum;
513 if (eNotificationRequired())
514 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME__NUM, oldNum, num));
515 }
516
517 /**
518 * <!-- begin-user-doc -->
519 * <!-- end-user-doc -->
520 * @generated
521 */
522 @Override
523 public EList<Expense> getExpenses() {
524 if (expenses == null) {
525 expenses = new EObjectContainmentWithInverseEList<Expense>(Expense.class, this, TaxationPackage.INCOME__EXPENSES, TaxationPackage.EXPENSE__INCOME);
526 }
527 return expenses;
528 }
529
530 /**
531 * <!-- begin-user-doc -->
532 * <!-- end-user-doc -->
533 * @generated
534 */
535 @SuppressWarnings("unchecked")
536 @Override
537 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
538 switch (featureID) {
539 case TaxationPackage.INCOME__INCOME_TYPE:
540 if (income_type != null)
541 msgs = ((InternalEObject)income_type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.INCOME__INCOME_TYPE, null, msgs);
542 return basicSetIncome_type((Income_Type)otherEnd, msgs);
543 case TaxationPackage.INCOME__TAX_CARD:
544 if (tax_card != null)
545 msgs = ((InternalEObject)tax_card).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.INCOME__TAX_CARD, null, msgs);
546 return basicSetTax_card((Tax_Card)otherEnd, msgs);
547 case TaxationPackage.INCOME__TAX_PAYER:
548 if (eInternalContainer() != null)
549 msgs = eBasicRemoveFromContainer(msgs);
550 return basicSetTaxPayer((Tax_Payer)otherEnd, msgs);
551 case TaxationPackage.INCOME__DETAILS:
552 return ((InternalEList<InternalEObject>)(InternalEList<?>)getDetails()).basicAdd(otherEnd, msgs);
553 case TaxationPackage.INCOME__EXPENSES:
554 return ((InternalEList<InternalEObject>)(InternalEList<?>)getExpenses()).basicAdd(otherEnd, msgs);
555 }
556 return super.eInverseAdd(otherEnd, featureID, msgs);
557 }
558
559 /**
560 * <!-- begin-user-doc -->
561 * <!-- end-user-doc -->
562 * @generated
563 */
564 @Override
565 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
566 switch (featureID) {
567 case TaxationPackage.INCOME__INCOME_TYPE:
568 return basicSetIncome_type(null, msgs);
569 case TaxationPackage.INCOME__TAX_CARD:
570 return basicSetTax_card(null, msgs);
571 case TaxationPackage.INCOME__TAX_PAYER:
572 return basicSetTaxPayer(null, msgs);
573 case TaxationPackage.INCOME__DETAILS:
574 return ((InternalEList<?>)getDetails()).basicRemove(otherEnd, msgs);
575 case TaxationPackage.INCOME__EXPENSES:
576 return ((InternalEList<?>)getExpenses()).basicRemove(otherEnd, msgs);
577 }
578 return super.eInverseRemove(otherEnd, featureID, msgs);
579 }
580
581 /**
582 * <!-- begin-user-doc -->
583 * <!-- end-user-doc -->
584 * @generated
585 */
586 @Override
587 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
588 switch (eContainerFeatureID()) {
589 case TaxationPackage.INCOME__TAX_PAYER:
590 return eInternalContainer().eInverseRemove(this, TaxationPackage.TAX_PAYER__INCOMES, Tax_Payer.class, msgs);
591 }
592 return super.eBasicRemoveFromContainerFeature(msgs);
593 }
594
595 /**
596 * <!-- begin-user-doc -->
597 * <!-- end-user-doc -->
598 * @generated
599 */
600 @Override
601 public Object eGet(int featureID, boolean resolve, boolean coreType) {
602 switch (featureID) {
603 case TaxationPackage.INCOME__INCOME_AMOUNT:
604 return getIncome_amount();
605 case TaxationPackage.INCOME__INCOME_TYPE:
606 return getIncome_type();
607 case TaxationPackage.INCOME__START_DATE_WITHIN_TAXATION_YEAR:
608 return getStart_date_within_taxation_year();
609 case TaxationPackage.INCOME__START_DATE_OF_CONTRACT:
610 return getStart_date_of_contract();
611 case TaxationPackage.INCOME__END_DATE_WITHIN_TAXATION_YEAR:
612 return getEnd_date_within_taxation_year();
613 case TaxationPackage.INCOME__TAX_CARD:
614 return getTax_card();
615 case TaxationPackage.INCOME__TAX_LIABILITY:
616 return getTax_liability();
617 case TaxationPackage.INCOME__TAX_PAYER:
618 return getTaxPayer();
619 case TaxationPackage.INCOME__DETAILS:
620 return getDetails();
621 case TaxationPackage.INCOME__NUM:
622 return getNum();
623 case TaxationPackage.INCOME__EXPENSES:
624 return getExpenses();
625 }
626 return super.eGet(featureID, resolve, coreType);
627 }
628
629 /**
630 * <!-- begin-user-doc -->
631 * <!-- end-user-doc -->
632 * @generated
633 */
634 @SuppressWarnings("unchecked")
635 @Override
636 public void eSet(int featureID, Object newValue) {
637 switch (featureID) {
638 case TaxationPackage.INCOME__INCOME_AMOUNT:
639 setIncome_amount((Double)newValue);
640 return;
641 case TaxationPackage.INCOME__INCOME_TYPE:
642 setIncome_type((Income_Type)newValue);
643 return;
644 case TaxationPackage.INCOME__START_DATE_WITHIN_TAXATION_YEAR:
645 setStart_date_within_taxation_year((Date)newValue);
646 return;
647 case TaxationPackage.INCOME__START_DATE_OF_CONTRACT:
648 setStart_date_of_contract((Date)newValue);
649 return;
650 case TaxationPackage.INCOME__END_DATE_WITHIN_TAXATION_YEAR:
651 setEnd_date_within_taxation_year((Date)newValue);
652 return;
653 case TaxationPackage.INCOME__TAX_CARD:
654 setTax_card((Tax_Card)newValue);
655 return;
656 case TaxationPackage.INCOME__TAX_LIABILITY:
657 setTax_liability((Double)newValue);
658 return;
659 case TaxationPackage.INCOME__TAX_PAYER:
660 setTaxPayer((Tax_Payer)newValue);
661 return;
662 case TaxationPackage.INCOME__DETAILS:
663 getDetails().clear();
664 getDetails().addAll((Collection<? extends Income_Detail>)newValue);
665 return;
666 case TaxationPackage.INCOME__NUM:
667 setNum((Integer)newValue);
668 return;
669 case TaxationPackage.INCOME__EXPENSES:
670 getExpenses().clear();
671 getExpenses().addAll((Collection<? extends Expense>)newValue);
672 return;
673 }
674 super.eSet(featureID, newValue);
675 }
676
677 /**
678 * <!-- begin-user-doc -->
679 * <!-- end-user-doc -->
680 * @generated
681 */
682 @Override
683 public void eUnset(int featureID) {
684 switch (featureID) {
685 case TaxationPackage.INCOME__INCOME_AMOUNT:
686 setIncome_amount(INCOME_AMOUNT_EDEFAULT);
687 return;
688 case TaxationPackage.INCOME__INCOME_TYPE:
689 setIncome_type((Income_Type)null);
690 return;
691 case TaxationPackage.INCOME__START_DATE_WITHIN_TAXATION_YEAR:
692 setStart_date_within_taxation_year(START_DATE_WITHIN_TAXATION_YEAR_EDEFAULT);
693 return;
694 case TaxationPackage.INCOME__START_DATE_OF_CONTRACT:
695 setStart_date_of_contract(START_DATE_OF_CONTRACT_EDEFAULT);
696 return;
697 case TaxationPackage.INCOME__END_DATE_WITHIN_TAXATION_YEAR:
698 setEnd_date_within_taxation_year(END_DATE_WITHIN_TAXATION_YEAR_EDEFAULT);
699 return;
700 case TaxationPackage.INCOME__TAX_CARD:
701 setTax_card((Tax_Card)null);
702 return;
703 case TaxationPackage.INCOME__TAX_LIABILITY:
704 setTax_liability(TAX_LIABILITY_EDEFAULT);
705 return;
706 case TaxationPackage.INCOME__TAX_PAYER:
707 setTaxPayer((Tax_Payer)null);
708 return;
709 case TaxationPackage.INCOME__DETAILS:
710 getDetails().clear();
711 return;
712 case TaxationPackage.INCOME__NUM:
713 setNum(NUM_EDEFAULT);
714 return;
715 case TaxationPackage.INCOME__EXPENSES:
716 getExpenses().clear();
717 return;
718 }
719 super.eUnset(featureID);
720 }
721
722 /**
723 * <!-- begin-user-doc -->
724 * <!-- end-user-doc -->
725 * @generated
726 */
727 @Override
728 public boolean eIsSet(int featureID) {
729 switch (featureID) {
730 case TaxationPackage.INCOME__INCOME_AMOUNT:
731 return income_amount != INCOME_AMOUNT_EDEFAULT;
732 case TaxationPackage.INCOME__INCOME_TYPE:
733 return income_type != null;
734 case TaxationPackage.INCOME__START_DATE_WITHIN_TAXATION_YEAR:
735 return START_DATE_WITHIN_TAXATION_YEAR_EDEFAULT == null ? start_date_within_taxation_year != null : !START_DATE_WITHIN_TAXATION_YEAR_EDEFAULT.equals(start_date_within_taxation_year);
736 case TaxationPackage.INCOME__START_DATE_OF_CONTRACT:
737 return START_DATE_OF_CONTRACT_EDEFAULT == null ? start_date_of_contract != null : !START_DATE_OF_CONTRACT_EDEFAULT.equals(start_date_of_contract);
738 case TaxationPackage.INCOME__END_DATE_WITHIN_TAXATION_YEAR:
739 return END_DATE_WITHIN_TAXATION_YEAR_EDEFAULT == null ? end_date_within_taxation_year != null : !END_DATE_WITHIN_TAXATION_YEAR_EDEFAULT.equals(end_date_within_taxation_year);
740 case TaxationPackage.INCOME__TAX_CARD:
741 return tax_card != null;
742 case TaxationPackage.INCOME__TAX_LIABILITY:
743 return tax_liability != TAX_LIABILITY_EDEFAULT;
744 case TaxationPackage.INCOME__TAX_PAYER:
745 return getTaxPayer() != null;
746 case TaxationPackage.INCOME__DETAILS:
747 return details != null && !details.isEmpty();
748 case TaxationPackage.INCOME__NUM:
749 return num != NUM_EDEFAULT;
750 case TaxationPackage.INCOME__EXPENSES:
751 return expenses != null && !expenses.isEmpty();
752 }
753 return super.eIsSet(featureID);
754 }
755
756 /**
757 * <!-- begin-user-doc -->
758 * <!-- end-user-doc -->
759 * @generated
760 */
761 @Override
762 public String toString() {
763 if (eIsProxy()) return super.toString();
764
765 StringBuilder result = new StringBuilder(super.toString());
766 result.append(" (income_amount: ");
767 result.append(income_amount);
768 result.append(", start_date_within_taxation_year: ");
769 result.append(start_date_within_taxation_year);
770 result.append(", start_date_of_contract: ");
771 result.append(start_date_of_contract);
772 result.append(", end_date_within_taxation_year: ");
773 result.append(end_date_within_taxation_year);
774 result.append(", tax_liability: ");
775 result.append(tax_liability);
776 result.append(", num: ");
777 result.append(num);
778 result.append(')');
779 return result.toString();
780 }
781
782} //IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_DetailImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_DetailImpl.java
new file mode 100644
index 00000000..ff882fd5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_DetailImpl.java
@@ -0,0 +1,547 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Income;
6import Taxation.Income_Detail;
7import Taxation.TaxationPackage;
8import org.eclipse.emf.common.notify.Notification;
9import org.eclipse.emf.common.notify.NotificationChain;
10
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17import org.eclipse.emf.ecore.util.EcoreUtil;
18
19/**
20 * <!-- begin-user-doc -->
21 * An implementation of the model object '<em><b>Income Detail</b></em>'.
22 * <!-- end-user-doc -->
23 * <p>
24 * The following features are implemented:
25 * </p>
26 * <ul>
27 * <li>{@link Taxation.impl.Income_DetailImpl#getAmount <em>Amount</em>}</li>
28 * <li>{@link Taxation.impl.Income_DetailImpl#isIs_worked <em>Is worked</em>}</li>
29 * <li>{@link Taxation.impl.Income_DetailImpl#getDistance <em>Distance</em>}</li>
30 * <li>{@link Taxation.impl.Income_DetailImpl#getWorked_days <em>Worked days</em>}</li>
31 * <li>{@link Taxation.impl.Income_DetailImpl#isIs_contributing_CNS <em>Is contributing CNS</em>}</li>
32 * <li>{@link Taxation.impl.Income_DetailImpl#getId5 <em>Id5</em>}</li>
33 * <li>{@link Taxation.impl.Income_DetailImpl#getIncome <em>Income</em>}</li>
34 * </ul>
35 *
36 * @generated
37 */
38public class Income_DetailImpl extends MinimalEObjectImpl.Container implements Income_Detail {
39 /**
40 * The default value of the '{@link #getAmount() <em>Amount</em>}' attribute.
41 * <!-- begin-user-doc -->
42 * <!-- end-user-doc -->
43 * @see #getAmount()
44 * @generated
45 * @ordered
46 */
47 protected static final double AMOUNT_EDEFAULT = 0.0;
48
49 /**
50 * The cached value of the '{@link #getAmount() <em>Amount</em>}' attribute.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see #getAmount()
54 * @generated
55 * @ordered
56 */
57 protected double amount = AMOUNT_EDEFAULT;
58
59 /**
60 * The default value of the '{@link #isIs_worked() <em>Is worked</em>}' attribute.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see #isIs_worked()
64 * @generated
65 * @ordered
66 */
67 protected static final boolean IS_WORKED_EDEFAULT = false;
68
69 /**
70 * The cached value of the '{@link #isIs_worked() <em>Is worked</em>}' attribute.
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @see #isIs_worked()
74 * @generated
75 * @ordered
76 */
77 protected boolean is_worked = IS_WORKED_EDEFAULT;
78
79 /**
80 * The default value of the '{@link #getDistance() <em>Distance</em>}' attribute.
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @see #getDistance()
84 * @generated
85 * @ordered
86 */
87 protected static final double DISTANCE_EDEFAULT = 0.0;
88
89 /**
90 * The cached value of the '{@link #getDistance() <em>Distance</em>}' attribute.
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @see #getDistance()
94 * @generated
95 * @ordered
96 */
97 protected double distance = DISTANCE_EDEFAULT;
98
99 /**
100 * The default value of the '{@link #getWorked_days() <em>Worked days</em>}' attribute.
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @see #getWorked_days()
104 * @generated
105 * @ordered
106 */
107 protected static final int WORKED_DAYS_EDEFAULT = 0;
108
109 /**
110 * The cached value of the '{@link #getWorked_days() <em>Worked days</em>}' attribute.
111 * <!-- begin-user-doc -->
112 * <!-- end-user-doc -->
113 * @see #getWorked_days()
114 * @generated
115 * @ordered
116 */
117 protected int worked_days = WORKED_DAYS_EDEFAULT;
118
119 /**
120 * The default value of the '{@link #isIs_contributing_CNS() <em>Is contributing CNS</em>}' attribute.
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @see #isIs_contributing_CNS()
124 * @generated
125 * @ordered
126 */
127 protected static final boolean IS_CONTRIBUTING_CNS_EDEFAULT = false;
128
129 /**
130 * The cached value of the '{@link #isIs_contributing_CNS() <em>Is contributing CNS</em>}' attribute.
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @see #isIs_contributing_CNS()
134 * @generated
135 * @ordered
136 */
137 protected boolean is_contributing_CNS = IS_CONTRIBUTING_CNS_EDEFAULT;
138
139 /**
140 * The default value of the '{@link #getId5() <em>Id5</em>}' attribute.
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @see #getId5()
144 * @generated
145 * @ordered
146 */
147 protected static final String ID5_EDEFAULT = null;
148
149 /**
150 * The cached value of the '{@link #getId5() <em>Id5</em>}' attribute.
151 * <!-- begin-user-doc -->
152 * <!-- end-user-doc -->
153 * @see #getId5()
154 * @generated
155 * @ordered
156 */
157 protected String id5 = ID5_EDEFAULT;
158
159 /**
160 * <!-- begin-user-doc -->
161 * <!-- end-user-doc -->
162 * @generated
163 */
164 protected Income_DetailImpl() {
165 super();
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 protected EClass eStaticClass() {
175 return TaxationPackage.Literals.INCOME_DETAIL;
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 @Override
184 public double getAmount() {
185 return amount;
186 }
187
188 /**
189 * <!-- begin-user-doc -->
190 * <!-- end-user-doc -->
191 * @generated
192 */
193 @Override
194 public void setAmount(double newAmount) {
195 double oldAmount = amount;
196 amount = newAmount;
197 if (eNotificationRequired())
198 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__AMOUNT, oldAmount, amount));
199 }
200
201 /**
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @generated
205 */
206 @Override
207 public boolean isIs_worked() {
208 return is_worked;
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public void setIs_worked(boolean newIs_worked) {
218 boolean oldIs_worked = is_worked;
219 is_worked = newIs_worked;
220 if (eNotificationRequired())
221 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__IS_WORKED, oldIs_worked, is_worked));
222 }
223
224 /**
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @generated
228 */
229 @Override
230 public double getDistance() {
231 return distance;
232 }
233
234 /**
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @generated
238 */
239 @Override
240 public void setDistance(double newDistance) {
241 double oldDistance = distance;
242 distance = newDistance;
243 if (eNotificationRequired())
244 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__DISTANCE, oldDistance, distance));
245 }
246
247 /**
248 * <!-- begin-user-doc -->
249 * <!-- end-user-doc -->
250 * @generated
251 */
252 @Override
253 public int getWorked_days() {
254 return worked_days;
255 }
256
257 /**
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @generated
261 */
262 @Override
263 public void setWorked_days(int newWorked_days) {
264 int oldWorked_days = worked_days;
265 worked_days = newWorked_days;
266 if (eNotificationRequired())
267 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__WORKED_DAYS, oldWorked_days, worked_days));
268 }
269
270 /**
271 * <!-- begin-user-doc -->
272 * <!-- end-user-doc -->
273 * @generated
274 */
275 @Override
276 public boolean isIs_contributing_CNS() {
277 return is_contributing_CNS;
278 }
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 @Override
286 public void setIs_contributing_CNS(boolean newIs_contributing_CNS) {
287 boolean oldIs_contributing_CNS = is_contributing_CNS;
288 is_contributing_CNS = newIs_contributing_CNS;
289 if (eNotificationRequired())
290 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__IS_CONTRIBUTING_CNS, oldIs_contributing_CNS, is_contributing_CNS));
291 }
292
293 /**
294 * <!-- begin-user-doc -->
295 * <!-- end-user-doc -->
296 * @generated
297 */
298 @Override
299 public String getId5() {
300 return id5;
301 }
302
303 /**
304 * <!-- begin-user-doc -->
305 * <!-- end-user-doc -->
306 * @generated
307 */
308 @Override
309 public void setId5(String newId5) {
310 String oldId5 = id5;
311 id5 = newId5;
312 if (eNotificationRequired())
313 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__ID5, oldId5, id5));
314 }
315
316 /**
317 * <!-- begin-user-doc -->
318 * <!-- end-user-doc -->
319 * @generated
320 */
321 @Override
322 public Income getIncome() {
323 if (eContainerFeatureID() != TaxationPackage.INCOME_DETAIL__INCOME) return null;
324 return (Income)eInternalContainer();
325 }
326
327 /**
328 * <!-- begin-user-doc -->
329 * <!-- end-user-doc -->
330 * @generated
331 */
332 public NotificationChain basicSetIncome(Income newIncome, NotificationChain msgs) {
333 msgs = eBasicSetContainer((InternalEObject)newIncome, TaxationPackage.INCOME_DETAIL__INCOME, msgs);
334 return msgs;
335 }
336
337 /**
338 * <!-- begin-user-doc -->
339 * <!-- end-user-doc -->
340 * @generated
341 */
342 @Override
343 public void setIncome(Income newIncome) {
344 if (newIncome != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.INCOME_DETAIL__INCOME && newIncome != null)) {
345 if (EcoreUtil.isAncestor(this, newIncome))
346 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
347 NotificationChain msgs = null;
348 if (eInternalContainer() != null)
349 msgs = eBasicRemoveFromContainer(msgs);
350 if (newIncome != null)
351 msgs = ((InternalEObject)newIncome).eInverseAdd(this, TaxationPackage.INCOME__DETAILS, Income.class, msgs);
352 msgs = basicSetIncome(newIncome, msgs);
353 if (msgs != null) msgs.dispatch();
354 }
355 else if (eNotificationRequired())
356 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_DETAIL__INCOME, newIncome, newIncome));
357 }
358
359 /**
360 * <!-- begin-user-doc -->
361 * <!-- end-user-doc -->
362 * @generated
363 */
364 @Override
365 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
366 switch (featureID) {
367 case TaxationPackage.INCOME_DETAIL__INCOME:
368 if (eInternalContainer() != null)
369 msgs = eBasicRemoveFromContainer(msgs);
370 return basicSetIncome((Income)otherEnd, msgs);
371 }
372 return super.eInverseAdd(otherEnd, featureID, msgs);
373 }
374
375 /**
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @generated
379 */
380 @Override
381 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
382 switch (featureID) {
383 case TaxationPackage.INCOME_DETAIL__INCOME:
384 return basicSetIncome(null, msgs);
385 }
386 return super.eInverseRemove(otherEnd, featureID, msgs);
387 }
388
389 /**
390 * <!-- begin-user-doc -->
391 * <!-- end-user-doc -->
392 * @generated
393 */
394 @Override
395 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
396 switch (eContainerFeatureID()) {
397 case TaxationPackage.INCOME_DETAIL__INCOME:
398 return eInternalContainer().eInverseRemove(this, TaxationPackage.INCOME__DETAILS, Income.class, msgs);
399 }
400 return super.eBasicRemoveFromContainerFeature(msgs);
401 }
402
403 /**
404 * <!-- begin-user-doc -->
405 * <!-- end-user-doc -->
406 * @generated
407 */
408 @Override
409 public Object eGet(int featureID, boolean resolve, boolean coreType) {
410 switch (featureID) {
411 case TaxationPackage.INCOME_DETAIL__AMOUNT:
412 return getAmount();
413 case TaxationPackage.INCOME_DETAIL__IS_WORKED:
414 return isIs_worked();
415 case TaxationPackage.INCOME_DETAIL__DISTANCE:
416 return getDistance();
417 case TaxationPackage.INCOME_DETAIL__WORKED_DAYS:
418 return getWorked_days();
419 case TaxationPackage.INCOME_DETAIL__IS_CONTRIBUTING_CNS:
420 return isIs_contributing_CNS();
421 case TaxationPackage.INCOME_DETAIL__ID5:
422 return getId5();
423 case TaxationPackage.INCOME_DETAIL__INCOME:
424 return getIncome();
425 }
426 return super.eGet(featureID, resolve, coreType);
427 }
428
429 /**
430 * <!-- begin-user-doc -->
431 * <!-- end-user-doc -->
432 * @generated
433 */
434 @Override
435 public void eSet(int featureID, Object newValue) {
436 switch (featureID) {
437 case TaxationPackage.INCOME_DETAIL__AMOUNT:
438 setAmount((Double)newValue);
439 return;
440 case TaxationPackage.INCOME_DETAIL__IS_WORKED:
441 setIs_worked((Boolean)newValue);
442 return;
443 case TaxationPackage.INCOME_DETAIL__DISTANCE:
444 setDistance((Double)newValue);
445 return;
446 case TaxationPackage.INCOME_DETAIL__WORKED_DAYS:
447 setWorked_days((Integer)newValue);
448 return;
449 case TaxationPackage.INCOME_DETAIL__IS_CONTRIBUTING_CNS:
450 setIs_contributing_CNS((Boolean)newValue);
451 return;
452 case TaxationPackage.INCOME_DETAIL__ID5:
453 setId5((String)newValue);
454 return;
455 case TaxationPackage.INCOME_DETAIL__INCOME:
456 setIncome((Income)newValue);
457 return;
458 }
459 super.eSet(featureID, newValue);
460 }
461
462 /**
463 * <!-- begin-user-doc -->
464 * <!-- end-user-doc -->
465 * @generated
466 */
467 @Override
468 public void eUnset(int featureID) {
469 switch (featureID) {
470 case TaxationPackage.INCOME_DETAIL__AMOUNT:
471 setAmount(AMOUNT_EDEFAULT);
472 return;
473 case TaxationPackage.INCOME_DETAIL__IS_WORKED:
474 setIs_worked(IS_WORKED_EDEFAULT);
475 return;
476 case TaxationPackage.INCOME_DETAIL__DISTANCE:
477 setDistance(DISTANCE_EDEFAULT);
478 return;
479 case TaxationPackage.INCOME_DETAIL__WORKED_DAYS:
480 setWorked_days(WORKED_DAYS_EDEFAULT);
481 return;
482 case TaxationPackage.INCOME_DETAIL__IS_CONTRIBUTING_CNS:
483 setIs_contributing_CNS(IS_CONTRIBUTING_CNS_EDEFAULT);
484 return;
485 case TaxationPackage.INCOME_DETAIL__ID5:
486 setId5(ID5_EDEFAULT);
487 return;
488 case TaxationPackage.INCOME_DETAIL__INCOME:
489 setIncome((Income)null);
490 return;
491 }
492 super.eUnset(featureID);
493 }
494
495 /**
496 * <!-- begin-user-doc -->
497 * <!-- end-user-doc -->
498 * @generated
499 */
500 @Override
501 public boolean eIsSet(int featureID) {
502 switch (featureID) {
503 case TaxationPackage.INCOME_DETAIL__AMOUNT:
504 return amount != AMOUNT_EDEFAULT;
505 case TaxationPackage.INCOME_DETAIL__IS_WORKED:
506 return is_worked != IS_WORKED_EDEFAULT;
507 case TaxationPackage.INCOME_DETAIL__DISTANCE:
508 return distance != DISTANCE_EDEFAULT;
509 case TaxationPackage.INCOME_DETAIL__WORKED_DAYS:
510 return worked_days != WORKED_DAYS_EDEFAULT;
511 case TaxationPackage.INCOME_DETAIL__IS_CONTRIBUTING_CNS:
512 return is_contributing_CNS != IS_CONTRIBUTING_CNS_EDEFAULT;
513 case TaxationPackage.INCOME_DETAIL__ID5:
514 return ID5_EDEFAULT == null ? id5 != null : !ID5_EDEFAULT.equals(id5);
515 case TaxationPackage.INCOME_DETAIL__INCOME:
516 return getIncome() != null;
517 }
518 return super.eIsSet(featureID);
519 }
520
521 /**
522 * <!-- begin-user-doc -->
523 * <!-- end-user-doc -->
524 * @generated
525 */
526 @Override
527 public String toString() {
528 if (eIsProxy()) return super.toString();
529
530 StringBuilder result = new StringBuilder(super.toString());
531 result.append(" (amount: ");
532 result.append(amount);
533 result.append(", is_worked: ");
534 result.append(is_worked);
535 result.append(", distance: ");
536 result.append(distance);
537 result.append(", worked_days: ");
538 result.append(worked_days);
539 result.append(", is_contributing_CNS: ");
540 result.append(is_contributing_CNS);
541 result.append(", id5: ");
542 result.append(id5);
543 result.append(')');
544 return result.toString();
545 }
546
547} //Income_DetailImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TaxImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TaxImpl.java
new file mode 100644
index 00000000..3083b3fa
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TaxImpl.java
@@ -0,0 +1,340 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Income_Tax;
6import Taxation.Tax_Payer;
7import Taxation.TaxationPackage;
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.InternalEObject;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
15
16/**
17 * <!-- begin-user-doc -->
18 * An implementation of the model object '<em><b>Income Tax</b></em>'.
19 * <!-- end-user-doc -->
20 * <p>
21 * The following features are implemented:
22 * </p>
23 * <ul>
24 * <li>{@link Taxation.impl.Income_TaxImpl#getTaxPayer <em>Tax Payer</em>}</li>
25 * <li>{@link Taxation.impl.Income_TaxImpl#getTax_amount <em>Tax amount</em>}</li>
26 * <li>{@link Taxation.impl.Income_TaxImpl#getTax_year <em>Tax year</em>}</li>
27 * <li>{@link Taxation.impl.Income_TaxImpl#getId6 <em>Id6</em>}</li>
28 * </ul>
29 *
30 * @generated
31 */
32public class Income_TaxImpl extends MinimalEObjectImpl.Container implements Income_Tax {
33 /**
34 * The cached value of the '{@link #getTaxPayer() <em>Tax Payer</em>}' reference.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @see #getTaxPayer()
38 * @generated
39 * @ordered
40 */
41 protected Tax_Payer taxPayer;
42
43 /**
44 * The default value of the '{@link #getTax_amount() <em>Tax amount</em>}' attribute.
45 * <!-- begin-user-doc -->
46 * <!-- end-user-doc -->
47 * @see #getTax_amount()
48 * @generated
49 * @ordered
50 */
51 protected static final double TAX_AMOUNT_EDEFAULT = 0.0;
52
53 /**
54 * The cached value of the '{@link #getTax_amount() <em>Tax amount</em>}' attribute.
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @see #getTax_amount()
58 * @generated
59 * @ordered
60 */
61 protected double tax_amount = TAX_AMOUNT_EDEFAULT;
62
63 /**
64 * The default value of the '{@link #getTax_year() <em>Tax year</em>}' attribute.
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @see #getTax_year()
68 * @generated
69 * @ordered
70 */
71 protected static final int TAX_YEAR_EDEFAULT = 0;
72
73 /**
74 * The cached value of the '{@link #getTax_year() <em>Tax year</em>}' attribute.
75 * <!-- begin-user-doc -->
76 * <!-- end-user-doc -->
77 * @see #getTax_year()
78 * @generated
79 * @ordered
80 */
81 protected int tax_year = TAX_YEAR_EDEFAULT;
82
83 /**
84 * The default value of the '{@link #getId6() <em>Id6</em>}' attribute.
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @see #getId6()
88 * @generated
89 * @ordered
90 */
91 protected static final String ID6_EDEFAULT = null;
92
93 /**
94 * The cached value of the '{@link #getId6() <em>Id6</em>}' attribute.
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @see #getId6()
98 * @generated
99 * @ordered
100 */
101 protected String id6 = ID6_EDEFAULT;
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 protected Income_TaxImpl() {
109 super();
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
118 protected EClass eStaticClass() {
119 return TaxationPackage.Literals.INCOME_TAX;
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public Tax_Payer getTaxPayer() {
129 if (taxPayer != null && taxPayer.eIsProxy()) {
130 InternalEObject oldTaxPayer = (InternalEObject)taxPayer;
131 taxPayer = (Tax_Payer)eResolveProxy(oldTaxPayer);
132 if (taxPayer != oldTaxPayer) {
133 if (eNotificationRequired())
134 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.INCOME_TAX__TAX_PAYER, oldTaxPayer, taxPayer));
135 }
136 }
137 return taxPayer;
138 }
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 public Tax_Payer basicGetTaxPayer() {
146 return taxPayer;
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 @Override
155 public void setTaxPayer(Tax_Payer newTaxPayer) {
156 Tax_Payer oldTaxPayer = taxPayer;
157 taxPayer = newTaxPayer;
158 if (eNotificationRequired())
159 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX__TAX_PAYER, oldTaxPayer, taxPayer));
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public double getTax_amount() {
169 return tax_amount;
170 }
171
172 /**
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @generated
176 */
177 @Override
178 public void setTax_amount(double newTax_amount) {
179 double oldTax_amount = tax_amount;
180 tax_amount = newTax_amount;
181 if (eNotificationRequired())
182 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX__TAX_AMOUNT, oldTax_amount, tax_amount));
183 }
184
185 /**
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @generated
189 */
190 @Override
191 public int getTax_year() {
192 return tax_year;
193 }
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 @Override
201 public void setTax_year(int newTax_year) {
202 int oldTax_year = tax_year;
203 tax_year = newTax_year;
204 if (eNotificationRequired())
205 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX__TAX_YEAR, oldTax_year, tax_year));
206 }
207
208 /**
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @generated
212 */
213 @Override
214 public String getId6() {
215 return id6;
216 }
217
218 /**
219 * <!-- begin-user-doc -->
220 * <!-- end-user-doc -->
221 * @generated
222 */
223 @Override
224 public void setId6(String newId6) {
225 String oldId6 = id6;
226 id6 = newId6;
227 if (eNotificationRequired())
228 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX__ID6, oldId6, id6));
229 }
230
231 /**
232 * <!-- begin-user-doc -->
233 * <!-- end-user-doc -->
234 * @generated
235 */
236 @Override
237 public Object eGet(int featureID, boolean resolve, boolean coreType) {
238 switch (featureID) {
239 case TaxationPackage.INCOME_TAX__TAX_PAYER:
240 if (resolve) return getTaxPayer();
241 return basicGetTaxPayer();
242 case TaxationPackage.INCOME_TAX__TAX_AMOUNT:
243 return getTax_amount();
244 case TaxationPackage.INCOME_TAX__TAX_YEAR:
245 return getTax_year();
246 case TaxationPackage.INCOME_TAX__ID6:
247 return getId6();
248 }
249 return super.eGet(featureID, resolve, coreType);
250 }
251
252 /**
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 */
257 @Override
258 public void eSet(int featureID, Object newValue) {
259 switch (featureID) {
260 case TaxationPackage.INCOME_TAX__TAX_PAYER:
261 setTaxPayer((Tax_Payer)newValue);
262 return;
263 case TaxationPackage.INCOME_TAX__TAX_AMOUNT:
264 setTax_amount((Double)newValue);
265 return;
266 case TaxationPackage.INCOME_TAX__TAX_YEAR:
267 setTax_year((Integer)newValue);
268 return;
269 case TaxationPackage.INCOME_TAX__ID6:
270 setId6((String)newValue);
271 return;
272 }
273 super.eSet(featureID, newValue);
274 }
275
276 /**
277 * <!-- begin-user-doc -->
278 * <!-- end-user-doc -->
279 * @generated
280 */
281 @Override
282 public void eUnset(int featureID) {
283 switch (featureID) {
284 case TaxationPackage.INCOME_TAX__TAX_PAYER:
285 setTaxPayer((Tax_Payer)null);
286 return;
287 case TaxationPackage.INCOME_TAX__TAX_AMOUNT:
288 setTax_amount(TAX_AMOUNT_EDEFAULT);
289 return;
290 case TaxationPackage.INCOME_TAX__TAX_YEAR:
291 setTax_year(TAX_YEAR_EDEFAULT);
292 return;
293 case TaxationPackage.INCOME_TAX__ID6:
294 setId6(ID6_EDEFAULT);
295 return;
296 }
297 super.eUnset(featureID);
298 }
299
300 /**
301 * <!-- begin-user-doc -->
302 * <!-- end-user-doc -->
303 * @generated
304 */
305 @Override
306 public boolean eIsSet(int featureID) {
307 switch (featureID) {
308 case TaxationPackage.INCOME_TAX__TAX_PAYER:
309 return taxPayer != null;
310 case TaxationPackage.INCOME_TAX__TAX_AMOUNT:
311 return tax_amount != TAX_AMOUNT_EDEFAULT;
312 case TaxationPackage.INCOME_TAX__TAX_YEAR:
313 return tax_year != TAX_YEAR_EDEFAULT;
314 case TaxationPackage.INCOME_TAX__ID6:
315 return ID6_EDEFAULT == null ? id6 != null : !ID6_EDEFAULT.equals(id6);
316 }
317 return super.eIsSet(featureID);
318 }
319
320 /**
321 * <!-- begin-user-doc -->
322 * <!-- end-user-doc -->
323 * @generated
324 */
325 @Override
326 public String toString() {
327 if (eIsProxy()) return super.toString();
328
329 StringBuilder result = new StringBuilder(super.toString());
330 result.append(" (tax_amount: ");
331 result.append(tax_amount);
332 result.append(", tax_year: ");
333 result.append(tax_year);
334 result.append(", id6: ");
335 result.append(id6);
336 result.append(')');
337 return result.toString();
338 }
339
340} //Income_TaxImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_Tax_CreditImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_Tax_CreditImpl.java
new file mode 100644
index 00000000..0dbd6e21
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_Tax_CreditImpl.java
@@ -0,0 +1,625 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Grantor;
6import Taxation.Income_Tax_Credit;
7import Taxation.Tax_Card;
8import Taxation.Tax_Payer;
9import Taxation.TaxationPackage;
10import org.eclipse.emf.common.notify.Notification;
11import org.eclipse.emf.common.notify.NotificationChain;
12
13import org.eclipse.emf.ecore.EClass;
14import org.eclipse.emf.ecore.InternalEObject;
15
16import org.eclipse.emf.ecore.impl.ENotificationImpl;
17import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
18
19/**
20 * <!-- begin-user-doc -->
21 * An implementation of the model object '<em><b>Income Tax Credit</b></em>'.
22 * <!-- end-user-doc -->
23 * <p>
24 * The following features are implemented:
25 * </p>
26 * <ul>
27 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getGrantedBy <em>Granted By</em>}</li>
28 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getTaxPayer <em>Tax Payer</em>}</li>
29 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getTax_year <em>Tax year</em>}</li>
30 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getYearly <em>Yearly</em>}</li>
31 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getMonthly <em>Monthly</em>}</li>
32 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getDaily <em>Daily</em>}</li>
33 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getId7 <em>Id7</em>}</li>
34 * <li>{@link Taxation.impl.Income_Tax_CreditImpl#getTaxation_Frame <em>Taxation Frame</em>}</li>
35 * </ul>
36 *
37 * @generated
38 */
39public class Income_Tax_CreditImpl extends MinimalEObjectImpl.Container implements Income_Tax_Credit {
40 /**
41 * The default value of the '{@link #getGrantedBy() <em>Granted By</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getGrantedBy()
45 * @generated
46 * @ordered
47 */
48 protected static final Grantor GRANTED_BY_EDEFAULT = Grantor.WWW;
49
50 /**
51 * The cached value of the '{@link #getGrantedBy() <em>Granted By</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #getGrantedBy()
55 * @generated
56 * @ordered
57 */
58 protected Grantor grantedBy = GRANTED_BY_EDEFAULT;
59
60 /**
61 * The cached value of the '{@link #getTaxPayer() <em>Tax Payer</em>}' reference.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #getTaxPayer()
65 * @generated
66 * @ordered
67 */
68 protected Tax_Payer taxPayer;
69
70 /**
71 * The default value of the '{@link #getTax_year() <em>Tax year</em>}' attribute.
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @see #getTax_year()
75 * @generated
76 * @ordered
77 */
78 protected static final int TAX_YEAR_EDEFAULT = 0;
79
80 /**
81 * The cached value of the '{@link #getTax_year() <em>Tax year</em>}' attribute.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @see #getTax_year()
85 * @generated
86 * @ordered
87 */
88 protected int tax_year = TAX_YEAR_EDEFAULT;
89
90 /**
91 * The default value of the '{@link #getYearly() <em>Yearly</em>}' attribute.
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @see #getYearly()
95 * @generated
96 * @ordered
97 */
98 protected static final double YEARLY_EDEFAULT = 300.0;
99
100 /**
101 * The cached value of the '{@link #getYearly() <em>Yearly</em>}' attribute.
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @see #getYearly()
105 * @generated
106 * @ordered
107 */
108 protected double yearly = YEARLY_EDEFAULT;
109
110 /**
111 * The default value of the '{@link #getMonthly() <em>Monthly</em>}' attribute.
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @see #getMonthly()
115 * @generated
116 * @ordered
117 */
118 protected static final double MONTHLY_EDEFAULT = 25.0;
119
120 /**
121 * The cached value of the '{@link #getMonthly() <em>Monthly</em>}' attribute.
122 * <!-- begin-user-doc -->
123 * <!-- end-user-doc -->
124 * @see #getMonthly()
125 * @generated
126 * @ordered
127 */
128 protected double monthly = MONTHLY_EDEFAULT;
129
130 /**
131 * The default value of the '{@link #getDaily() <em>Daily</em>}' attribute.
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @see #getDaily()
135 * @generated
136 * @ordered
137 */
138 protected static final double DAILY_EDEFAULT = 1.0;
139
140 /**
141 * The cached value of the '{@link #getDaily() <em>Daily</em>}' attribute.
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @see #getDaily()
145 * @generated
146 * @ordered
147 */
148 protected double daily = DAILY_EDEFAULT;
149
150 /**
151 * The default value of the '{@link #getId7() <em>Id7</em>}' attribute.
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @see #getId7()
155 * @generated
156 * @ordered
157 */
158 protected static final String ID7_EDEFAULT = null;
159
160 /**
161 * The cached value of the '{@link #getId7() <em>Id7</em>}' attribute.
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @see #getId7()
165 * @generated
166 * @ordered
167 */
168 protected String id7 = ID7_EDEFAULT;
169
170 /**
171 * The cached value of the '{@link #getTaxation_Frame() <em>Taxation Frame</em>}' reference.
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @see #getTaxation_Frame()
175 * @generated
176 * @ordered
177 */
178 protected Tax_Card taxation_Frame;
179
180 /**
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @generated
184 */
185 protected Income_Tax_CreditImpl() {
186 super();
187 }
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 @Override
195 protected EClass eStaticClass() {
196 return TaxationPackage.Literals.INCOME_TAX_CREDIT;
197 }
198
199 /**
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public Grantor getGrantedBy() {
206 return grantedBy;
207 }
208
209 /**
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 */
214 @Override
215 public void setGrantedBy(Grantor newGrantedBy) {
216 Grantor oldGrantedBy = grantedBy;
217 grantedBy = newGrantedBy == null ? GRANTED_BY_EDEFAULT : newGrantedBy;
218 if (eNotificationRequired())
219 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__GRANTED_BY, oldGrantedBy, grantedBy));
220 }
221
222 /**
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public Tax_Payer getTaxPayer() {
229 if (taxPayer != null && taxPayer.eIsProxy()) {
230 InternalEObject oldTaxPayer = (InternalEObject)taxPayer;
231 taxPayer = (Tax_Payer)eResolveProxy(oldTaxPayer);
232 if (taxPayer != oldTaxPayer) {
233 if (eNotificationRequired())
234 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.INCOME_TAX_CREDIT__TAX_PAYER, oldTaxPayer, taxPayer));
235 }
236 }
237 return taxPayer;
238 }
239
240 /**
241 * <!-- begin-user-doc -->
242 * <!-- end-user-doc -->
243 * @generated
244 */
245 public Tax_Payer basicGetTaxPayer() {
246 return taxPayer;
247 }
248
249 /**
250 * <!-- begin-user-doc -->
251 * <!-- end-user-doc -->
252 * @generated
253 */
254 @Override
255 public void setTaxPayer(Tax_Payer newTaxPayer) {
256 Tax_Payer oldTaxPayer = taxPayer;
257 taxPayer = newTaxPayer;
258 if (eNotificationRequired())
259 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__TAX_PAYER, oldTaxPayer, taxPayer));
260 }
261
262 /**
263 * <!-- begin-user-doc -->
264 * <!-- end-user-doc -->
265 * @generated
266 */
267 @Override
268 public int getTax_year() {
269 return tax_year;
270 }
271
272 /**
273 * <!-- begin-user-doc -->
274 * <!-- end-user-doc -->
275 * @generated
276 */
277 @Override
278 public void setTax_year(int newTax_year) {
279 int oldTax_year = tax_year;
280 tax_year = newTax_year;
281 if (eNotificationRequired())
282 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__TAX_YEAR, oldTax_year, tax_year));
283 }
284
285 /**
286 * <!-- begin-user-doc -->
287 * <!-- end-user-doc -->
288 * @generated
289 */
290 @Override
291 public double getYearly() {
292 return yearly;
293 }
294
295 /**
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @generated
299 */
300 @Override
301 public void setYearly(double newYearly) {
302 double oldYearly = yearly;
303 yearly = newYearly;
304 if (eNotificationRequired())
305 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__YEARLY, oldYearly, yearly));
306 }
307
308 /**
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @generated
312 */
313 @Override
314 public double getMonthly() {
315 return monthly;
316 }
317
318 /**
319 * <!-- begin-user-doc -->
320 * <!-- end-user-doc -->
321 * @generated
322 */
323 @Override
324 public void setMonthly(double newMonthly) {
325 double oldMonthly = monthly;
326 monthly = newMonthly;
327 if (eNotificationRequired())
328 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__MONTHLY, oldMonthly, monthly));
329 }
330
331 /**
332 * <!-- begin-user-doc -->
333 * <!-- end-user-doc -->
334 * @generated
335 */
336 @Override
337 public double getDaily() {
338 return daily;
339 }
340
341 /**
342 * <!-- begin-user-doc -->
343 * <!-- end-user-doc -->
344 * @generated
345 */
346 @Override
347 public void setDaily(double newDaily) {
348 double oldDaily = daily;
349 daily = newDaily;
350 if (eNotificationRequired())
351 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__DAILY, oldDaily, daily));
352 }
353
354 /**
355 * <!-- begin-user-doc -->
356 * <!-- end-user-doc -->
357 * @generated
358 */
359 @Override
360 public String getId7() {
361 return id7;
362 }
363
364 /**
365 * <!-- begin-user-doc -->
366 * <!-- end-user-doc -->
367 * @generated
368 */
369 @Override
370 public void setId7(String newId7) {
371 String oldId7 = id7;
372 id7 = newId7;
373 if (eNotificationRequired())
374 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__ID7, oldId7, id7));
375 }
376
377 /**
378 * <!-- begin-user-doc -->
379 * <!-- end-user-doc -->
380 * @generated
381 */
382 @Override
383 public Tax_Card getTaxation_Frame() {
384 if (taxation_Frame != null && taxation_Frame.eIsProxy()) {
385 InternalEObject oldTaxation_Frame = (InternalEObject)taxation_Frame;
386 taxation_Frame = (Tax_Card)eResolveProxy(oldTaxation_Frame);
387 if (taxation_Frame != oldTaxation_Frame) {
388 if (eNotificationRequired())
389 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME, oldTaxation_Frame, taxation_Frame));
390 }
391 }
392 return taxation_Frame;
393 }
394
395 /**
396 * <!-- begin-user-doc -->
397 * <!-- end-user-doc -->
398 * @generated
399 */
400 public Tax_Card basicGetTaxation_Frame() {
401 return taxation_Frame;
402 }
403
404 /**
405 * <!-- begin-user-doc -->
406 * <!-- end-user-doc -->
407 * @generated
408 */
409 public NotificationChain basicSetTaxation_Frame(Tax_Card newTaxation_Frame, NotificationChain msgs) {
410 Tax_Card oldTaxation_Frame = taxation_Frame;
411 taxation_Frame = newTaxation_Frame;
412 if (eNotificationRequired()) {
413 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME, oldTaxation_Frame, newTaxation_Frame);
414 if (msgs == null) msgs = notification; else msgs.add(notification);
415 }
416 return msgs;
417 }
418
419 /**
420 * <!-- begin-user-doc -->
421 * <!-- end-user-doc -->
422 * @generated
423 */
424 @Override
425 public void setTaxation_Frame(Tax_Card newTaxation_Frame) {
426 if (newTaxation_Frame != taxation_Frame) {
427 NotificationChain msgs = null;
428 if (taxation_Frame != null)
429 msgs = ((InternalEObject)taxation_Frame).eInverseRemove(this, TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT, Tax_Card.class, msgs);
430 if (newTaxation_Frame != null)
431 msgs = ((InternalEObject)newTaxation_Frame).eInverseAdd(this, TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT, Tax_Card.class, msgs);
432 msgs = basicSetTaxation_Frame(newTaxation_Frame, msgs);
433 if (msgs != null) msgs.dispatch();
434 }
435 else if (eNotificationRequired())
436 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME, newTaxation_Frame, newTaxation_Frame));
437 }
438
439 /**
440 * <!-- begin-user-doc -->
441 * <!-- end-user-doc -->
442 * @generated
443 */
444 @Override
445 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
446 switch (featureID) {
447 case TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME:
448 if (taxation_Frame != null)
449 msgs = ((InternalEObject)taxation_Frame).eInverseRemove(this, TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT, Tax_Card.class, msgs);
450 return basicSetTaxation_Frame((Tax_Card)otherEnd, msgs);
451 }
452 return super.eInverseAdd(otherEnd, featureID, msgs);
453 }
454
455 /**
456 * <!-- begin-user-doc -->
457 * <!-- end-user-doc -->
458 * @generated
459 */
460 @Override
461 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
462 switch (featureID) {
463 case TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME:
464 return basicSetTaxation_Frame(null, msgs);
465 }
466 return super.eInverseRemove(otherEnd, featureID, msgs);
467 }
468
469 /**
470 * <!-- begin-user-doc -->
471 * <!-- end-user-doc -->
472 * @generated
473 */
474 @Override
475 public Object eGet(int featureID, boolean resolve, boolean coreType) {
476 switch (featureID) {
477 case TaxationPackage.INCOME_TAX_CREDIT__GRANTED_BY:
478 return getGrantedBy();
479 case TaxationPackage.INCOME_TAX_CREDIT__TAX_PAYER:
480 if (resolve) return getTaxPayer();
481 return basicGetTaxPayer();
482 case TaxationPackage.INCOME_TAX_CREDIT__TAX_YEAR:
483 return getTax_year();
484 case TaxationPackage.INCOME_TAX_CREDIT__YEARLY:
485 return getYearly();
486 case TaxationPackage.INCOME_TAX_CREDIT__MONTHLY:
487 return getMonthly();
488 case TaxationPackage.INCOME_TAX_CREDIT__DAILY:
489 return getDaily();
490 case TaxationPackage.INCOME_TAX_CREDIT__ID7:
491 return getId7();
492 case TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME:
493 if (resolve) return getTaxation_Frame();
494 return basicGetTaxation_Frame();
495 }
496 return super.eGet(featureID, resolve, coreType);
497 }
498
499 /**
500 * <!-- begin-user-doc -->
501 * <!-- end-user-doc -->
502 * @generated
503 */
504 @Override
505 public void eSet(int featureID, Object newValue) {
506 switch (featureID) {
507 case TaxationPackage.INCOME_TAX_CREDIT__GRANTED_BY:
508 setGrantedBy((Grantor)newValue);
509 return;
510 case TaxationPackage.INCOME_TAX_CREDIT__TAX_PAYER:
511 setTaxPayer((Tax_Payer)newValue);
512 return;
513 case TaxationPackage.INCOME_TAX_CREDIT__TAX_YEAR:
514 setTax_year((Integer)newValue);
515 return;
516 case TaxationPackage.INCOME_TAX_CREDIT__YEARLY:
517 setYearly((Double)newValue);
518 return;
519 case TaxationPackage.INCOME_TAX_CREDIT__MONTHLY:
520 setMonthly((Double)newValue);
521 return;
522 case TaxationPackage.INCOME_TAX_CREDIT__DAILY:
523 setDaily((Double)newValue);
524 return;
525 case TaxationPackage.INCOME_TAX_CREDIT__ID7:
526 setId7((String)newValue);
527 return;
528 case TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME:
529 setTaxation_Frame((Tax_Card)newValue);
530 return;
531 }
532 super.eSet(featureID, newValue);
533 }
534
535 /**
536 * <!-- begin-user-doc -->
537 * <!-- end-user-doc -->
538 * @generated
539 */
540 @Override
541 public void eUnset(int featureID) {
542 switch (featureID) {
543 case TaxationPackage.INCOME_TAX_CREDIT__GRANTED_BY:
544 setGrantedBy(GRANTED_BY_EDEFAULT);
545 return;
546 case TaxationPackage.INCOME_TAX_CREDIT__TAX_PAYER:
547 setTaxPayer((Tax_Payer)null);
548 return;
549 case TaxationPackage.INCOME_TAX_CREDIT__TAX_YEAR:
550 setTax_year(TAX_YEAR_EDEFAULT);
551 return;
552 case TaxationPackage.INCOME_TAX_CREDIT__YEARLY:
553 setYearly(YEARLY_EDEFAULT);
554 return;
555 case TaxationPackage.INCOME_TAX_CREDIT__MONTHLY:
556 setMonthly(MONTHLY_EDEFAULT);
557 return;
558 case TaxationPackage.INCOME_TAX_CREDIT__DAILY:
559 setDaily(DAILY_EDEFAULT);
560 return;
561 case TaxationPackage.INCOME_TAX_CREDIT__ID7:
562 setId7(ID7_EDEFAULT);
563 return;
564 case TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME:
565 setTaxation_Frame((Tax_Card)null);
566 return;
567 }
568 super.eUnset(featureID);
569 }
570
571 /**
572 * <!-- begin-user-doc -->
573 * <!-- end-user-doc -->
574 * @generated
575 */
576 @Override
577 public boolean eIsSet(int featureID) {
578 switch (featureID) {
579 case TaxationPackage.INCOME_TAX_CREDIT__GRANTED_BY:
580 return grantedBy != GRANTED_BY_EDEFAULT;
581 case TaxationPackage.INCOME_TAX_CREDIT__TAX_PAYER:
582 return taxPayer != null;
583 case TaxationPackage.INCOME_TAX_CREDIT__TAX_YEAR:
584 return tax_year != TAX_YEAR_EDEFAULT;
585 case TaxationPackage.INCOME_TAX_CREDIT__YEARLY:
586 return yearly != YEARLY_EDEFAULT;
587 case TaxationPackage.INCOME_TAX_CREDIT__MONTHLY:
588 return monthly != MONTHLY_EDEFAULT;
589 case TaxationPackage.INCOME_TAX_CREDIT__DAILY:
590 return daily != DAILY_EDEFAULT;
591 case TaxationPackage.INCOME_TAX_CREDIT__ID7:
592 return ID7_EDEFAULT == null ? id7 != null : !ID7_EDEFAULT.equals(id7);
593 case TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME:
594 return taxation_Frame != null;
595 }
596 return super.eIsSet(featureID);
597 }
598
599 /**
600 * <!-- begin-user-doc -->
601 * <!-- end-user-doc -->
602 * @generated
603 */
604 @Override
605 public String toString() {
606 if (eIsProxy()) return super.toString();
607
608 StringBuilder result = new StringBuilder(super.toString());
609 result.append(" (grantedBy: ");
610 result.append(grantedBy);
611 result.append(", tax_year: ");
612 result.append(tax_year);
613 result.append(", yearly: ");
614 result.append(yearly);
615 result.append(", monthly: ");
616 result.append(monthly);
617 result.append(", daily: ");
618 result.append(daily);
619 result.append(", id7: ");
620 result.append(id7);
621 result.append(')');
622 return result.toString();
623 }
624
625} //Income_Tax_CreditImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TypeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TypeImpl.java
new file mode 100644
index 00000000..7b2564b2
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Income_TypeImpl.java
@@ -0,0 +1,324 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Income;
6import Taxation.Income_Type;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10import org.eclipse.emf.common.notify.NotificationChain;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EcoreUtil;
19
20/**
21 * <!-- begin-user-doc -->
22 * An implementation of the model object '<em><b>Income Type</b></em>'.
23 * <!-- end-user-doc -->
24 * <p>
25 * The following features are implemented:
26 * </p>
27 * <ul>
28 * <li>{@link Taxation.impl.Income_TypeImpl#isSubjectToWithholdingTax <em>Subject To Withholding Tax</em>}</li>
29 * <li>{@link Taxation.impl.Income_TypeImpl#getId8 <em>Id8</em>}</li>
30 * <li>{@link Taxation.impl.Income_TypeImpl#getIncome <em>Income</em>}</li>
31 * </ul>
32 *
33 * @generated
34 */
35public abstract class Income_TypeImpl extends MinimalEObjectImpl.Container implements Income_Type {
36 /**
37 * The default value of the '{@link #isSubjectToWithholdingTax() <em>Subject To Withholding Tax</em>}' attribute.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @see #isSubjectToWithholdingTax()
41 * @generated
42 * @ordered
43 */
44 protected static final boolean SUBJECT_TO_WITHHOLDING_TAX_EDEFAULT = false;
45
46 /**
47 * The cached value of the '{@link #isSubjectToWithholdingTax() <em>Subject To Withholding Tax</em>}' attribute.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @see #isSubjectToWithholdingTax()
51 * @generated
52 * @ordered
53 */
54 protected boolean subjectToWithholdingTax = SUBJECT_TO_WITHHOLDING_TAX_EDEFAULT;
55
56 /**
57 * The default value of the '{@link #getId8() <em>Id8</em>}' attribute.
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @see #getId8()
61 * @generated
62 * @ordered
63 */
64 protected static final String ID8_EDEFAULT = null;
65
66 /**
67 * The cached value of the '{@link #getId8() <em>Id8</em>}' attribute.
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @see #getId8()
71 * @generated
72 * @ordered
73 */
74 protected String id8 = ID8_EDEFAULT;
75
76 /**
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @generated
80 */
81 protected Income_TypeImpl() {
82 super();
83 }
84
85 /**
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @generated
89 */
90 @Override
91 protected EClass eStaticClass() {
92 return TaxationPackage.Literals.INCOME_TYPE;
93 }
94
95 /**
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @generated
99 */
100 @Override
101 public boolean isSubjectToWithholdingTax() {
102 return subjectToWithholdingTax;
103 }
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 @Override
111 public void setSubjectToWithholdingTax(boolean newSubjectToWithholdingTax) {
112 boolean oldSubjectToWithholdingTax = subjectToWithholdingTax;
113 subjectToWithholdingTax = newSubjectToWithholdingTax;
114 if (eNotificationRequired())
115 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX, oldSubjectToWithholdingTax, subjectToWithholdingTax));
116 }
117
118 /**
119 * <!-- begin-user-doc -->
120 * <!-- end-user-doc -->
121 * @generated
122 */
123 @Override
124 public String getId8() {
125 return id8;
126 }
127
128 /**
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @generated
132 */
133 @Override
134 public void setId8(String newId8) {
135 String oldId8 = id8;
136 id8 = newId8;
137 if (eNotificationRequired())
138 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TYPE__ID8, oldId8, id8));
139 }
140
141 /**
142 * <!-- begin-user-doc -->
143 * <!-- end-user-doc -->
144 * @generated
145 */
146 @Override
147 public Income getIncome() {
148 if (eContainerFeatureID() != TaxationPackage.INCOME_TYPE__INCOME) return null;
149 return (Income)eInternalContainer();
150 }
151
152 /**
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 */
157 public NotificationChain basicSetIncome(Income newIncome, NotificationChain msgs) {
158 msgs = eBasicSetContainer((InternalEObject)newIncome, TaxationPackage.INCOME_TYPE__INCOME, msgs);
159 return msgs;
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public void setIncome(Income newIncome) {
169 if (newIncome != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.INCOME_TYPE__INCOME && newIncome != null)) {
170 if (EcoreUtil.isAncestor(this, newIncome))
171 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
172 NotificationChain msgs = null;
173 if (eInternalContainer() != null)
174 msgs = eBasicRemoveFromContainer(msgs);
175 if (newIncome != null)
176 msgs = ((InternalEObject)newIncome).eInverseAdd(this, TaxationPackage.INCOME__INCOME_TYPE, Income.class, msgs);
177 msgs = basicSetIncome(newIncome, msgs);
178 if (msgs != null) msgs.dispatch();
179 }
180 else if (eNotificationRequired())
181 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.INCOME_TYPE__INCOME, newIncome, newIncome));
182 }
183
184 /**
185 * <!-- begin-user-doc -->
186 * <!-- end-user-doc -->
187 * @generated
188 */
189 @Override
190 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
191 switch (featureID) {
192 case TaxationPackage.INCOME_TYPE__INCOME:
193 if (eInternalContainer() != null)
194 msgs = eBasicRemoveFromContainer(msgs);
195 return basicSetIncome((Income)otherEnd, msgs);
196 }
197 return super.eInverseAdd(otherEnd, featureID, msgs);
198 }
199
200 /**
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 */
205 @Override
206 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
207 switch (featureID) {
208 case TaxationPackage.INCOME_TYPE__INCOME:
209 return basicSetIncome(null, msgs);
210 }
211 return super.eInverseRemove(otherEnd, featureID, msgs);
212 }
213
214 /**
215 * <!-- begin-user-doc -->
216 * <!-- end-user-doc -->
217 * @generated
218 */
219 @Override
220 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
221 switch (eContainerFeatureID()) {
222 case TaxationPackage.INCOME_TYPE__INCOME:
223 return eInternalContainer().eInverseRemove(this, TaxationPackage.INCOME__INCOME_TYPE, Income.class, msgs);
224 }
225 return super.eBasicRemoveFromContainerFeature(msgs);
226 }
227
228 /**
229 * <!-- begin-user-doc -->
230 * <!-- end-user-doc -->
231 * @generated
232 */
233 @Override
234 public Object eGet(int featureID, boolean resolve, boolean coreType) {
235 switch (featureID) {
236 case TaxationPackage.INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX:
237 return isSubjectToWithholdingTax();
238 case TaxationPackage.INCOME_TYPE__ID8:
239 return getId8();
240 case TaxationPackage.INCOME_TYPE__INCOME:
241 return getIncome();
242 }
243 return super.eGet(featureID, resolve, coreType);
244 }
245
246 /**
247 * <!-- begin-user-doc -->
248 * <!-- end-user-doc -->
249 * @generated
250 */
251 @Override
252 public void eSet(int featureID, Object newValue) {
253 switch (featureID) {
254 case TaxationPackage.INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX:
255 setSubjectToWithholdingTax((Boolean)newValue);
256 return;
257 case TaxationPackage.INCOME_TYPE__ID8:
258 setId8((String)newValue);
259 return;
260 case TaxationPackage.INCOME_TYPE__INCOME:
261 setIncome((Income)newValue);
262 return;
263 }
264 super.eSet(featureID, newValue);
265 }
266
267 /**
268 * <!-- begin-user-doc -->
269 * <!-- end-user-doc -->
270 * @generated
271 */
272 @Override
273 public void eUnset(int featureID) {
274 switch (featureID) {
275 case TaxationPackage.INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX:
276 setSubjectToWithholdingTax(SUBJECT_TO_WITHHOLDING_TAX_EDEFAULT);
277 return;
278 case TaxationPackage.INCOME_TYPE__ID8:
279 setId8(ID8_EDEFAULT);
280 return;
281 case TaxationPackage.INCOME_TYPE__INCOME:
282 setIncome((Income)null);
283 return;
284 }
285 super.eUnset(featureID);
286 }
287
288 /**
289 * <!-- begin-user-doc -->
290 * <!-- end-user-doc -->
291 * @generated
292 */
293 @Override
294 public boolean eIsSet(int featureID) {
295 switch (featureID) {
296 case TaxationPackage.INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX:
297 return subjectToWithholdingTax != SUBJECT_TO_WITHHOLDING_TAX_EDEFAULT;
298 case TaxationPackage.INCOME_TYPE__ID8:
299 return ID8_EDEFAULT == null ? id8 != null : !ID8_EDEFAULT.equals(id8);
300 case TaxationPackage.INCOME_TYPE__INCOME:
301 return getIncome() != null;
302 }
303 return super.eIsSet(featureID);
304 }
305
306 /**
307 * <!-- begin-user-doc -->
308 * <!-- end-user-doc -->
309 * @generated
310 */
311 @Override
312 public String toString() {
313 if (eIsProxy()) return super.toString();
314
315 StringBuilder result = new StringBuilder(super.toString());
316 result.append(" (subjectToWithholdingTax: ");
317 result.append(subjectToWithholdingTax);
318 result.append(", id8: ");
319 result.append(id8);
320 result.append(')');
321 return result.toString();
322 }
323
324} //Income_TypeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Interest_ExpenseImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Interest_ExpenseImpl.java
new file mode 100644
index 00000000..44a10564
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Interest_ExpenseImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Interest_Expense;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Interest Expense</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Interest_ExpenseImpl extends Special_Expense_DSImpl implements Interest_Expense {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Interest_ExpenseImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.INTEREST_EXPENSE;
35 }
36
37} //Interest_ExpenseImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Legal_Union_RecordImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Legal_Union_RecordImpl.java
new file mode 100644
index 00000000..1ab3bf53
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Legal_Union_RecordImpl.java
@@ -0,0 +1,647 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Household;
6import Taxation.Legal_Union_Record;
7import Taxation.Physical_Person;
8import Taxation.Separation_Causes;
9import Taxation.Tax_Property;
10import Taxation.TaxationPackage;
11import java.util.Collection;
12
13import org.eclipse.emf.common.notify.Notification;
14import org.eclipse.emf.common.notify.NotificationChain;
15
16import org.eclipse.emf.common.util.EList;
17
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.InternalEObject;
20
21import org.eclipse.emf.ecore.impl.ENotificationImpl;
22import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
23
24import org.eclipse.emf.ecore.util.EObjectContainmentEList;
25import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
26import org.eclipse.emf.ecore.util.EcoreUtil;
27import org.eclipse.emf.ecore.util.InternalEList;
28
29/**
30 * <!-- begin-user-doc -->
31 * An implementation of the model object '<em><b>Legal Union Record</b></em>'.
32 * <!-- end-user-doc -->
33 * <p>
34 * The following features are implemented:
35 * </p>
36 * <ul>
37 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getStart_year <em>Start year</em>}</li>
38 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getEnd_year <em>End year</em>}</li>
39 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getSeparation_cause <em>Separation cause</em>}</li>
40 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getIndividual_A <em>Individual A</em>}</li>
41 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getIndividual_B <em>Individual B</em>}</li>
42 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getProperties <em>Properties</em>}</li>
43 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#isMutual_agreement <em>Mutual agreement</em>}</li>
44 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getId9 <em>Id9</em>}</li>
45 * <li>{@link Taxation.impl.Legal_Union_RecordImpl#getHousehold <em>Household</em>}</li>
46 * </ul>
47 *
48 * @generated
49 */
50public abstract class Legal_Union_RecordImpl extends MinimalEObjectImpl.Container implements Legal_Union_Record {
51 /**
52 * The default value of the '{@link #getStart_year() <em>Start year</em>}' attribute.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getStart_year()
56 * @generated
57 * @ordered
58 */
59 protected static final int START_YEAR_EDEFAULT = 0;
60
61 /**
62 * The cached value of the '{@link #getStart_year() <em>Start year</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #getStart_year()
66 * @generated
67 * @ordered
68 */
69 protected int start_year = START_YEAR_EDEFAULT;
70
71 /**
72 * The default value of the '{@link #getEnd_year() <em>End year</em>}' attribute.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #getEnd_year()
76 * @generated
77 * @ordered
78 */
79 protected static final int END_YEAR_EDEFAULT = 0;
80
81 /**
82 * The cached value of the '{@link #getEnd_year() <em>End year</em>}' attribute.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #getEnd_year()
86 * @generated
87 * @ordered
88 */
89 protected int end_year = END_YEAR_EDEFAULT;
90
91 /**
92 * The default value of the '{@link #getSeparation_cause() <em>Separation cause</em>}' attribute.
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @see #getSeparation_cause()
96 * @generated
97 * @ordered
98 */
99 protected static final Separation_Causes SEPARATION_CAUSE_EDEFAULT = Separation_Causes.NONE;
100
101 /**
102 * The cached value of the '{@link #getSeparation_cause() <em>Separation cause</em>}' attribute.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @see #getSeparation_cause()
106 * @generated
107 * @ordered
108 */
109 protected Separation_Causes separation_cause = SEPARATION_CAUSE_EDEFAULT;
110
111 /**
112 * The cached value of the '{@link #getIndividual_A() <em>Individual A</em>}' containment reference.
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @see #getIndividual_A()
116 * @generated
117 * @ordered
118 */
119 protected Physical_Person individual_A;
120
121 /**
122 * The cached value of the '{@link #getIndividual_B() <em>Individual B</em>}' containment reference list.
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @see #getIndividual_B()
126 * @generated
127 * @ordered
128 */
129 protected EList<Physical_Person> individual_B;
130
131 /**
132 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @see #getProperties()
136 * @generated
137 * @ordered
138 */
139 protected EList<Tax_Property> properties;
140
141 /**
142 * The default value of the '{@link #isMutual_agreement() <em>Mutual agreement</em>}' attribute.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @see #isMutual_agreement()
146 * @generated
147 * @ordered
148 */
149 protected static final boolean MUTUAL_AGREEMENT_EDEFAULT = false;
150
151 /**
152 * The cached value of the '{@link #isMutual_agreement() <em>Mutual agreement</em>}' attribute.
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @see #isMutual_agreement()
156 * @generated
157 * @ordered
158 */
159 protected boolean mutual_agreement = MUTUAL_AGREEMENT_EDEFAULT;
160
161 /**
162 * The default value of the '{@link #getId9() <em>Id9</em>}' attribute.
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @see #getId9()
166 * @generated
167 * @ordered
168 */
169 protected static final String ID9_EDEFAULT = null;
170
171 /**
172 * The cached value of the '{@link #getId9() <em>Id9</em>}' attribute.
173 * <!-- begin-user-doc -->
174 * <!-- end-user-doc -->
175 * @see #getId9()
176 * @generated
177 * @ordered
178 */
179 protected String id9 = ID9_EDEFAULT;
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 protected Legal_Union_RecordImpl() {
187 super();
188 }
189
190 /**
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @generated
194 */
195 @Override
196 protected EClass eStaticClass() {
197 return TaxationPackage.Literals.LEGAL_UNION_RECORD;
198 }
199
200 /**
201 * <!-- begin-user-doc -->
202 * <!-- end-user-doc -->
203 * @generated
204 */
205 @Override
206 public int getStart_year() {
207 return start_year;
208 }
209
210 /**
211 * <!-- begin-user-doc -->
212 * <!-- end-user-doc -->
213 * @generated
214 */
215 @Override
216 public void setStart_year(int newStart_year) {
217 int oldStart_year = start_year;
218 start_year = newStart_year;
219 if (eNotificationRequired())
220 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__START_YEAR, oldStart_year, start_year));
221 }
222
223 /**
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @generated
227 */
228 @Override
229 public int getEnd_year() {
230 return end_year;
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public void setEnd_year(int newEnd_year) {
240 int oldEnd_year = end_year;
241 end_year = newEnd_year;
242 if (eNotificationRequired())
243 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__END_YEAR, oldEnd_year, end_year));
244 }
245
246 /**
247 * <!-- begin-user-doc -->
248 * <!-- end-user-doc -->
249 * @generated
250 */
251 @Override
252 public Separation_Causes getSeparation_cause() {
253 return separation_cause;
254 }
255
256 /**
257 * <!-- begin-user-doc -->
258 * <!-- end-user-doc -->
259 * @generated
260 */
261 @Override
262 public void setSeparation_cause(Separation_Causes newSeparation_cause) {
263 Separation_Causes oldSeparation_cause = separation_cause;
264 separation_cause = newSeparation_cause == null ? SEPARATION_CAUSE_EDEFAULT : newSeparation_cause;
265 if (eNotificationRequired())
266 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__SEPARATION_CAUSE, oldSeparation_cause, separation_cause));
267 }
268
269 /**
270 * <!-- begin-user-doc -->
271 * <!-- end-user-doc -->
272 * @generated
273 */
274 @Override
275 public Physical_Person getIndividual_A() {
276 return individual_A;
277 }
278
279 /**
280 * <!-- begin-user-doc -->
281 * <!-- end-user-doc -->
282 * @generated
283 */
284 public NotificationChain basicSetIndividual_A(Physical_Person newIndividual_A, NotificationChain msgs) {
285 Physical_Person oldIndividual_A = individual_A;
286 individual_A = newIndividual_A;
287 if (eNotificationRequired()) {
288 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A, oldIndividual_A, newIndividual_A);
289 if (msgs == null) msgs = notification; else msgs.add(notification);
290 }
291 return msgs;
292 }
293
294 /**
295 * <!-- begin-user-doc -->
296 * <!-- end-user-doc -->
297 * @generated
298 */
299 @Override
300 public void setIndividual_A(Physical_Person newIndividual_A) {
301 if (newIndividual_A != individual_A) {
302 NotificationChain msgs = null;
303 if (individual_A != null)
304 msgs = ((InternalEObject)individual_A).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A, null, msgs);
305 if (newIndividual_A != null)
306 msgs = ((InternalEObject)newIndividual_A).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A, null, msgs);
307 msgs = basicSetIndividual_A(newIndividual_A, msgs);
308 if (msgs != null) msgs.dispatch();
309 }
310 else if (eNotificationRequired())
311 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A, newIndividual_A, newIndividual_A));
312 }
313
314 /**
315 * <!-- begin-user-doc -->
316 * <!-- end-user-doc -->
317 * @generated
318 */
319 @Override
320 public EList<Physical_Person> getIndividual_B() {
321 if (individual_B == null) {
322 individual_B = new EObjectContainmentEList<Physical_Person>(Physical_Person.class, this, TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_B);
323 }
324 return individual_B;
325 }
326
327 /**
328 * <!-- begin-user-doc -->
329 * <!-- end-user-doc -->
330 * @generated
331 */
332 @Override
333 public EList<Tax_Property> getProperties() {
334 if (properties == null) {
335 properties = new EObjectContainmentWithInverseEList<Tax_Property>(Tax_Property.class, this, TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES, TaxationPackage.TAX_PROPERTY__UNION_RECORD);
336 }
337 return properties;
338 }
339
340 /**
341 * <!-- begin-user-doc -->
342 * <!-- end-user-doc -->
343 * @generated
344 */
345 @Override
346 public boolean isMutual_agreement() {
347 return mutual_agreement;
348 }
349
350 /**
351 * <!-- begin-user-doc -->
352 * <!-- end-user-doc -->
353 * @generated
354 */
355 @Override
356 public void setMutual_agreement(boolean newMutual_agreement) {
357 boolean oldMutual_agreement = mutual_agreement;
358 mutual_agreement = newMutual_agreement;
359 if (eNotificationRequired())
360 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__MUTUAL_AGREEMENT, oldMutual_agreement, mutual_agreement));
361 }
362
363 /**
364 * <!-- begin-user-doc -->
365 * <!-- end-user-doc -->
366 * @generated
367 */
368 @Override
369 public String getId9() {
370 return id9;
371 }
372
373 /**
374 * <!-- begin-user-doc -->
375 * <!-- end-user-doc -->
376 * @generated
377 */
378 @Override
379 public void setId9(String newId9) {
380 String oldId9 = id9;
381 id9 = newId9;
382 if (eNotificationRequired())
383 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__ID9, oldId9, id9));
384 }
385
386 /**
387 * <!-- begin-user-doc -->
388 * <!-- end-user-doc -->
389 * @generated
390 */
391 @Override
392 public Household getHousehold() {
393 if (eContainerFeatureID() != TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD) return null;
394 return (Household)eInternalContainer();
395 }
396
397 /**
398 * <!-- begin-user-doc -->
399 * <!-- end-user-doc -->
400 * @generated
401 */
402 public NotificationChain basicSetHousehold(Household newHousehold, NotificationChain msgs) {
403 msgs = eBasicSetContainer((InternalEObject)newHousehold, TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD, msgs);
404 return msgs;
405 }
406
407 /**
408 * <!-- begin-user-doc -->
409 * <!-- end-user-doc -->
410 * @generated
411 */
412 @Override
413 public void setHousehold(Household newHousehold) {
414 if (newHousehold != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD && newHousehold != null)) {
415 if (EcoreUtil.isAncestor(this, newHousehold))
416 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
417 NotificationChain msgs = null;
418 if (eInternalContainer() != null)
419 msgs = eBasicRemoveFromContainer(msgs);
420 if (newHousehold != null)
421 msgs = ((InternalEObject)newHousehold).eInverseAdd(this, TaxationPackage.HOUSEHOLD__PARENTS, Household.class, msgs);
422 msgs = basicSetHousehold(newHousehold, msgs);
423 if (msgs != null) msgs.dispatch();
424 }
425 else if (eNotificationRequired())
426 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD, newHousehold, newHousehold));
427 }
428
429 /**
430 * <!-- begin-user-doc -->
431 * <!-- end-user-doc -->
432 * @generated
433 */
434 @SuppressWarnings("unchecked")
435 @Override
436 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
437 switch (featureID) {
438 case TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES:
439 return ((InternalEList<InternalEObject>)(InternalEList<?>)getProperties()).basicAdd(otherEnd, msgs);
440 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
441 if (eInternalContainer() != null)
442 msgs = eBasicRemoveFromContainer(msgs);
443 return basicSetHousehold((Household)otherEnd, msgs);
444 }
445 return super.eInverseAdd(otherEnd, featureID, msgs);
446 }
447
448 /**
449 * <!-- begin-user-doc -->
450 * <!-- end-user-doc -->
451 * @generated
452 */
453 @Override
454 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
455 switch (featureID) {
456 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A:
457 return basicSetIndividual_A(null, msgs);
458 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_B:
459 return ((InternalEList<?>)getIndividual_B()).basicRemove(otherEnd, msgs);
460 case TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES:
461 return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
462 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
463 return basicSetHousehold(null, msgs);
464 }
465 return super.eInverseRemove(otherEnd, featureID, msgs);
466 }
467
468 /**
469 * <!-- begin-user-doc -->
470 * <!-- end-user-doc -->
471 * @generated
472 */
473 @Override
474 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
475 switch (eContainerFeatureID()) {
476 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
477 return eInternalContainer().eInverseRemove(this, TaxationPackage.HOUSEHOLD__PARENTS, Household.class, msgs);
478 }
479 return super.eBasicRemoveFromContainerFeature(msgs);
480 }
481
482 /**
483 * <!-- begin-user-doc -->
484 * <!-- end-user-doc -->
485 * @generated
486 */
487 @Override
488 public Object eGet(int featureID, boolean resolve, boolean coreType) {
489 switch (featureID) {
490 case TaxationPackage.LEGAL_UNION_RECORD__START_YEAR:
491 return getStart_year();
492 case TaxationPackage.LEGAL_UNION_RECORD__END_YEAR:
493 return getEnd_year();
494 case TaxationPackage.LEGAL_UNION_RECORD__SEPARATION_CAUSE:
495 return getSeparation_cause();
496 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A:
497 return getIndividual_A();
498 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_B:
499 return getIndividual_B();
500 case TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES:
501 return getProperties();
502 case TaxationPackage.LEGAL_UNION_RECORD__MUTUAL_AGREEMENT:
503 return isMutual_agreement();
504 case TaxationPackage.LEGAL_UNION_RECORD__ID9:
505 return getId9();
506 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
507 return getHousehold();
508 }
509 return super.eGet(featureID, resolve, coreType);
510 }
511
512 /**
513 * <!-- begin-user-doc -->
514 * <!-- end-user-doc -->
515 * @generated
516 */
517 @SuppressWarnings("unchecked")
518 @Override
519 public void eSet(int featureID, Object newValue) {
520 switch (featureID) {
521 case TaxationPackage.LEGAL_UNION_RECORD__START_YEAR:
522 setStart_year((Integer)newValue);
523 return;
524 case TaxationPackage.LEGAL_UNION_RECORD__END_YEAR:
525 setEnd_year((Integer)newValue);
526 return;
527 case TaxationPackage.LEGAL_UNION_RECORD__SEPARATION_CAUSE:
528 setSeparation_cause((Separation_Causes)newValue);
529 return;
530 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A:
531 setIndividual_A((Physical_Person)newValue);
532 return;
533 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_B:
534 getIndividual_B().clear();
535 getIndividual_B().addAll((Collection<? extends Physical_Person>)newValue);
536 return;
537 case TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES:
538 getProperties().clear();
539 getProperties().addAll((Collection<? extends Tax_Property>)newValue);
540 return;
541 case TaxationPackage.LEGAL_UNION_RECORD__MUTUAL_AGREEMENT:
542 setMutual_agreement((Boolean)newValue);
543 return;
544 case TaxationPackage.LEGAL_UNION_RECORD__ID9:
545 setId9((String)newValue);
546 return;
547 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
548 setHousehold((Household)newValue);
549 return;
550 }
551 super.eSet(featureID, newValue);
552 }
553
554 /**
555 * <!-- begin-user-doc -->
556 * <!-- end-user-doc -->
557 * @generated
558 */
559 @Override
560 public void eUnset(int featureID) {
561 switch (featureID) {
562 case TaxationPackage.LEGAL_UNION_RECORD__START_YEAR:
563 setStart_year(START_YEAR_EDEFAULT);
564 return;
565 case TaxationPackage.LEGAL_UNION_RECORD__END_YEAR:
566 setEnd_year(END_YEAR_EDEFAULT);
567 return;
568 case TaxationPackage.LEGAL_UNION_RECORD__SEPARATION_CAUSE:
569 setSeparation_cause(SEPARATION_CAUSE_EDEFAULT);
570 return;
571 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A:
572 setIndividual_A((Physical_Person)null);
573 return;
574 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_B:
575 getIndividual_B().clear();
576 return;
577 case TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES:
578 getProperties().clear();
579 return;
580 case TaxationPackage.LEGAL_UNION_RECORD__MUTUAL_AGREEMENT:
581 setMutual_agreement(MUTUAL_AGREEMENT_EDEFAULT);
582 return;
583 case TaxationPackage.LEGAL_UNION_RECORD__ID9:
584 setId9(ID9_EDEFAULT);
585 return;
586 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
587 setHousehold((Household)null);
588 return;
589 }
590 super.eUnset(featureID);
591 }
592
593 /**
594 * <!-- begin-user-doc -->
595 * <!-- end-user-doc -->
596 * @generated
597 */
598 @Override
599 public boolean eIsSet(int featureID) {
600 switch (featureID) {
601 case TaxationPackage.LEGAL_UNION_RECORD__START_YEAR:
602 return start_year != START_YEAR_EDEFAULT;
603 case TaxationPackage.LEGAL_UNION_RECORD__END_YEAR:
604 return end_year != END_YEAR_EDEFAULT;
605 case TaxationPackage.LEGAL_UNION_RECORD__SEPARATION_CAUSE:
606 return separation_cause != SEPARATION_CAUSE_EDEFAULT;
607 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_A:
608 return individual_A != null;
609 case TaxationPackage.LEGAL_UNION_RECORD__INDIVIDUAL_B:
610 return individual_B != null && !individual_B.isEmpty();
611 case TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES:
612 return properties != null && !properties.isEmpty();
613 case TaxationPackage.LEGAL_UNION_RECORD__MUTUAL_AGREEMENT:
614 return mutual_agreement != MUTUAL_AGREEMENT_EDEFAULT;
615 case TaxationPackage.LEGAL_UNION_RECORD__ID9:
616 return ID9_EDEFAULT == null ? id9 != null : !ID9_EDEFAULT.equals(id9);
617 case TaxationPackage.LEGAL_UNION_RECORD__HOUSEHOLD:
618 return getHousehold() != null;
619 }
620 return super.eIsSet(featureID);
621 }
622
623 /**
624 * <!-- begin-user-doc -->
625 * <!-- end-user-doc -->
626 * @generated
627 */
628 @Override
629 public String toString() {
630 if (eIsProxy()) return super.toString();
631
632 StringBuilder result = new StringBuilder(super.toString());
633 result.append(" (start_year: ");
634 result.append(start_year);
635 result.append(", end_year: ");
636 result.append(end_year);
637 result.append(", separation_cause: ");
638 result.append(separation_cause);
639 result.append(", mutual_agreement: ");
640 result.append(mutual_agreement);
641 result.append(", id9: ");
642 result.append(id9);
643 result.append(')');
644 return result.toString();
645 }
646
647} //Legal_Union_RecordImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Local_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Local_IncomeImpl.java
new file mode 100644
index 00000000..16856767
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Local_IncomeImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Local_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Local Income</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Local_IncomeImpl extends IncomeImpl implements Local_Income {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Local_IncomeImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.LOCAL_INCOME;
35 }
36
37} //Local_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Loss_CarryforwardImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Loss_CarryforwardImpl.java
new file mode 100644
index 00000000..d43422f8
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Loss_CarryforwardImpl.java
@@ -0,0 +1,332 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Loss_Carryforward;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Loss Carryforward</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.Loss_CarryforwardImpl#isRegular_accountability <em>Regular accountability</em>}</li>
23 * <li>{@link Taxation.impl.Loss_CarryforwardImpl#isCompensation_by_other_means <em>Compensation by other means</em>}</li>
24 * <li>{@link Taxation.impl.Loss_CarryforwardImpl#isTax_payer_has_inherited_business_ownership <em>Tax payer has inherited business ownership</em>}</li>
25 * <li>{@link Taxation.impl.Loss_CarryforwardImpl#isTax_payer_has_been_partner_in_business <em>Tax payer has been partner in business</em>}</li>
26 * </ul>
27 *
28 * @generated
29 */
30public class Loss_CarryforwardImpl extends Special_Expense_DSImpl implements Loss_Carryforward {
31 /**
32 * The default value of the '{@link #isRegular_accountability() <em>Regular accountability</em>}' attribute.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #isRegular_accountability()
36 * @generated
37 * @ordered
38 */
39 protected static final boolean REGULAR_ACCOUNTABILITY_EDEFAULT = false;
40
41 /**
42 * The cached value of the '{@link #isRegular_accountability() <em>Regular accountability</em>}' attribute.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #isRegular_accountability()
46 * @generated
47 * @ordered
48 */
49 protected boolean regular_accountability = REGULAR_ACCOUNTABILITY_EDEFAULT;
50
51 /**
52 * The default value of the '{@link #isCompensation_by_other_means() <em>Compensation by other means</em>}' attribute.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #isCompensation_by_other_means()
56 * @generated
57 * @ordered
58 */
59 protected static final boolean COMPENSATION_BY_OTHER_MEANS_EDEFAULT = false;
60
61 /**
62 * The cached value of the '{@link #isCompensation_by_other_means() <em>Compensation by other means</em>}' attribute.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @see #isCompensation_by_other_means()
66 * @generated
67 * @ordered
68 */
69 protected boolean compensation_by_other_means = COMPENSATION_BY_OTHER_MEANS_EDEFAULT;
70
71 /**
72 * The default value of the '{@link #isTax_payer_has_inherited_business_ownership() <em>Tax payer has inherited business ownership</em>}' attribute.
73 * <!-- begin-user-doc -->
74 * <!-- end-user-doc -->
75 * @see #isTax_payer_has_inherited_business_ownership()
76 * @generated
77 * @ordered
78 */
79 protected static final boolean TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP_EDEFAULT = false;
80
81 /**
82 * The cached value of the '{@link #isTax_payer_has_inherited_business_ownership() <em>Tax payer has inherited business ownership</em>}' attribute.
83 * <!-- begin-user-doc -->
84 * <!-- end-user-doc -->
85 * @see #isTax_payer_has_inherited_business_ownership()
86 * @generated
87 * @ordered
88 */
89 protected boolean tax_payer_has_inherited_business_ownership = TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP_EDEFAULT;
90
91 /**
92 * The default value of the '{@link #isTax_payer_has_been_partner_in_business() <em>Tax payer has been partner in business</em>}' attribute.
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @see #isTax_payer_has_been_partner_in_business()
96 * @generated
97 * @ordered
98 */
99 protected static final boolean TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS_EDEFAULT = true;
100
101 /**
102 * The cached value of the '{@link #isTax_payer_has_been_partner_in_business() <em>Tax payer has been partner in business</em>}' attribute.
103 * <!-- begin-user-doc -->
104 * <!-- end-user-doc -->
105 * @see #isTax_payer_has_been_partner_in_business()
106 * @generated
107 * @ordered
108 */
109 protected boolean tax_payer_has_been_partner_in_business = TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS_EDEFAULT;
110
111 /**
112 * <!-- begin-user-doc -->
113 * <!-- end-user-doc -->
114 * @generated
115 */
116 protected Loss_CarryforwardImpl() {
117 super();
118 }
119
120 /**
121 * <!-- begin-user-doc -->
122 * <!-- end-user-doc -->
123 * @generated
124 */
125 @Override
126 protected EClass eStaticClass() {
127 return TaxationPackage.Literals.LOSS_CARRYFORWARD;
128 }
129
130 /**
131 * <!-- begin-user-doc -->
132 * <!-- end-user-doc -->
133 * @generated
134 */
135 @Override
136 public boolean isRegular_accountability() {
137 return regular_accountability;
138 }
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 @Override
146 public void setRegular_accountability(boolean newRegular_accountability) {
147 boolean oldRegular_accountability = regular_accountability;
148 regular_accountability = newRegular_accountability;
149 if (eNotificationRequired())
150 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY, oldRegular_accountability, regular_accountability));
151 }
152
153 /**
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @generated
157 */
158 @Override
159 public boolean isCompensation_by_other_means() {
160 return compensation_by_other_means;
161 }
162
163 /**
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @generated
167 */
168 @Override
169 public void setCompensation_by_other_means(boolean newCompensation_by_other_means) {
170 boolean oldCompensation_by_other_means = compensation_by_other_means;
171 compensation_by_other_means = newCompensation_by_other_means;
172 if (eNotificationRequired())
173 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS, oldCompensation_by_other_means, compensation_by_other_means));
174 }
175
176 /**
177 * <!-- begin-user-doc -->
178 * <!-- end-user-doc -->
179 * @generated
180 */
181 @Override
182 public boolean isTax_payer_has_inherited_business_ownership() {
183 return tax_payer_has_inherited_business_ownership;
184 }
185
186 /**
187 * <!-- begin-user-doc -->
188 * <!-- end-user-doc -->
189 * @generated
190 */
191 @Override
192 public void setTax_payer_has_inherited_business_ownership(boolean newTax_payer_has_inherited_business_ownership) {
193 boolean oldTax_payer_has_inherited_business_ownership = tax_payer_has_inherited_business_ownership;
194 tax_payer_has_inherited_business_ownership = newTax_payer_has_inherited_business_ownership;
195 if (eNotificationRequired())
196 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP, oldTax_payer_has_inherited_business_ownership, tax_payer_has_inherited_business_ownership));
197 }
198
199 /**
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public boolean isTax_payer_has_been_partner_in_business() {
206 return tax_payer_has_been_partner_in_business;
207 }
208
209 /**
210 * <!-- begin-user-doc -->
211 * <!-- end-user-doc -->
212 * @generated
213 */
214 @Override
215 public void setTax_payer_has_been_partner_in_business(boolean newTax_payer_has_been_partner_in_business) {
216 boolean oldTax_payer_has_been_partner_in_business = tax_payer_has_been_partner_in_business;
217 tax_payer_has_been_partner_in_business = newTax_payer_has_been_partner_in_business;
218 if (eNotificationRequired())
219 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS, oldTax_payer_has_been_partner_in_business, tax_payer_has_been_partner_in_business));
220 }
221
222 /**
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public Object eGet(int featureID, boolean resolve, boolean coreType) {
229 switch (featureID) {
230 case TaxationPackage.LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY:
231 return isRegular_accountability();
232 case TaxationPackage.LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS:
233 return isCompensation_by_other_means();
234 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP:
235 return isTax_payer_has_inherited_business_ownership();
236 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS:
237 return isTax_payer_has_been_partner_in_business();
238 }
239 return super.eGet(featureID, resolve, coreType);
240 }
241
242 /**
243 * <!-- begin-user-doc -->
244 * <!-- end-user-doc -->
245 * @generated
246 */
247 @Override
248 public void eSet(int featureID, Object newValue) {
249 switch (featureID) {
250 case TaxationPackage.LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY:
251 setRegular_accountability((Boolean)newValue);
252 return;
253 case TaxationPackage.LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS:
254 setCompensation_by_other_means((Boolean)newValue);
255 return;
256 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP:
257 setTax_payer_has_inherited_business_ownership((Boolean)newValue);
258 return;
259 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS:
260 setTax_payer_has_been_partner_in_business((Boolean)newValue);
261 return;
262 }
263 super.eSet(featureID, newValue);
264 }
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 @Override
272 public void eUnset(int featureID) {
273 switch (featureID) {
274 case TaxationPackage.LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY:
275 setRegular_accountability(REGULAR_ACCOUNTABILITY_EDEFAULT);
276 return;
277 case TaxationPackage.LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS:
278 setCompensation_by_other_means(COMPENSATION_BY_OTHER_MEANS_EDEFAULT);
279 return;
280 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP:
281 setTax_payer_has_inherited_business_ownership(TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP_EDEFAULT);
282 return;
283 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS:
284 setTax_payer_has_been_partner_in_business(TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS_EDEFAULT);
285 return;
286 }
287 super.eUnset(featureID);
288 }
289
290 /**
291 * <!-- begin-user-doc -->
292 * <!-- end-user-doc -->
293 * @generated
294 */
295 @Override
296 public boolean eIsSet(int featureID) {
297 switch (featureID) {
298 case TaxationPackage.LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY:
299 return regular_accountability != REGULAR_ACCOUNTABILITY_EDEFAULT;
300 case TaxationPackage.LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS:
301 return compensation_by_other_means != COMPENSATION_BY_OTHER_MEANS_EDEFAULT;
302 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP:
303 return tax_payer_has_inherited_business_ownership != TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP_EDEFAULT;
304 case TaxationPackage.LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS:
305 return tax_payer_has_been_partner_in_business != TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS_EDEFAULT;
306 }
307 return super.eIsSet(featureID);
308 }
309
310 /**
311 * <!-- begin-user-doc -->
312 * <!-- end-user-doc -->
313 * @generated
314 */
315 @Override
316 public String toString() {
317 if (eIsProxy()) return super.toString();
318
319 StringBuilder result = new StringBuilder(super.toString());
320 result.append(" (regular_accountability: ");
321 result.append(regular_accountability);
322 result.append(", compensation_by_other_means: ");
323 result.append(compensation_by_other_means);
324 result.append(", tax_payer_has_inherited_business_ownership: ");
325 result.append(tax_payer_has_inherited_business_ownership);
326 result.append(", tax_payer_has_been_partner_in_business: ");
327 result.append(tax_payer_has_been_partner_in_business);
328 result.append(')');
329 return result.toString();
330 }
331
332} //Loss_CarryforwardImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Marriage_RecordImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Marriage_RecordImpl.java
new file mode 100644
index 00000000..df37dd06
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Marriage_RecordImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Marriage_Record;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Marriage Record</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Marriage_RecordImpl extends Legal_Union_RecordImpl implements Marriage_Record {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Marriage_RecordImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.MARRIAGE_RECORD;
35 }
36
37} //Marriage_RecordImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Miscellaneous_Expense_FOImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Miscellaneous_Expense_FOImpl.java
new file mode 100644
index 00000000..829d7b6d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Miscellaneous_Expense_FOImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Miscellaneous_Expense_FO;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Miscellaneous Expense FO</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Miscellaneous_Expense_FOImpl extends Professional_ExpenseImpl implements Miscellaneous_Expense_FO {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Miscellaneous_Expense_FOImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.MISCELLANEOUS_EXPENSE_FO;
35 }
36
37} //Miscellaneous_Expense_FOImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Non_Resident_Tax_PayerImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Non_Resident_Tax_PayerImpl.java
new file mode 100644
index 00000000..a8a55ade
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Non_Resident_Tax_PayerImpl.java
@@ -0,0 +1,164 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Non_Resident_Tax_Payer;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Non Resident Tax Payer</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.Non_Resident_Tax_PayerImpl#isIs_assimilated_to_resident <em>Is assimilated to resident</em>}</li>
23 * </ul>
24 *
25 * @generated
26 */
27public class Non_Resident_Tax_PayerImpl extends Tax_PayerImpl implements Non_Resident_Tax_Payer {
28 /**
29 * The default value of the '{@link #isIs_assimilated_to_resident() <em>Is assimilated to resident</em>}' attribute.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @see #isIs_assimilated_to_resident()
33 * @generated
34 * @ordered
35 */
36 protected static final boolean IS_ASSIMILATED_TO_RESIDENT_EDEFAULT = false;
37
38 /**
39 * The cached value of the '{@link #isIs_assimilated_to_resident() <em>Is assimilated to resident</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #isIs_assimilated_to_resident()
43 * @generated
44 * @ordered
45 */
46 protected boolean is_assimilated_to_resident = IS_ASSIMILATED_TO_RESIDENT_EDEFAULT;
47
48 /**
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @generated
52 */
53 protected Non_Resident_Tax_PayerImpl() {
54 super();
55 }
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 @Override
63 protected EClass eStaticClass() {
64 return TaxationPackage.Literals.NON_RESIDENT_TAX_PAYER;
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 @Override
73 public boolean isIs_assimilated_to_resident() {
74 return is_assimilated_to_resident;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 public void setIs_assimilated_to_resident(boolean newIs_assimilated_to_resident) {
84 boolean oldIs_assimilated_to_resident = is_assimilated_to_resident;
85 is_assimilated_to_resident = newIs_assimilated_to_resident;
86 if (eNotificationRequired())
87 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT, oldIs_assimilated_to_resident, is_assimilated_to_resident));
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 @Override
96 public Object eGet(int featureID, boolean resolve, boolean coreType) {
97 switch (featureID) {
98 case TaxationPackage.NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT:
99 return isIs_assimilated_to_resident();
100 }
101 return super.eGet(featureID, resolve, coreType);
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 @Override
110 public void eSet(int featureID, Object newValue) {
111 switch (featureID) {
112 case TaxationPackage.NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT:
113 setIs_assimilated_to_resident((Boolean)newValue);
114 return;
115 }
116 super.eSet(featureID, newValue);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public void eUnset(int featureID) {
126 switch (featureID) {
127 case TaxationPackage.NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT:
128 setIs_assimilated_to_resident(IS_ASSIMILATED_TO_RESIDENT_EDEFAULT);
129 return;
130 }
131 super.eUnset(featureID);
132 }
133
134 /**
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @generated
138 */
139 @Override
140 public boolean eIsSet(int featureID) {
141 switch (featureID) {
142 case TaxationPackage.NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT:
143 return is_assimilated_to_resident != IS_ASSIMILATED_TO_RESIDENT_EDEFAULT;
144 }
145 return super.eIsSet(featureID);
146 }
147
148 /**
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 @Override
154 public String toString() {
155 if (eIsProxy()) return super.toString();
156
157 StringBuilder result = new StringBuilder(super.toString());
158 result.append(" (is_assimilated_to_resident: ");
159 result.append(is_assimilated_to_resident);
160 result.append(')');
161 return result.toString();
162 }
163
164} //Non_Resident_Tax_PayerImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Partnership_RecordImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Partnership_RecordImpl.java
new file mode 100644
index 00000000..56ee4a14
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Partnership_RecordImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Partnership_Record;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Partnership Record</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Partnership_RecordImpl extends Legal_Union_RecordImpl implements Partnership_Record {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Partnership_RecordImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.PARTNERSHIP_RECORD;
35 }
36
37} //Partnership_RecordImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Pensions_and_Annuities_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Pensions_and_Annuities_IncomeImpl.java
new file mode 100644
index 00000000..9267ee3c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Pensions_and_Annuities_IncomeImpl.java
@@ -0,0 +1,164 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Pensions_and_Annuities_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Pensions and Annuities Income</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.Pensions_and_Annuities_IncomeImpl#isOccasional_payement <em>Occasional payement</em>}</li>
23 * </ul>
24 *
25 * @generated
26 */
27public class Pensions_and_Annuities_IncomeImpl extends Income_TypeImpl implements Pensions_and_Annuities_Income {
28 /**
29 * The default value of the '{@link #isOccasional_payement() <em>Occasional payement</em>}' attribute.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @see #isOccasional_payement()
33 * @generated
34 * @ordered
35 */
36 protected static final boolean OCCASIONAL_PAYEMENT_EDEFAULT = false;
37
38 /**
39 * The cached value of the '{@link #isOccasional_payement() <em>Occasional payement</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #isOccasional_payement()
43 * @generated
44 * @ordered
45 */
46 protected boolean occasional_payement = OCCASIONAL_PAYEMENT_EDEFAULT;
47
48 /**
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @generated
52 */
53 protected Pensions_and_Annuities_IncomeImpl() {
54 super();
55 }
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 @Override
63 protected EClass eStaticClass() {
64 return TaxationPackage.Literals.PENSIONS_AND_ANNUITIES_INCOME;
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 @Override
73 public boolean isOccasional_payement() {
74 return occasional_payement;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 public void setOccasional_payement(boolean newOccasional_payement) {
84 boolean oldOccasional_payement = occasional_payement;
85 occasional_payement = newOccasional_payement;
86 if (eNotificationRequired())
87 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT, oldOccasional_payement, occasional_payement));
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 @Override
96 public Object eGet(int featureID, boolean resolve, boolean coreType) {
97 switch (featureID) {
98 case TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT:
99 return isOccasional_payement();
100 }
101 return super.eGet(featureID, resolve, coreType);
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 @Override
110 public void eSet(int featureID, Object newValue) {
111 switch (featureID) {
112 case TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT:
113 setOccasional_payement((Boolean)newValue);
114 return;
115 }
116 super.eSet(featureID, newValue);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public void eUnset(int featureID) {
126 switch (featureID) {
127 case TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT:
128 setOccasional_payement(OCCASIONAL_PAYEMENT_EDEFAULT);
129 return;
130 }
131 super.eUnset(featureID);
132 }
133
134 /**
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @generated
138 */
139 @Override
140 public boolean eIsSet(int featureID) {
141 switch (featureID) {
142 case TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT:
143 return occasional_payement != OCCASIONAL_PAYEMENT_EDEFAULT;
144 }
145 return super.eIsSet(featureID);
146 }
147
148 /**
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 @Override
154 public String toString() {
155 if (eIsProxy()) return super.toString();
156
157 StringBuilder result = new StringBuilder(super.toString());
158 result.append(" (occasional_payement: ");
159 result.append(occasional_payement);
160 result.append(')');
161 return result.toString();
162 }
163
164} //Pensions_and_Annuities_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Permanent_ExpenseImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Permanent_ExpenseImpl.java
new file mode 100644
index 00000000..9473ae17
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Permanent_ExpenseImpl.java
@@ -0,0 +1,221 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Category_of_Permanent_Expense;
6import Taxation.Permanent_Expense;
7import Taxation.TaxationPackage;
8
9import org.eclipse.emf.common.notify.Notification;
10
11import org.eclipse.emf.ecore.EClass;
12
13import org.eclipse.emf.ecore.impl.ENotificationImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model object '<em><b>Permanent Expense</b></em>'.
18 * <!-- end-user-doc -->
19 * <p>
20 * The following features are implemented:
21 * </p>
22 * <ul>
23 * <li>{@link Taxation.impl.Permanent_ExpenseImpl#getCategory <em>Category</em>}</li>
24 * <li>{@link Taxation.impl.Permanent_ExpenseImpl#isIs_eligible_for_deduction <em>Is eligible for deduction</em>}</li>
25 * </ul>
26 *
27 * @generated
28 */
29public class Permanent_ExpenseImpl extends Special_Expense_DSImpl implements Permanent_Expense {
30 /**
31 * The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @see #getCategory()
35 * @generated
36 * @ordered
37 */
38 protected static final Category_of_Permanent_Expense CATEGORY_EDEFAULT = Category_of_Permanent_Expense.MISCELLANEOUS_DEBT;
39
40 /**
41 * The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getCategory()
45 * @generated
46 * @ordered
47 */
48 protected Category_of_Permanent_Expense category = CATEGORY_EDEFAULT;
49
50 /**
51 * The default value of the '{@link #isIs_eligible_for_deduction() <em>Is eligible for deduction</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #isIs_eligible_for_deduction()
55 * @generated
56 * @ordered
57 */
58 protected static final boolean IS_ELIGIBLE_FOR_DEDUCTION_EDEFAULT = false;
59
60 /**
61 * The cached value of the '{@link #isIs_eligible_for_deduction() <em>Is eligible for deduction</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #isIs_eligible_for_deduction()
65 * @generated
66 * @ordered
67 */
68 protected boolean is_eligible_for_deduction = IS_ELIGIBLE_FOR_DEDUCTION_EDEFAULT;
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 protected Permanent_ExpenseImpl() {
76 super();
77 }
78
79 /**
80 * <!-- begin-user-doc -->
81 * <!-- end-user-doc -->
82 * @generated
83 */
84 @Override
85 protected EClass eStaticClass() {
86 return TaxationPackage.Literals.PERMANENT_EXPENSE;
87 }
88
89 /**
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @generated
93 */
94 @Override
95 public Category_of_Permanent_Expense getCategory() {
96 return category;
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 public void setCategory(Category_of_Permanent_Expense newCategory) {
106 Category_of_Permanent_Expense oldCategory = category;
107 category = newCategory == null ? CATEGORY_EDEFAULT : newCategory;
108 if (eNotificationRequired())
109 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PERMANENT_EXPENSE__CATEGORY, oldCategory, category));
110 }
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 @Override
118 public boolean isIs_eligible_for_deduction() {
119 return is_eligible_for_deduction;
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 @Override
128 public void setIs_eligible_for_deduction(boolean newIs_eligible_for_deduction) {
129 boolean oldIs_eligible_for_deduction = is_eligible_for_deduction;
130 is_eligible_for_deduction = newIs_eligible_for_deduction;
131 if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION, oldIs_eligible_for_deduction, is_eligible_for_deduction));
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public Object eGet(int featureID, boolean resolve, boolean coreType) {
142 switch (featureID) {
143 case TaxationPackage.PERMANENT_EXPENSE__CATEGORY:
144 return getCategory();
145 case TaxationPackage.PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION:
146 return isIs_eligible_for_deduction();
147 }
148 return super.eGet(featureID, resolve, coreType);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public void eSet(int featureID, Object newValue) {
158 switch (featureID) {
159 case TaxationPackage.PERMANENT_EXPENSE__CATEGORY:
160 setCategory((Category_of_Permanent_Expense)newValue);
161 return;
162 case TaxationPackage.PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION:
163 setIs_eligible_for_deduction((Boolean)newValue);
164 return;
165 }
166 super.eSet(featureID, newValue);
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 @Override
175 public void eUnset(int featureID) {
176 switch (featureID) {
177 case TaxationPackage.PERMANENT_EXPENSE__CATEGORY:
178 setCategory(CATEGORY_EDEFAULT);
179 return;
180 case TaxationPackage.PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION:
181 setIs_eligible_for_deduction(IS_ELIGIBLE_FOR_DEDUCTION_EDEFAULT);
182 return;
183 }
184 super.eUnset(featureID);
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public boolean eIsSet(int featureID) {
194 switch (featureID) {
195 case TaxationPackage.PERMANENT_EXPENSE__CATEGORY:
196 return category != CATEGORY_EDEFAULT;
197 case TaxationPackage.PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION:
198 return is_eligible_for_deduction != IS_ELIGIBLE_FOR_DEDUCTION_EDEFAULT;
199 }
200 return super.eIsSet(featureID);
201 }
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 @Override
209 public String toString() {
210 if (eIsProxy()) return super.toString();
211
212 StringBuilder result = new StringBuilder(super.toString());
213 result.append(" (category: ");
214 result.append(category);
215 result.append(", is_eligible_for_deduction: ");
216 result.append(is_eligible_for_deduction);
217 result.append(')');
218 return result.toString();
219 }
220
221} //Permanent_ExpenseImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Physical_PersonImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Physical_PersonImpl.java
new file mode 100644
index 00000000..a63a993e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Physical_PersonImpl.java
@@ -0,0 +1,766 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Address;
6import Taxation.Disability_Types;
7import Taxation.Expense;
8import Taxation.Physical_Person;
9import Taxation.TaxationPackage;
10import java.util.Collection;
11
12import org.eclipse.emf.common.notify.Notification;
13import org.eclipse.emf.common.notify.NotificationChain;
14
15import org.eclipse.emf.common.util.EList;
16
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.InternalEObject;
19
20import org.eclipse.emf.ecore.impl.ENotificationImpl;
21import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
22
23import org.eclipse.emf.ecore.util.EObjectContainmentEList;
24import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
25import org.eclipse.emf.ecore.util.InternalEList;
26
27/**
28 * <!-- begin-user-doc -->
29 * An implementation of the model object '<em><b>Physical Person</b></em>'.
30 * <!-- end-user-doc -->
31 * <p>
32 * The following features are implemented:
33 * </p>
34 * <ul>
35 * <li>{@link Taxation.impl.Physical_PersonImpl#isIs_assisting_spouse <em>Is assisting spouse</em>}</li>
36 * <li>{@link Taxation.impl.Physical_PersonImpl#getSSNo <em>SS No</em>}</li>
37 * <li>{@link Taxation.impl.Physical_PersonImpl#getAddresses <em>Addresses</em>}</li>
38 * <li>{@link Taxation.impl.Physical_PersonImpl#getBirth_year <em>Birth year</em>}</li>
39 * <li>{@link Taxation.impl.Physical_PersonImpl#getDisability_percentage <em>Disability percentage</em>}</li>
40 * <li>{@link Taxation.impl.Physical_PersonImpl#getDisability_type <em>Disability type</em>}</li>
41 * <li>{@link Taxation.impl.Physical_PersonImpl#isIs_affiliated_personnaly_to_social_security <em>Is affiliated personnaly to social security</em>}</li>
42 * <li>{@link Taxation.impl.Physical_PersonImpl#getBirth_month <em>Birth month</em>}</li>
43 * <li>{@link Taxation.impl.Physical_PersonImpl#getBirth_day <em>Birth day</em>}</li>
44 * <li>{@link Taxation.impl.Physical_PersonImpl#getExpenses <em>Expenses</em>}</li>
45 * <li>{@link Taxation.impl.Physical_PersonImpl#isIs_widower <em>Is widower</em>}</li>
46 * <li>{@link Taxation.impl.Physical_PersonImpl#getOwns_Address <em>Owns Address</em>}</li>
47 * </ul>
48 *
49 * @generated
50 */
51public class Physical_PersonImpl extends MinimalEObjectImpl.Container implements Physical_Person {
52 /**
53 * The default value of the '{@link #isIs_assisting_spouse() <em>Is assisting spouse</em>}' attribute.
54 * <!-- begin-user-doc -->
55 * <!-- end-user-doc -->
56 * @see #isIs_assisting_spouse()
57 * @generated
58 * @ordered
59 */
60 protected static final boolean IS_ASSISTING_SPOUSE_EDEFAULT = false;
61
62 /**
63 * The cached value of the '{@link #isIs_assisting_spouse() <em>Is assisting spouse</em>}' attribute.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @see #isIs_assisting_spouse()
67 * @generated
68 * @ordered
69 */
70 protected boolean is_assisting_spouse = IS_ASSISTING_SPOUSE_EDEFAULT;
71
72 /**
73 * The default value of the '{@link #getSSNo() <em>SS No</em>}' attribute.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @see #getSSNo()
77 * @generated
78 * @ordered
79 */
80 protected static final String SS_NO_EDEFAULT = null;
81
82 /**
83 * The cached value of the '{@link #getSSNo() <em>SS No</em>}' attribute.
84 * <!-- begin-user-doc -->
85 * <!-- end-user-doc -->
86 * @see #getSSNo()
87 * @generated
88 * @ordered
89 */
90 protected String ssNo = SS_NO_EDEFAULT;
91
92 /**
93 * The cached value of the '{@link #getAddresses() <em>Addresses</em>}' reference list.
94 * <!-- begin-user-doc -->
95 * <!-- end-user-doc -->
96 * @see #getAddresses()
97 * @generated
98 * @ordered
99 */
100 protected EList<Address> addresses;
101
102 /**
103 * The default value of the '{@link #getBirth_year() <em>Birth year</em>}' attribute.
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @see #getBirth_year()
107 * @generated
108 * @ordered
109 */
110 protected static final int BIRTH_YEAR_EDEFAULT = 0;
111
112 /**
113 * The cached value of the '{@link #getBirth_year() <em>Birth year</em>}' attribute.
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @see #getBirth_year()
117 * @generated
118 * @ordered
119 */
120 protected int birth_year = BIRTH_YEAR_EDEFAULT;
121
122 /**
123 * The default value of the '{@link #getDisability_percentage() <em>Disability percentage</em>}' attribute.
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @see #getDisability_percentage()
127 * @generated
128 * @ordered
129 */
130 protected static final double DISABILITY_PERCENTAGE_EDEFAULT = 0.0;
131
132 /**
133 * The cached value of the '{@link #getDisability_percentage() <em>Disability percentage</em>}' attribute.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @see #getDisability_percentage()
137 * @generated
138 * @ordered
139 */
140 protected double disability_percentage = DISABILITY_PERCENTAGE_EDEFAULT;
141
142 /**
143 * The default value of the '{@link #getDisability_type() <em>Disability type</em>}' attribute.
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @see #getDisability_type()
147 * @generated
148 * @ordered
149 */
150 protected static final Disability_Types DISABILITY_TYPE_EDEFAULT = Disability_Types.BEUG;
151
152 /**
153 * The cached value of the '{@link #getDisability_type() <em>Disability type</em>}' attribute.
154 * <!-- begin-user-doc -->
155 * <!-- end-user-doc -->
156 * @see #getDisability_type()
157 * @generated
158 * @ordered
159 */
160 protected Disability_Types disability_type = DISABILITY_TYPE_EDEFAULT;
161
162 /**
163 * The default value of the '{@link #isIs_affiliated_personnaly_to_social_security() <em>Is affiliated personnaly to social security</em>}' attribute.
164 * <!-- begin-user-doc -->
165 * <!-- end-user-doc -->
166 * @see #isIs_affiliated_personnaly_to_social_security()
167 * @generated
168 * @ordered
169 */
170 protected static final boolean IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY_EDEFAULT = false;
171
172 /**
173 * The cached value of the '{@link #isIs_affiliated_personnaly_to_social_security() <em>Is affiliated personnaly to social security</em>}' attribute.
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @see #isIs_affiliated_personnaly_to_social_security()
177 * @generated
178 * @ordered
179 */
180 protected boolean is_affiliated_personnaly_to_social_security = IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY_EDEFAULT;
181
182 /**
183 * The default value of the '{@link #getBirth_month() <em>Birth month</em>}' attribute.
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @see #getBirth_month()
187 * @generated
188 * @ordered
189 */
190 protected static final int BIRTH_MONTH_EDEFAULT = 0;
191
192 /**
193 * The cached value of the '{@link #getBirth_month() <em>Birth month</em>}' attribute.
194 * <!-- begin-user-doc -->
195 * <!-- end-user-doc -->
196 * @see #getBirth_month()
197 * @generated
198 * @ordered
199 */
200 protected int birth_month = BIRTH_MONTH_EDEFAULT;
201
202 /**
203 * The default value of the '{@link #getBirth_day() <em>Birth day</em>}' attribute.
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @see #getBirth_day()
207 * @generated
208 * @ordered
209 */
210 protected static final int BIRTH_DAY_EDEFAULT = 0;
211
212 /**
213 * The cached value of the '{@link #getBirth_day() <em>Birth day</em>}' attribute.
214 * <!-- begin-user-doc -->
215 * <!-- end-user-doc -->
216 * @see #getBirth_day()
217 * @generated
218 * @ordered
219 */
220 protected int birth_day = BIRTH_DAY_EDEFAULT;
221
222 /**
223 * The cached value of the '{@link #getExpenses() <em>Expenses</em>}' reference list.
224 * <!-- begin-user-doc -->
225 * <!-- end-user-doc -->
226 * @see #getExpenses()
227 * @generated
228 * @ordered
229 */
230 protected EList<Expense> expenses;
231
232 /**
233 * The default value of the '{@link #isIs_widower() <em>Is widower</em>}' attribute.
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @see #isIs_widower()
237 * @generated
238 * @ordered
239 */
240 protected static final boolean IS_WIDOWER_EDEFAULT = false;
241
242 /**
243 * The cached value of the '{@link #isIs_widower() <em>Is widower</em>}' attribute.
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @see #isIs_widower()
247 * @generated
248 * @ordered
249 */
250 protected boolean is_widower = IS_WIDOWER_EDEFAULT;
251
252 /**
253 * The cached value of the '{@link #getOwns_Address() <em>Owns Address</em>}' containment reference list.
254 * <!-- begin-user-doc -->
255 * <!-- end-user-doc -->
256 * @see #getOwns_Address()
257 * @generated
258 * @ordered
259 */
260 protected EList<Address> owns_Address;
261
262 /**
263 * <!-- begin-user-doc -->
264 * <!-- end-user-doc -->
265 * @generated
266 */
267 protected Physical_PersonImpl() {
268 super();
269 }
270
271 /**
272 * <!-- begin-user-doc -->
273 * <!-- end-user-doc -->
274 * @generated
275 */
276 @Override
277 protected EClass eStaticClass() {
278 return TaxationPackage.Literals.PHYSICAL_PERSON;
279 }
280
281 /**
282 * <!-- begin-user-doc -->
283 * <!-- end-user-doc -->
284 * @generated
285 */
286 @Override
287 public boolean isIs_assisting_spouse() {
288 return is_assisting_spouse;
289 }
290
291 /**
292 * <!-- begin-user-doc -->
293 * <!-- end-user-doc -->
294 * @generated
295 */
296 @Override
297 public void setIs_assisting_spouse(boolean newIs_assisting_spouse) {
298 boolean oldIs_assisting_spouse = is_assisting_spouse;
299 is_assisting_spouse = newIs_assisting_spouse;
300 if (eNotificationRequired())
301 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__IS_ASSISTING_SPOUSE, oldIs_assisting_spouse, is_assisting_spouse));
302 }
303
304 /**
305 * <!-- begin-user-doc -->
306 * <!-- end-user-doc -->
307 * @generated
308 */
309 @Override
310 public String getSSNo() {
311 return ssNo;
312 }
313
314 /**
315 * <!-- begin-user-doc -->
316 * <!-- end-user-doc -->
317 * @generated
318 */
319 @Override
320 public void setSSNo(String newSSNo) {
321 String oldSSNo = ssNo;
322 ssNo = newSSNo;
323 if (eNotificationRequired())
324 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__SS_NO, oldSSNo, ssNo));
325 }
326
327 /**
328 * <!-- begin-user-doc -->
329 * <!-- end-user-doc -->
330 * @generated
331 */
332 @Override
333 public EList<Address> getAddresses() {
334 if (addresses == null) {
335 addresses = new EObjectWithInverseResolvingEList.ManyInverse<Address>(Address.class, this, TaxationPackage.PHYSICAL_PERSON__ADDRESSES, TaxationPackage.ADDRESS__TAX_PAYER);
336 }
337 return addresses;
338 }
339
340 /**
341 * <!-- begin-user-doc -->
342 * <!-- end-user-doc -->
343 * @generated
344 */
345 @Override
346 public int getBirth_year() {
347 return birth_year;
348 }
349
350 /**
351 * <!-- begin-user-doc -->
352 * <!-- end-user-doc -->
353 * @generated
354 */
355 @Override
356 public void setBirth_year(int newBirth_year) {
357 int oldBirth_year = birth_year;
358 birth_year = newBirth_year;
359 if (eNotificationRequired())
360 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__BIRTH_YEAR, oldBirth_year, birth_year));
361 }
362
363 /**
364 * <!-- begin-user-doc -->
365 * <!-- end-user-doc -->
366 * @generated
367 */
368 @Override
369 public double getDisability_percentage() {
370 return disability_percentage;
371 }
372
373 /**
374 * <!-- begin-user-doc -->
375 * <!-- end-user-doc -->
376 * @generated
377 */
378 @Override
379 public void setDisability_percentage(double newDisability_percentage) {
380 double oldDisability_percentage = disability_percentage;
381 disability_percentage = newDisability_percentage;
382 if (eNotificationRequired())
383 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__DISABILITY_PERCENTAGE, oldDisability_percentage, disability_percentage));
384 }
385
386 /**
387 * <!-- begin-user-doc -->
388 * <!-- end-user-doc -->
389 * @generated
390 */
391 @Override
392 public Disability_Types getDisability_type() {
393 return disability_type;
394 }
395
396 /**
397 * <!-- begin-user-doc -->
398 * <!-- end-user-doc -->
399 * @generated
400 */
401 @Override
402 public void setDisability_type(Disability_Types newDisability_type) {
403 Disability_Types oldDisability_type = disability_type;
404 disability_type = newDisability_type == null ? DISABILITY_TYPE_EDEFAULT : newDisability_type;
405 if (eNotificationRequired())
406 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__DISABILITY_TYPE, oldDisability_type, disability_type));
407 }
408
409 /**
410 * <!-- begin-user-doc -->
411 * <!-- end-user-doc -->
412 * @generated
413 */
414 @Override
415 public boolean isIs_affiliated_personnaly_to_social_security() {
416 return is_affiliated_personnaly_to_social_security;
417 }
418
419 /**
420 * <!-- begin-user-doc -->
421 * <!-- end-user-doc -->
422 * @generated
423 */
424 @Override
425 public void setIs_affiliated_personnaly_to_social_security(boolean newIs_affiliated_personnaly_to_social_security) {
426 boolean oldIs_affiliated_personnaly_to_social_security = is_affiliated_personnaly_to_social_security;
427 is_affiliated_personnaly_to_social_security = newIs_affiliated_personnaly_to_social_security;
428 if (eNotificationRequired())
429 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY, oldIs_affiliated_personnaly_to_social_security, is_affiliated_personnaly_to_social_security));
430 }
431
432 /**
433 * <!-- begin-user-doc -->
434 * <!-- end-user-doc -->
435 * @generated
436 */
437 @Override
438 public int getBirth_month() {
439 return birth_month;
440 }
441
442 /**
443 * <!-- begin-user-doc -->
444 * <!-- end-user-doc -->
445 * @generated
446 */
447 @Override
448 public void setBirth_month(int newBirth_month) {
449 int oldBirth_month = birth_month;
450 birth_month = newBirth_month;
451 if (eNotificationRequired())
452 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__BIRTH_MONTH, oldBirth_month, birth_month));
453 }
454
455 /**
456 * <!-- begin-user-doc -->
457 * <!-- end-user-doc -->
458 * @generated
459 */
460 @Override
461 public int getBirth_day() {
462 return birth_day;
463 }
464
465 /**
466 * <!-- begin-user-doc -->
467 * <!-- end-user-doc -->
468 * @generated
469 */
470 @Override
471 public void setBirth_day(int newBirth_day) {
472 int oldBirth_day = birth_day;
473 birth_day = newBirth_day;
474 if (eNotificationRequired())
475 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__BIRTH_DAY, oldBirth_day, birth_day));
476 }
477
478 /**
479 * <!-- begin-user-doc -->
480 * <!-- end-user-doc -->
481 * @generated
482 */
483 @Override
484 public EList<Expense> getExpenses() {
485 if (expenses == null) {
486 expenses = new EObjectWithInverseResolvingEList<Expense>(Expense.class, this, TaxationPackage.PHYSICAL_PERSON__EXPENSES, TaxationPackage.EXPENSE__BENEFICIARY);
487 }
488 return expenses;
489 }
490
491 /**
492 * <!-- begin-user-doc -->
493 * <!-- end-user-doc -->
494 * @generated
495 */
496 @Override
497 public boolean isIs_widower() {
498 return is_widower;
499 }
500
501 /**
502 * <!-- begin-user-doc -->
503 * <!-- end-user-doc -->
504 * @generated
505 */
506 @Override
507 public void setIs_widower(boolean newIs_widower) {
508 boolean oldIs_widower = is_widower;
509 is_widower = newIs_widower;
510 if (eNotificationRequired())
511 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PHYSICAL_PERSON__IS_WIDOWER, oldIs_widower, is_widower));
512 }
513
514 /**
515 * <!-- begin-user-doc -->
516 * <!-- end-user-doc -->
517 * @generated
518 */
519 @Override
520 public EList<Address> getOwns_Address() {
521 if (owns_Address == null) {
522 owns_Address = new EObjectContainmentEList<Address>(Address.class, this, TaxationPackage.PHYSICAL_PERSON__OWNS_ADDRESS);
523 }
524 return owns_Address;
525 }
526
527 /**
528 * <!-- begin-user-doc -->
529 * <!-- end-user-doc -->
530 * @generated
531 */
532 @SuppressWarnings("unchecked")
533 @Override
534 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
535 switch (featureID) {
536 case TaxationPackage.PHYSICAL_PERSON__ADDRESSES:
537 return ((InternalEList<InternalEObject>)(InternalEList<?>)getAddresses()).basicAdd(otherEnd, msgs);
538 case TaxationPackage.PHYSICAL_PERSON__EXPENSES:
539 return ((InternalEList<InternalEObject>)(InternalEList<?>)getExpenses()).basicAdd(otherEnd, msgs);
540 }
541 return super.eInverseAdd(otherEnd, featureID, msgs);
542 }
543
544 /**
545 * <!-- begin-user-doc -->
546 * <!-- end-user-doc -->
547 * @generated
548 */
549 @Override
550 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
551 switch (featureID) {
552 case TaxationPackage.PHYSICAL_PERSON__ADDRESSES:
553 return ((InternalEList<?>)getAddresses()).basicRemove(otherEnd, msgs);
554 case TaxationPackage.PHYSICAL_PERSON__EXPENSES:
555 return ((InternalEList<?>)getExpenses()).basicRemove(otherEnd, msgs);
556 case TaxationPackage.PHYSICAL_PERSON__OWNS_ADDRESS:
557 return ((InternalEList<?>)getOwns_Address()).basicRemove(otherEnd, msgs);
558 }
559 return super.eInverseRemove(otherEnd, featureID, msgs);
560 }
561
562 /**
563 * <!-- begin-user-doc -->
564 * <!-- end-user-doc -->
565 * @generated
566 */
567 @Override
568 public Object eGet(int featureID, boolean resolve, boolean coreType) {
569 switch (featureID) {
570 case TaxationPackage.PHYSICAL_PERSON__IS_ASSISTING_SPOUSE:
571 return isIs_assisting_spouse();
572 case TaxationPackage.PHYSICAL_PERSON__SS_NO:
573 return getSSNo();
574 case TaxationPackage.PHYSICAL_PERSON__ADDRESSES:
575 return getAddresses();
576 case TaxationPackage.PHYSICAL_PERSON__BIRTH_YEAR:
577 return getBirth_year();
578 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_PERCENTAGE:
579 return getDisability_percentage();
580 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_TYPE:
581 return getDisability_type();
582 case TaxationPackage.PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY:
583 return isIs_affiliated_personnaly_to_social_security();
584 case TaxationPackage.PHYSICAL_PERSON__BIRTH_MONTH:
585 return getBirth_month();
586 case TaxationPackage.PHYSICAL_PERSON__BIRTH_DAY:
587 return getBirth_day();
588 case TaxationPackage.PHYSICAL_PERSON__EXPENSES:
589 return getExpenses();
590 case TaxationPackage.PHYSICAL_PERSON__IS_WIDOWER:
591 return isIs_widower();
592 case TaxationPackage.PHYSICAL_PERSON__OWNS_ADDRESS:
593 return getOwns_Address();
594 }
595 return super.eGet(featureID, resolve, coreType);
596 }
597
598 /**
599 * <!-- begin-user-doc -->
600 * <!-- end-user-doc -->
601 * @generated
602 */
603 @SuppressWarnings("unchecked")
604 @Override
605 public void eSet(int featureID, Object newValue) {
606 switch (featureID) {
607 case TaxationPackage.PHYSICAL_PERSON__IS_ASSISTING_SPOUSE:
608 setIs_assisting_spouse((Boolean)newValue);
609 return;
610 case TaxationPackage.PHYSICAL_PERSON__SS_NO:
611 setSSNo((String)newValue);
612 return;
613 case TaxationPackage.PHYSICAL_PERSON__ADDRESSES:
614 getAddresses().clear();
615 getAddresses().addAll((Collection<? extends Address>)newValue);
616 return;
617 case TaxationPackage.PHYSICAL_PERSON__BIRTH_YEAR:
618 setBirth_year((Integer)newValue);
619 return;
620 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_PERCENTAGE:
621 setDisability_percentage((Double)newValue);
622 return;
623 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_TYPE:
624 setDisability_type((Disability_Types)newValue);
625 return;
626 case TaxationPackage.PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY:
627 setIs_affiliated_personnaly_to_social_security((Boolean)newValue);
628 return;
629 case TaxationPackage.PHYSICAL_PERSON__BIRTH_MONTH:
630 setBirth_month((Integer)newValue);
631 return;
632 case TaxationPackage.PHYSICAL_PERSON__BIRTH_DAY:
633 setBirth_day((Integer)newValue);
634 return;
635 case TaxationPackage.PHYSICAL_PERSON__EXPENSES:
636 getExpenses().clear();
637 getExpenses().addAll((Collection<? extends Expense>)newValue);
638 return;
639 case TaxationPackage.PHYSICAL_PERSON__IS_WIDOWER:
640 setIs_widower((Boolean)newValue);
641 return;
642 case TaxationPackage.PHYSICAL_PERSON__OWNS_ADDRESS:
643 getOwns_Address().clear();
644 getOwns_Address().addAll((Collection<? extends Address>)newValue);
645 return;
646 }
647 super.eSet(featureID, newValue);
648 }
649
650 /**
651 * <!-- begin-user-doc -->
652 * <!-- end-user-doc -->
653 * @generated
654 */
655 @Override
656 public void eUnset(int featureID) {
657 switch (featureID) {
658 case TaxationPackage.PHYSICAL_PERSON__IS_ASSISTING_SPOUSE:
659 setIs_assisting_spouse(IS_ASSISTING_SPOUSE_EDEFAULT);
660 return;
661 case TaxationPackage.PHYSICAL_PERSON__SS_NO:
662 setSSNo(SS_NO_EDEFAULT);
663 return;
664 case TaxationPackage.PHYSICAL_PERSON__ADDRESSES:
665 getAddresses().clear();
666 return;
667 case TaxationPackage.PHYSICAL_PERSON__BIRTH_YEAR:
668 setBirth_year(BIRTH_YEAR_EDEFAULT);
669 return;
670 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_PERCENTAGE:
671 setDisability_percentage(DISABILITY_PERCENTAGE_EDEFAULT);
672 return;
673 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_TYPE:
674 setDisability_type(DISABILITY_TYPE_EDEFAULT);
675 return;
676 case TaxationPackage.PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY:
677 setIs_affiliated_personnaly_to_social_security(IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY_EDEFAULT);
678 return;
679 case TaxationPackage.PHYSICAL_PERSON__BIRTH_MONTH:
680 setBirth_month(BIRTH_MONTH_EDEFAULT);
681 return;
682 case TaxationPackage.PHYSICAL_PERSON__BIRTH_DAY:
683 setBirth_day(BIRTH_DAY_EDEFAULT);
684 return;
685 case TaxationPackage.PHYSICAL_PERSON__EXPENSES:
686 getExpenses().clear();
687 return;
688 case TaxationPackage.PHYSICAL_PERSON__IS_WIDOWER:
689 setIs_widower(IS_WIDOWER_EDEFAULT);
690 return;
691 case TaxationPackage.PHYSICAL_PERSON__OWNS_ADDRESS:
692 getOwns_Address().clear();
693 return;
694 }
695 super.eUnset(featureID);
696 }
697
698 /**
699 * <!-- begin-user-doc -->
700 * <!-- end-user-doc -->
701 * @generated
702 */
703 @Override
704 public boolean eIsSet(int featureID) {
705 switch (featureID) {
706 case TaxationPackage.PHYSICAL_PERSON__IS_ASSISTING_SPOUSE:
707 return is_assisting_spouse != IS_ASSISTING_SPOUSE_EDEFAULT;
708 case TaxationPackage.PHYSICAL_PERSON__SS_NO:
709 return SS_NO_EDEFAULT == null ? ssNo != null : !SS_NO_EDEFAULT.equals(ssNo);
710 case TaxationPackage.PHYSICAL_PERSON__ADDRESSES:
711 return addresses != null && !addresses.isEmpty();
712 case TaxationPackage.PHYSICAL_PERSON__BIRTH_YEAR:
713 return birth_year != BIRTH_YEAR_EDEFAULT;
714 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_PERCENTAGE:
715 return disability_percentage != DISABILITY_PERCENTAGE_EDEFAULT;
716 case TaxationPackage.PHYSICAL_PERSON__DISABILITY_TYPE:
717 return disability_type != DISABILITY_TYPE_EDEFAULT;
718 case TaxationPackage.PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY:
719 return is_affiliated_personnaly_to_social_security != IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY_EDEFAULT;
720 case TaxationPackage.PHYSICAL_PERSON__BIRTH_MONTH:
721 return birth_month != BIRTH_MONTH_EDEFAULT;
722 case TaxationPackage.PHYSICAL_PERSON__BIRTH_DAY:
723 return birth_day != BIRTH_DAY_EDEFAULT;
724 case TaxationPackage.PHYSICAL_PERSON__EXPENSES:
725 return expenses != null && !expenses.isEmpty();
726 case TaxationPackage.PHYSICAL_PERSON__IS_WIDOWER:
727 return is_widower != IS_WIDOWER_EDEFAULT;
728 case TaxationPackage.PHYSICAL_PERSON__OWNS_ADDRESS:
729 return owns_Address != null && !owns_Address.isEmpty();
730 }
731 return super.eIsSet(featureID);
732 }
733
734 /**
735 * <!-- begin-user-doc -->
736 * <!-- end-user-doc -->
737 * @generated
738 */
739 @Override
740 public String toString() {
741 if (eIsProxy()) return super.toString();
742
743 StringBuilder result = new StringBuilder(super.toString());
744 result.append(" (is_assisting_spouse: ");
745 result.append(is_assisting_spouse);
746 result.append(", SSNo: ");
747 result.append(ssNo);
748 result.append(", birth_year: ");
749 result.append(birth_year);
750 result.append(", disability_percentage: ");
751 result.append(disability_percentage);
752 result.append(", disability_type: ");
753 result.append(disability_type);
754 result.append(", is_affiliated_personnaly_to_social_security: ");
755 result.append(is_affiliated_personnaly_to_social_security);
756 result.append(", birth_month: ");
757 result.append(birth_month);
758 result.append(", birth_day: ");
759 result.append(birth_day);
760 result.append(", is_widower: ");
761 result.append(is_widower);
762 result.append(')');
763 return result.toString();
764 }
765
766} //Physical_PersonImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Private_Insurance_and_PlanImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Private_Insurance_and_PlanImpl.java
new file mode 100644
index 00000000..dfe39a95
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Private_Insurance_and_PlanImpl.java
@@ -0,0 +1,276 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Category_of_Private_Insurance_and_Plan;
6import Taxation.Private_Insurance_and_Plan;
7import Taxation.TaxationPackage;
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Private Insurance and Plan</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.Private_Insurance_and_PlanImpl#getCategory <em>Category</em>}</li>
23 * <li>{@link Taxation.impl.Private_Insurance_and_PlanImpl#getDuration_of_contract <em>Duration of contract</em>}</li>
24 * <li>{@link Taxation.impl.Private_Insurance_and_PlanImpl#isIs_private_insurance_and_plan_eligible_for_deduction <em>Is private insurance and plan eligible for deduction</em>}</li>
25 * </ul>
26 *
27 * @generated
28 */
29public class Private_Insurance_and_PlanImpl extends Special_Expense_DSImpl implements Private_Insurance_and_Plan {
30 /**
31 * The default value of the '{@link #getCategory() <em>Category</em>}' attribute.
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @see #getCategory()
35 * @generated
36 * @ordered
37 */
38 protected static final Category_of_Private_Insurance_and_Plan CATEGORY_EDEFAULT = Category_of_Private_Insurance_and_Plan.PRIVATE_INSURANCE;
39
40 /**
41 * The cached value of the '{@link #getCategory() <em>Category</em>}' attribute.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @see #getCategory()
45 * @generated
46 * @ordered
47 */
48 protected Category_of_Private_Insurance_and_Plan category = CATEGORY_EDEFAULT;
49
50 /**
51 * The default value of the '{@link #getDuration_of_contract() <em>Duration of contract</em>}' attribute.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @see #getDuration_of_contract()
55 * @generated
56 * @ordered
57 */
58 protected static final int DURATION_OF_CONTRACT_EDEFAULT = 0;
59
60 /**
61 * The cached value of the '{@link #getDuration_of_contract() <em>Duration of contract</em>}' attribute.
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @see #getDuration_of_contract()
65 * @generated
66 * @ordered
67 */
68 protected int duration_of_contract = DURATION_OF_CONTRACT_EDEFAULT;
69
70 /**
71 * The default value of the '{@link #isIs_private_insurance_and_plan_eligible_for_deduction() <em>Is private insurance and plan eligible for deduction</em>}' attribute.
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @see #isIs_private_insurance_and_plan_eligible_for_deduction()
75 * @generated
76 * @ordered
77 */
78 protected static final boolean IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION_EDEFAULT = false;
79
80 /**
81 * The cached value of the '{@link #isIs_private_insurance_and_plan_eligible_for_deduction() <em>Is private insurance and plan eligible for deduction</em>}' attribute.
82 * <!-- begin-user-doc -->
83 * <!-- end-user-doc -->
84 * @see #isIs_private_insurance_and_plan_eligible_for_deduction()
85 * @generated
86 * @ordered
87 */
88 protected boolean is_private_insurance_and_plan_eligible_for_deduction = IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION_EDEFAULT;
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 protected Private_Insurance_and_PlanImpl() {
96 super();
97 }
98
99 /**
100 * <!-- begin-user-doc -->
101 * <!-- end-user-doc -->
102 * @generated
103 */
104 @Override
105 protected EClass eStaticClass() {
106 return TaxationPackage.Literals.PRIVATE_INSURANCE_AND_PLAN;
107 }
108
109 /**
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @generated
113 */
114 @Override
115 public Category_of_Private_Insurance_and_Plan getCategory() {
116 return category;
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public void setCategory(Category_of_Private_Insurance_and_Plan newCategory) {
126 Category_of_Private_Insurance_and_Plan oldCategory = category;
127 category = newCategory == null ? CATEGORY_EDEFAULT : newCategory;
128 if (eNotificationRequired())
129 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__CATEGORY, oldCategory, category));
130 }
131
132 /**
133 * <!-- begin-user-doc -->
134 * <!-- end-user-doc -->
135 * @generated
136 */
137 @Override
138 public int getDuration_of_contract() {
139 return duration_of_contract;
140 }
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 @Override
148 public void setDuration_of_contract(int newDuration_of_contract) {
149 int oldDuration_of_contract = duration_of_contract;
150 duration_of_contract = newDuration_of_contract;
151 if (eNotificationRequired())
152 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT, oldDuration_of_contract, duration_of_contract));
153 }
154
155 /**
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @generated
159 */
160 @Override
161 public boolean isIs_private_insurance_and_plan_eligible_for_deduction() {
162 return is_private_insurance_and_plan_eligible_for_deduction;
163 }
164
165 /**
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @generated
169 */
170 @Override
171 public void setIs_private_insurance_and_plan_eligible_for_deduction(boolean newIs_private_insurance_and_plan_eligible_for_deduction) {
172 boolean oldIs_private_insurance_and_plan_eligible_for_deduction = is_private_insurance_and_plan_eligible_for_deduction;
173 is_private_insurance_and_plan_eligible_for_deduction = newIs_private_insurance_and_plan_eligible_for_deduction;
174 if (eNotificationRequired())
175 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION, oldIs_private_insurance_and_plan_eligible_for_deduction, is_private_insurance_and_plan_eligible_for_deduction));
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 @Override
184 public Object eGet(int featureID, boolean resolve, boolean coreType) {
185 switch (featureID) {
186 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__CATEGORY:
187 return getCategory();
188 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT:
189 return getDuration_of_contract();
190 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION:
191 return isIs_private_insurance_and_plan_eligible_for_deduction();
192 }
193 return super.eGet(featureID, resolve, coreType);
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 @Override
202 public void eSet(int featureID, Object newValue) {
203 switch (featureID) {
204 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__CATEGORY:
205 setCategory((Category_of_Private_Insurance_and_Plan)newValue);
206 return;
207 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT:
208 setDuration_of_contract((Integer)newValue);
209 return;
210 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION:
211 setIs_private_insurance_and_plan_eligible_for_deduction((Boolean)newValue);
212 return;
213 }
214 super.eSet(featureID, newValue);
215 }
216
217 /**
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 @Override
223 public void eUnset(int featureID) {
224 switch (featureID) {
225 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__CATEGORY:
226 setCategory(CATEGORY_EDEFAULT);
227 return;
228 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT:
229 setDuration_of_contract(DURATION_OF_CONTRACT_EDEFAULT);
230 return;
231 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION:
232 setIs_private_insurance_and_plan_eligible_for_deduction(IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION_EDEFAULT);
233 return;
234 }
235 super.eUnset(featureID);
236 }
237
238 /**
239 * <!-- begin-user-doc -->
240 * <!-- end-user-doc -->
241 * @generated
242 */
243 @Override
244 public boolean eIsSet(int featureID) {
245 switch (featureID) {
246 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__CATEGORY:
247 return category != CATEGORY_EDEFAULT;
248 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT:
249 return duration_of_contract != DURATION_OF_CONTRACT_EDEFAULT;
250 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION:
251 return is_private_insurance_and_plan_eligible_for_deduction != IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION_EDEFAULT;
252 }
253 return super.eIsSet(featureID);
254 }
255
256 /**
257 * <!-- begin-user-doc -->
258 * <!-- end-user-doc -->
259 * @generated
260 */
261 @Override
262 public String toString() {
263 if (eIsProxy()) return super.toString();
264
265 StringBuilder result = new StringBuilder(super.toString());
266 result.append(" (category: ");
267 result.append(category);
268 result.append(", duration_of_contract: ");
269 result.append(duration_of_contract);
270 result.append(", is_private_insurance_and_plan_eligible_for_deduction: ");
271 result.append(is_private_insurance_and_plan_eligible_for_deduction);
272 result.append(')');
273 return result.toString();
274 }
275
276} //Private_Insurance_and_PlanImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_ExpenseImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_ExpenseImpl.java
new file mode 100644
index 00000000..5f0ca78b
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_ExpenseImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Professional_Expense;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Professional Expense</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Professional_ExpenseImpl extends ExpenseImpl implements Professional_Expense {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Professional_ExpenseImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.PROFESSIONAL_EXPENSE;
35 }
36
37} //Professional_ExpenseImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_Expenses_DeductionImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_Expenses_DeductionImpl.java
new file mode 100644
index 00000000..38bd5195
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Professional_Expenses_DeductionImpl.java
@@ -0,0 +1,39 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Professional_Expenses_Deduction;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
11
12/**
13 * <!-- begin-user-doc -->
14 * An implementation of the model object '<em><b>Professional Expenses Deduction</b></em>'.
15 * <!-- end-user-doc -->
16 *
17 * @generated
18 */
19public class Professional_Expenses_DeductionImpl extends MinimalEObjectImpl.Container implements Professional_Expenses_Deduction {
20 /**
21 * <!-- begin-user-doc -->
22 * <!-- end-user-doc -->
23 * @generated
24 */
25 protected Professional_Expenses_DeductionImpl() {
26 super();
27 }
28
29 /**
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 @Override
35 protected EClass eStaticClass() {
36 return TaxationPackage.Literals.PROFESSIONAL_EXPENSES_DEDUCTION;
37 }
38
39} //Professional_Expenses_DeductionImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Rentals_and_Leases_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Rentals_and_Leases_IncomeImpl.java
new file mode 100644
index 00000000..76d97d5f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Rentals_and_Leases_IncomeImpl.java
@@ -0,0 +1,164 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Rentals_and_Leases_Income;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9
10import org.eclipse.emf.ecore.EClass;
11
12import org.eclipse.emf.ecore.impl.ENotificationImpl;
13
14/**
15 * <!-- begin-user-doc -->
16 * An implementation of the model object '<em><b>Rentals and Leases Income</b></em>'.
17 * <!-- end-user-doc -->
18 * <p>
19 * The following features are implemented:
20 * </p>
21 * <ul>
22 * <li>{@link Taxation.impl.Rentals_and_Leases_IncomeImpl#isIs_periodic <em>Is periodic</em>}</li>
23 * </ul>
24 *
25 * @generated
26 */
27public class Rentals_and_Leases_IncomeImpl extends Income_TypeImpl implements Rentals_and_Leases_Income {
28 /**
29 * The default value of the '{@link #isIs_periodic() <em>Is periodic</em>}' attribute.
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @see #isIs_periodic()
33 * @generated
34 * @ordered
35 */
36 protected static final boolean IS_PERIODIC_EDEFAULT = true;
37
38 /**
39 * The cached value of the '{@link #isIs_periodic() <em>Is periodic</em>}' attribute.
40 * <!-- begin-user-doc -->
41 * <!-- end-user-doc -->
42 * @see #isIs_periodic()
43 * @generated
44 * @ordered
45 */
46 protected boolean is_periodic = IS_PERIODIC_EDEFAULT;
47
48 /**
49 * <!-- begin-user-doc -->
50 * <!-- end-user-doc -->
51 * @generated
52 */
53 protected Rentals_and_Leases_IncomeImpl() {
54 super();
55 }
56
57 /**
58 * <!-- begin-user-doc -->
59 * <!-- end-user-doc -->
60 * @generated
61 */
62 @Override
63 protected EClass eStaticClass() {
64 return TaxationPackage.Literals.RENTALS_AND_LEASES_INCOME;
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 @Override
73 public boolean isIs_periodic() {
74 return is_periodic;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 @Override
83 public void setIs_periodic(boolean newIs_periodic) {
84 boolean oldIs_periodic = is_periodic;
85 is_periodic = newIs_periodic;
86 if (eNotificationRequired())
87 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.RENTALS_AND_LEASES_INCOME__IS_PERIODIC, oldIs_periodic, is_periodic));
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 @Override
96 public Object eGet(int featureID, boolean resolve, boolean coreType) {
97 switch (featureID) {
98 case TaxationPackage.RENTALS_AND_LEASES_INCOME__IS_PERIODIC:
99 return isIs_periodic();
100 }
101 return super.eGet(featureID, resolve, coreType);
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 @Override
110 public void eSet(int featureID, Object newValue) {
111 switch (featureID) {
112 case TaxationPackage.RENTALS_AND_LEASES_INCOME__IS_PERIODIC:
113 setIs_periodic((Boolean)newValue);
114 return;
115 }
116 super.eSet(featureID, newValue);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public void eUnset(int featureID) {
126 switch (featureID) {
127 case TaxationPackage.RENTALS_AND_LEASES_INCOME__IS_PERIODIC:
128 setIs_periodic(IS_PERIODIC_EDEFAULT);
129 return;
130 }
131 super.eUnset(featureID);
132 }
133
134 /**
135 * <!-- begin-user-doc -->
136 * <!-- end-user-doc -->
137 * @generated
138 */
139 @Override
140 public boolean eIsSet(int featureID) {
141 switch (featureID) {
142 case TaxationPackage.RENTALS_AND_LEASES_INCOME__IS_PERIODIC:
143 return is_periodic != IS_PERIODIC_EDEFAULT;
144 }
145 return super.eIsSet(featureID);
146 }
147
148 /**
149 * <!-- begin-user-doc -->
150 * <!-- end-user-doc -->
151 * @generated
152 */
153 @Override
154 public String toString() {
155 if (eIsProxy()) return super.toString();
156
157 StringBuilder result = new StringBuilder(super.toString());
158 result.append(" (is_periodic: ");
159 result.append(is_periodic);
160 result.append(')');
161 return result.toString();
162 }
163
164} //Rentals_and_Leases_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Resident_Tax_PayerImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Resident_Tax_PayerImpl.java
new file mode 100644
index 00000000..34a1f15c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Resident_Tax_PayerImpl.java
@@ -0,0 +1,36 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Resident_Tax_Payer;
6import Taxation.TaxationPackage;
7import org.eclipse.emf.ecore.EClass;
8
9/**
10 * <!-- begin-user-doc -->
11 * An implementation of the model object '<em><b>Resident Tax Payer</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * @generated
15 */
16public class Resident_Tax_PayerImpl extends Tax_PayerImpl implements Resident_Tax_Payer {
17 /**
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 protected Resident_Tax_PayerImpl() {
23 super();
24 }
25
26 /**
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @generated
30 */
31 @Override
32 protected EClass eStaticClass() {
33 return TaxationPackage.Literals.RESIDENT_TAX_PAYER;
34 }
35
36} //Resident_Tax_PayerImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Special_Expense_DSImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Special_Expense_DSImpl.java
new file mode 100644
index 00000000..797c351e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Special_Expense_DSImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Special_Expense_DS;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Special Expense DS</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Special_Expense_DSImpl extends ExpenseImpl implements Special_Expense_DS {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Special_Expense_DSImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.SPECIAL_EXPENSE_DS;
35 }
36
37} //Special_Expense_DSImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Spousal_Expense_ACImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Spousal_Expense_ACImpl.java
new file mode 100644
index 00000000..3fcb40f9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Spousal_Expense_ACImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Spousal_Expense_AC;
6import Taxation.TaxationPackage;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Spousal Expense AC</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Spousal_Expense_ACImpl extends ExpenseImpl implements Spousal_Expense_AC {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Spousal_Expense_ACImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.SPOUSAL_EXPENSE_AC;
35 }
36
37} //Spousal_Expense_ACImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_CardImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_CardImpl.java
new file mode 100644
index 00000000..68f4f7f9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_CardImpl.java
@@ -0,0 +1,2263 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Address;
6import Taxation.Income;
7import Taxation.Income_Tax_Credit;
8import Taxation.Job_Activity;
9import Taxation.Tax_Card;
10import Taxation.Tax_Card_Type;
11import Taxation.Tax_Office;
12import Taxation.TaxationPackage;
13import Taxation.Town;
14
15import java.util.Collection;
16import java.util.Date;
17
18import org.eclipse.emf.common.notify.Notification;
19import org.eclipse.emf.common.notify.NotificationChain;
20
21import org.eclipse.emf.common.util.EList;
22
23import org.eclipse.emf.ecore.EClass;
24import org.eclipse.emf.ecore.InternalEObject;
25
26import org.eclipse.emf.ecore.impl.ENotificationImpl;
27import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
28
29import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
30import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
31import org.eclipse.emf.ecore.util.EcoreUtil;
32import org.eclipse.emf.ecore.util.InternalEList;
33
34/**
35 * <!-- begin-user-doc -->
36 * An implementation of the model object '<em><b>Tax Card</b></em>'.
37 * <!-- end-user-doc -->
38 * <p>
39 * The following features are implemented:
40 * </p>
41 * <ul>
42 * <li>{@link Taxation.impl.Tax_CardImpl#getCard_identifier <em>Card identifier</em>}</li>
43 * <li>{@link Taxation.impl.Tax_CardImpl#getTax_card_type <em>Tax card type</em>}</li>
44 * <li>{@link Taxation.impl.Tax_CardImpl#getTax_office <em>Tax office</em>}</li>
45 * <li>{@link Taxation.impl.Tax_CardImpl#getValid_from_date <em>Valid from date</em>}</li>
46 * <li>{@link Taxation.impl.Tax_CardImpl#getValid_until_date <em>Valid until date</em>}</li>
47 * <li>{@link Taxation.impl.Tax_CardImpl#getPercentage_of_witholding <em>Percentage of witholding</em>}</li>
48 * <li>{@link Taxation.impl.Tax_CardImpl#getTax_payers_name_surname <em>Tax payers name surname</em>}</li>
49 * <li>{@link Taxation.impl.Tax_CardImpl#getTax_payers_partner_name_surname <em>Tax payers partner name surname</em>}</li>
50 * <li>{@link Taxation.impl.Tax_CardImpl#getTax_payers_address <em>Tax payers address</em>}</li>
51 * <li>{@link Taxation.impl.Tax_CardImpl#getJobs_Employer_SSNo <em>Jobs Employer SS No</em>}</li>
52 * <li>{@link Taxation.impl.Tax_CardImpl#getJobs_employers_name <em>Jobs employers name</em>}</li>
53 * <li>{@link Taxation.impl.Tax_CardImpl#getJobs_activity_type <em>Jobs activity type</em>}</li>
54 * <li>{@link Taxation.impl.Tax_CardImpl#getJobs_place_of_work <em>Jobs place of work</em>}</li>
55 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_FD_daily <em>Deduction FD daily</em>}</li>
56 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_FD_monthly <em>Deduction FD monthly</em>}</li>
57 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_AC_daily <em>Deduction AC daily</em>}</li>
58 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_AC_monthly <em>Deduction AC monthly</em>}</li>
59 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_AC_yearly <em>Deduction AC yearly</em>}</li>
60 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_CE_daily <em>Deduction CE daily</em>}</li>
61 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_CE_monthly <em>Deduction CE monthly</em>}</li>
62 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_CE_yearly <em>Deduction CE yearly</em>}</li>
63 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_DS_daily <em>Deduction DS daily</em>}</li>
64 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_DS_monthly <em>Deduction DS monthly</em>}</li>
65 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_FO_daily <em>Deduction FO daily</em>}</li>
66 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_FO_monthly <em>Deduction FO monthly</em>}</li>
67 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_FO_yearly <em>Deduction FO yearly</em>}</li>
68 * <li>{@link Taxation.impl.Tax_CardImpl#getCredit_CIS_daily <em>Credit CIS daily</em>}</li>
69 * <li>{@link Taxation.impl.Tax_CardImpl#getCredit_CIS_monthly <em>Credit CIS monthly</em>}</li>
70 * <li>{@link Taxation.impl.Tax_CardImpl#getCredit_CIM_daily <em>Credit CIM daily</em>}</li>
71 * <li>{@link Taxation.impl.Tax_CardImpl#isValidity <em>Validity</em>}</li>
72 * <li>{@link Taxation.impl.Tax_CardImpl#getIncome_Tax_Credit <em>Income Tax Credit</em>}</li>
73 * <li>{@link Taxation.impl.Tax_CardImpl#getPrevious <em>Previous</em>}</li>
74 * <li>{@link Taxation.impl.Tax_CardImpl#getCurrent_tax_card <em>Current tax card</em>}</li>
75 * <li>{@link Taxation.impl.Tax_CardImpl#getCredit_CIM_yearly <em>Credit CIM yearly</em>}</li>
76 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_DS_Alimony_yearly <em>Deduction DS Alimony yearly</em>}</li>
77 * <li>{@link Taxation.impl.Tax_CardImpl#getDeduction_DS_Debt_yearly <em>Deduction DS Debt yearly</em>}</li>
78 * <li>{@link Taxation.impl.Tax_CardImpl#getIncome <em>Income</em>}</li>
79 * </ul>
80 *
81 * @generated
82 */
83public class Tax_CardImpl extends MinimalEObjectImpl.Container implements Tax_Card {
84 /**
85 * The default value of the '{@link #getCard_identifier() <em>Card identifier</em>}' attribute.
86 * <!-- begin-user-doc -->
87 * <!-- end-user-doc -->
88 * @see #getCard_identifier()
89 * @generated
90 * @ordered
91 */
92 protected static final String CARD_IDENTIFIER_EDEFAULT = null;
93
94 /**
95 * The cached value of the '{@link #getCard_identifier() <em>Card identifier</em>}' attribute.
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @see #getCard_identifier()
99 * @generated
100 * @ordered
101 */
102 protected String card_identifier = CARD_IDENTIFIER_EDEFAULT;
103
104 /**
105 * The default value of the '{@link #getTax_card_type() <em>Tax card type</em>}' attribute.
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @see #getTax_card_type()
109 * @generated
110 * @ordered
111 */
112 protected static final Tax_Card_Type TAX_CARD_TYPE_EDEFAULT = Tax_Card_Type.PRINCIPAL;
113
114 /**
115 * The cached value of the '{@link #getTax_card_type() <em>Tax card type</em>}' attribute.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @see #getTax_card_type()
119 * @generated
120 * @ordered
121 */
122 protected Tax_Card_Type tax_card_type = TAX_CARD_TYPE_EDEFAULT;
123
124 /**
125 * The default value of the '{@link #getTax_office() <em>Tax office</em>}' attribute.
126 * <!-- begin-user-doc -->
127 * <!-- end-user-doc -->
128 * @see #getTax_office()
129 * @generated
130 * @ordered
131 */
132 protected static final Tax_Office TAX_OFFICE_EDEFAULT = Tax_Office.RTS_2;
133
134 /**
135 * The cached value of the '{@link #getTax_office() <em>Tax office</em>}' attribute.
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @see #getTax_office()
139 * @generated
140 * @ordered
141 */
142 protected Tax_Office tax_office = TAX_OFFICE_EDEFAULT;
143
144 /**
145 * The default value of the '{@link #getValid_from_date() <em>Valid from date</em>}' attribute.
146 * <!-- begin-user-doc -->
147 * <!-- end-user-doc -->
148 * @see #getValid_from_date()
149 * @generated
150 * @ordered
151 */
152 protected static final Date VALID_FROM_DATE_EDEFAULT = null;
153
154 /**
155 * The cached value of the '{@link #getValid_from_date() <em>Valid from date</em>}' attribute.
156 * <!-- begin-user-doc -->
157 * <!-- end-user-doc -->
158 * @see #getValid_from_date()
159 * @generated
160 * @ordered
161 */
162 protected Date valid_from_date = VALID_FROM_DATE_EDEFAULT;
163
164 /**
165 * The default value of the '{@link #getValid_until_date() <em>Valid until date</em>}' attribute.
166 * <!-- begin-user-doc -->
167 * <!-- end-user-doc -->
168 * @see #getValid_until_date()
169 * @generated
170 * @ordered
171 */
172 protected static final Date VALID_UNTIL_DATE_EDEFAULT = null;
173
174 /**
175 * The cached value of the '{@link #getValid_until_date() <em>Valid until date</em>}' attribute.
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @see #getValid_until_date()
179 * @generated
180 * @ordered
181 */
182 protected Date valid_until_date = VALID_UNTIL_DATE_EDEFAULT;
183
184 /**
185 * The default value of the '{@link #getPercentage_of_witholding() <em>Percentage of witholding</em>}' attribute.
186 * <!-- begin-user-doc -->
187 * <!-- end-user-doc -->
188 * @see #getPercentage_of_witholding()
189 * @generated
190 * @ordered
191 */
192 protected static final double PERCENTAGE_OF_WITHOLDING_EDEFAULT = 0.0;
193
194 /**
195 * The cached value of the '{@link #getPercentage_of_witholding() <em>Percentage of witholding</em>}' attribute.
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @see #getPercentage_of_witholding()
199 * @generated
200 * @ordered
201 */
202 protected double percentage_of_witholding = PERCENTAGE_OF_WITHOLDING_EDEFAULT;
203
204 /**
205 * The cached value of the '{@link #getTax_payers_name_surname() <em>Tax payers name surname</em>}' attribute list.
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @see #getTax_payers_name_surname()
209 * @generated
210 * @ordered
211 */
212 protected EList<String> tax_payers_name_surname;
213
214 /**
215 * The cached value of the '{@link #getTax_payers_partner_name_surname() <em>Tax payers partner name surname</em>}' attribute list.
216 * <!-- begin-user-doc -->
217 * <!-- end-user-doc -->
218 * @see #getTax_payers_partner_name_surname()
219 * @generated
220 * @ordered
221 */
222 protected EList<String> tax_payers_partner_name_surname;
223
224 /**
225 * The cached value of the '{@link #getTax_payers_address() <em>Tax payers address</em>}' reference.
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @see #getTax_payers_address()
229 * @generated
230 * @ordered
231 */
232 protected Address tax_payers_address;
233
234 /**
235 * The default value of the '{@link #getJobs_Employer_SSNo() <em>Jobs Employer SS No</em>}' attribute.
236 * <!-- begin-user-doc -->
237 * <!-- end-user-doc -->
238 * @see #getJobs_Employer_SSNo()
239 * @generated
240 * @ordered
241 */
242 protected static final String JOBS_EMPLOYER_SS_NO_EDEFAULT = null;
243
244 /**
245 * The cached value of the '{@link #getJobs_Employer_SSNo() <em>Jobs Employer SS No</em>}' attribute.
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @see #getJobs_Employer_SSNo()
249 * @generated
250 * @ordered
251 */
252 protected String jobs_Employer_SSNo = JOBS_EMPLOYER_SS_NO_EDEFAULT;
253
254 /**
255 * The default value of the '{@link #getJobs_employers_name() <em>Jobs employers name</em>}' attribute.
256 * <!-- begin-user-doc -->
257 * <!-- end-user-doc -->
258 * @see #getJobs_employers_name()
259 * @generated
260 * @ordered
261 */
262 protected static final String JOBS_EMPLOYERS_NAME_EDEFAULT = null;
263
264 /**
265 * The cached value of the '{@link #getJobs_employers_name() <em>Jobs employers name</em>}' attribute.
266 * <!-- begin-user-doc -->
267 * <!-- end-user-doc -->
268 * @see #getJobs_employers_name()
269 * @generated
270 * @ordered
271 */
272 protected String jobs_employers_name = JOBS_EMPLOYERS_NAME_EDEFAULT;
273
274 /**
275 * The default value of the '{@link #getJobs_activity_type() <em>Jobs activity type</em>}' attribute.
276 * <!-- begin-user-doc -->
277 * <!-- end-user-doc -->
278 * @see #getJobs_activity_type()
279 * @generated
280 * @ordered
281 */
282 protected static final Job_Activity JOBS_ACTIVITY_TYPE_EDEFAULT = Job_Activity.SALARY;
283
284 /**
285 * The cached value of the '{@link #getJobs_activity_type() <em>Jobs activity type</em>}' attribute.
286 * <!-- begin-user-doc -->
287 * <!-- end-user-doc -->
288 * @see #getJobs_activity_type()
289 * @generated
290 * @ordered
291 */
292 protected Job_Activity jobs_activity_type = JOBS_ACTIVITY_TYPE_EDEFAULT;
293
294 /**
295 * The default value of the '{@link #getJobs_place_of_work() <em>Jobs place of work</em>}' attribute.
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @see #getJobs_place_of_work()
299 * @generated
300 * @ordered
301 */
302 protected static final Town JOBS_PLACE_OF_WORK_EDEFAULT = Town.LL;
303
304 /**
305 * The cached value of the '{@link #getJobs_place_of_work() <em>Jobs place of work</em>}' attribute.
306 * <!-- begin-user-doc -->
307 * <!-- end-user-doc -->
308 * @see #getJobs_place_of_work()
309 * @generated
310 * @ordered
311 */
312 protected Town jobs_place_of_work = JOBS_PLACE_OF_WORK_EDEFAULT;
313
314 /**
315 * The default value of the '{@link #getDeduction_FD_daily() <em>Deduction FD daily</em>}' attribute.
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @see #getDeduction_FD_daily()
319 * @generated
320 * @ordered
321 */
322 protected static final double DEDUCTION_FD_DAILY_EDEFAULT = 0.0;
323
324 /**
325 * The cached value of the '{@link #getDeduction_FD_daily() <em>Deduction FD daily</em>}' attribute.
326 * <!-- begin-user-doc -->
327 * <!-- end-user-doc -->
328 * @see #getDeduction_FD_daily()
329 * @generated
330 * @ordered
331 */
332 protected double deduction_FD_daily = DEDUCTION_FD_DAILY_EDEFAULT;
333
334 /**
335 * The default value of the '{@link #getDeduction_FD_monthly() <em>Deduction FD monthly</em>}' attribute.
336 * <!-- begin-user-doc -->
337 * <!-- end-user-doc -->
338 * @see #getDeduction_FD_monthly()
339 * @generated
340 * @ordered
341 */
342 protected static final double DEDUCTION_FD_MONTHLY_EDEFAULT = 0.0;
343
344 /**
345 * The cached value of the '{@link #getDeduction_FD_monthly() <em>Deduction FD monthly</em>}' attribute.
346 * <!-- begin-user-doc -->
347 * <!-- end-user-doc -->
348 * @see #getDeduction_FD_monthly()
349 * @generated
350 * @ordered
351 */
352 protected double deduction_FD_monthly = DEDUCTION_FD_MONTHLY_EDEFAULT;
353
354 /**
355 * The default value of the '{@link #getDeduction_AC_daily() <em>Deduction AC daily</em>}' attribute.
356 * <!-- begin-user-doc -->
357 * <!-- end-user-doc -->
358 * @see #getDeduction_AC_daily()
359 * @generated
360 * @ordered
361 */
362 protected static final double DEDUCTION_AC_DAILY_EDEFAULT = 0.0;
363
364 /**
365 * The cached value of the '{@link #getDeduction_AC_daily() <em>Deduction AC daily</em>}' attribute.
366 * <!-- begin-user-doc -->
367 * <!-- end-user-doc -->
368 * @see #getDeduction_AC_daily()
369 * @generated
370 * @ordered
371 */
372 protected double deduction_AC_daily = DEDUCTION_AC_DAILY_EDEFAULT;
373
374 /**
375 * The default value of the '{@link #getDeduction_AC_monthly() <em>Deduction AC monthly</em>}' attribute.
376 * <!-- begin-user-doc -->
377 * <!-- end-user-doc -->
378 * @see #getDeduction_AC_monthly()
379 * @generated
380 * @ordered
381 */
382 protected static final double DEDUCTION_AC_MONTHLY_EDEFAULT = 0.0;
383
384 /**
385 * The cached value of the '{@link #getDeduction_AC_monthly() <em>Deduction AC monthly</em>}' attribute.
386 * <!-- begin-user-doc -->
387 * <!-- end-user-doc -->
388 * @see #getDeduction_AC_monthly()
389 * @generated
390 * @ordered
391 */
392 protected double deduction_AC_monthly = DEDUCTION_AC_MONTHLY_EDEFAULT;
393
394 /**
395 * The default value of the '{@link #getDeduction_AC_yearly() <em>Deduction AC yearly</em>}' attribute.
396 * <!-- begin-user-doc -->
397 * <!-- end-user-doc -->
398 * @see #getDeduction_AC_yearly()
399 * @generated
400 * @ordered
401 */
402 protected static final double DEDUCTION_AC_YEARLY_EDEFAULT = 0.0;
403
404 /**
405 * The cached value of the '{@link #getDeduction_AC_yearly() <em>Deduction AC yearly</em>}' attribute.
406 * <!-- begin-user-doc -->
407 * <!-- end-user-doc -->
408 * @see #getDeduction_AC_yearly()
409 * @generated
410 * @ordered
411 */
412 protected double deduction_AC_yearly = DEDUCTION_AC_YEARLY_EDEFAULT;
413
414 /**
415 * The default value of the '{@link #getDeduction_CE_daily() <em>Deduction CE daily</em>}' attribute.
416 * <!-- begin-user-doc -->
417 * <!-- end-user-doc -->
418 * @see #getDeduction_CE_daily()
419 * @generated
420 * @ordered
421 */
422 protected static final double DEDUCTION_CE_DAILY_EDEFAULT = 0.0;
423
424 /**
425 * The cached value of the '{@link #getDeduction_CE_daily() <em>Deduction CE daily</em>}' attribute.
426 * <!-- begin-user-doc -->
427 * <!-- end-user-doc -->
428 * @see #getDeduction_CE_daily()
429 * @generated
430 * @ordered
431 */
432 protected double deduction_CE_daily = DEDUCTION_CE_DAILY_EDEFAULT;
433
434 /**
435 * The default value of the '{@link #getDeduction_CE_monthly() <em>Deduction CE monthly</em>}' attribute.
436 * <!-- begin-user-doc -->
437 * <!-- end-user-doc -->
438 * @see #getDeduction_CE_monthly()
439 * @generated
440 * @ordered
441 */
442 protected static final double DEDUCTION_CE_MONTHLY_EDEFAULT = 0.0;
443
444 /**
445 * The cached value of the '{@link #getDeduction_CE_monthly() <em>Deduction CE monthly</em>}' attribute.
446 * <!-- begin-user-doc -->
447 * <!-- end-user-doc -->
448 * @see #getDeduction_CE_monthly()
449 * @generated
450 * @ordered
451 */
452 protected double deduction_CE_monthly = DEDUCTION_CE_MONTHLY_EDEFAULT;
453
454 /**
455 * The default value of the '{@link #getDeduction_CE_yearly() <em>Deduction CE yearly</em>}' attribute.
456 * <!-- begin-user-doc -->
457 * <!-- end-user-doc -->
458 * @see #getDeduction_CE_yearly()
459 * @generated
460 * @ordered
461 */
462 protected static final double DEDUCTION_CE_YEARLY_EDEFAULT = 0.0;
463
464 /**
465 * The cached value of the '{@link #getDeduction_CE_yearly() <em>Deduction CE yearly</em>}' attribute.
466 * <!-- begin-user-doc -->
467 * <!-- end-user-doc -->
468 * @see #getDeduction_CE_yearly()
469 * @generated
470 * @ordered
471 */
472 protected double deduction_CE_yearly = DEDUCTION_CE_YEARLY_EDEFAULT;
473
474 /**
475 * The default value of the '{@link #getDeduction_DS_daily() <em>Deduction DS daily</em>}' attribute.
476 * <!-- begin-user-doc -->
477 * <!-- end-user-doc -->
478 * @see #getDeduction_DS_daily()
479 * @generated
480 * @ordered
481 */
482 protected static final double DEDUCTION_DS_DAILY_EDEFAULT = 0.0;
483
484 /**
485 * The cached value of the '{@link #getDeduction_DS_daily() <em>Deduction DS daily</em>}' attribute.
486 * <!-- begin-user-doc -->
487 * <!-- end-user-doc -->
488 * @see #getDeduction_DS_daily()
489 * @generated
490 * @ordered
491 */
492 protected double deduction_DS_daily = DEDUCTION_DS_DAILY_EDEFAULT;
493
494 /**
495 * The default value of the '{@link #getDeduction_DS_monthly() <em>Deduction DS monthly</em>}' attribute.
496 * <!-- begin-user-doc -->
497 * <!-- end-user-doc -->
498 * @see #getDeduction_DS_monthly()
499 * @generated
500 * @ordered
501 */
502 protected static final double DEDUCTION_DS_MONTHLY_EDEFAULT = 0.0;
503
504 /**
505 * The cached value of the '{@link #getDeduction_DS_monthly() <em>Deduction DS monthly</em>}' attribute.
506 * <!-- begin-user-doc -->
507 * <!-- end-user-doc -->
508 * @see #getDeduction_DS_monthly()
509 * @generated
510 * @ordered
511 */
512 protected double deduction_DS_monthly = DEDUCTION_DS_MONTHLY_EDEFAULT;
513
514 /**
515 * The default value of the '{@link #getDeduction_FO_daily() <em>Deduction FO daily</em>}' attribute.
516 * <!-- begin-user-doc -->
517 * <!-- end-user-doc -->
518 * @see #getDeduction_FO_daily()
519 * @generated
520 * @ordered
521 */
522 protected static final double DEDUCTION_FO_DAILY_EDEFAULT = 0.0;
523
524 /**
525 * The cached value of the '{@link #getDeduction_FO_daily() <em>Deduction FO daily</em>}' attribute.
526 * <!-- begin-user-doc -->
527 * <!-- end-user-doc -->
528 * @see #getDeduction_FO_daily()
529 * @generated
530 * @ordered
531 */
532 protected double deduction_FO_daily = DEDUCTION_FO_DAILY_EDEFAULT;
533
534 /**
535 * The default value of the '{@link #getDeduction_FO_monthly() <em>Deduction FO monthly</em>}' attribute.
536 * <!-- begin-user-doc -->
537 * <!-- end-user-doc -->
538 * @see #getDeduction_FO_monthly()
539 * @generated
540 * @ordered
541 */
542 protected static final double DEDUCTION_FO_MONTHLY_EDEFAULT = 0.0;
543
544 /**
545 * The cached value of the '{@link #getDeduction_FO_monthly() <em>Deduction FO monthly</em>}' attribute.
546 * <!-- begin-user-doc -->
547 * <!-- end-user-doc -->
548 * @see #getDeduction_FO_monthly()
549 * @generated
550 * @ordered
551 */
552 protected double deduction_FO_monthly = DEDUCTION_FO_MONTHLY_EDEFAULT;
553
554 /**
555 * The default value of the '{@link #getDeduction_FO_yearly() <em>Deduction FO yearly</em>}' attribute.
556 * <!-- begin-user-doc -->
557 * <!-- end-user-doc -->
558 * @see #getDeduction_FO_yearly()
559 * @generated
560 * @ordered
561 */
562 protected static final double DEDUCTION_FO_YEARLY_EDEFAULT = 0.0;
563
564 /**
565 * The cached value of the '{@link #getDeduction_FO_yearly() <em>Deduction FO yearly</em>}' attribute.
566 * <!-- begin-user-doc -->
567 * <!-- end-user-doc -->
568 * @see #getDeduction_FO_yearly()
569 * @generated
570 * @ordered
571 */
572 protected double deduction_FO_yearly = DEDUCTION_FO_YEARLY_EDEFAULT;
573
574 /**
575 * The default value of the '{@link #getCredit_CIS_daily() <em>Credit CIS daily</em>}' attribute.
576 * <!-- begin-user-doc -->
577 * <!-- end-user-doc -->
578 * @see #getCredit_CIS_daily()
579 * @generated
580 * @ordered
581 */
582 protected static final double CREDIT_CIS_DAILY_EDEFAULT = 0.0;
583
584 /**
585 * The cached value of the '{@link #getCredit_CIS_daily() <em>Credit CIS daily</em>}' attribute.
586 * <!-- begin-user-doc -->
587 * <!-- end-user-doc -->
588 * @see #getCredit_CIS_daily()
589 * @generated
590 * @ordered
591 */
592 protected double credit_CIS_daily = CREDIT_CIS_DAILY_EDEFAULT;
593
594 /**
595 * The default value of the '{@link #getCredit_CIS_monthly() <em>Credit CIS monthly</em>}' attribute.
596 * <!-- begin-user-doc -->
597 * <!-- end-user-doc -->
598 * @see #getCredit_CIS_monthly()
599 * @generated
600 * @ordered
601 */
602 protected static final double CREDIT_CIS_MONTHLY_EDEFAULT = 0.0;
603
604 /**
605 * The cached value of the '{@link #getCredit_CIS_monthly() <em>Credit CIS monthly</em>}' attribute.
606 * <!-- begin-user-doc -->
607 * <!-- end-user-doc -->
608 * @see #getCredit_CIS_monthly()
609 * @generated
610 * @ordered
611 */
612 protected double credit_CIS_monthly = CREDIT_CIS_MONTHLY_EDEFAULT;
613
614 /**
615 * The default value of the '{@link #getCredit_CIM_daily() <em>Credit CIM daily</em>}' attribute.
616 * <!-- begin-user-doc -->
617 * <!-- end-user-doc -->
618 * @see #getCredit_CIM_daily()
619 * @generated
620 * @ordered
621 */
622 protected static final double CREDIT_CIM_DAILY_EDEFAULT = 0.0;
623
624 /**
625 * The cached value of the '{@link #getCredit_CIM_daily() <em>Credit CIM daily</em>}' attribute.
626 * <!-- begin-user-doc -->
627 * <!-- end-user-doc -->
628 * @see #getCredit_CIM_daily()
629 * @generated
630 * @ordered
631 */
632 protected double credit_CIM_daily = CREDIT_CIM_DAILY_EDEFAULT;
633
634 /**
635 * The default value of the '{@link #isValidity() <em>Validity</em>}' attribute.
636 * <!-- begin-user-doc -->
637 * <!-- end-user-doc -->
638 * @see #isValidity()
639 * @generated
640 * @ordered
641 */
642 protected static final boolean VALIDITY_EDEFAULT = false;
643
644 /**
645 * The cached value of the '{@link #isValidity() <em>Validity</em>}' attribute.
646 * <!-- begin-user-doc -->
647 * <!-- end-user-doc -->
648 * @see #isValidity()
649 * @generated
650 * @ordered
651 */
652 protected boolean validity = VALIDITY_EDEFAULT;
653
654 /**
655 * The cached value of the '{@link #getIncome_Tax_Credit() <em>Income Tax Credit</em>}' reference list.
656 * <!-- begin-user-doc -->
657 * <!-- end-user-doc -->
658 * @see #getIncome_Tax_Credit()
659 * @generated
660 * @ordered
661 */
662 protected EList<Income_Tax_Credit> income_Tax_Credit;
663
664 /**
665 * The cached value of the '{@link #getPrevious() <em>Previous</em>}' reference.
666 * <!-- begin-user-doc -->
667 * <!-- end-user-doc -->
668 * @see #getPrevious()
669 * @generated
670 * @ordered
671 */
672 protected Tax_Card previous;
673
674 /**
675 * The cached value of the '{@link #getCurrent_tax_card() <em>Current tax card</em>}' reference.
676 * <!-- begin-user-doc -->
677 * <!-- end-user-doc -->
678 * @see #getCurrent_tax_card()
679 * @generated
680 * @ordered
681 */
682 protected Tax_Card current_tax_card;
683
684 /**
685 * The default value of the '{@link #getCredit_CIM_yearly() <em>Credit CIM yearly</em>}' attribute.
686 * <!-- begin-user-doc -->
687 * <!-- end-user-doc -->
688 * @see #getCredit_CIM_yearly()
689 * @generated
690 * @ordered
691 */
692 protected static final double CREDIT_CIM_YEARLY_EDEFAULT = 0.0;
693
694 /**
695 * The cached value of the '{@link #getCredit_CIM_yearly() <em>Credit CIM yearly</em>}' attribute.
696 * <!-- begin-user-doc -->
697 * <!-- end-user-doc -->
698 * @see #getCredit_CIM_yearly()
699 * @generated
700 * @ordered
701 */
702 protected double credit_CIM_yearly = CREDIT_CIM_YEARLY_EDEFAULT;
703
704 /**
705 * The default value of the '{@link #getDeduction_DS_Alimony_yearly() <em>Deduction DS Alimony yearly</em>}' attribute.
706 * <!-- begin-user-doc -->
707 * <!-- end-user-doc -->
708 * @see #getDeduction_DS_Alimony_yearly()
709 * @generated
710 * @ordered
711 */
712 protected static final double DEDUCTION_DS_ALIMONY_YEARLY_EDEFAULT = 0.0;
713
714 /**
715 * The cached value of the '{@link #getDeduction_DS_Alimony_yearly() <em>Deduction DS Alimony yearly</em>}' attribute.
716 * <!-- begin-user-doc -->
717 * <!-- end-user-doc -->
718 * @see #getDeduction_DS_Alimony_yearly()
719 * @generated
720 * @ordered
721 */
722 protected double deduction_DS_Alimony_yearly = DEDUCTION_DS_ALIMONY_YEARLY_EDEFAULT;
723
724 /**
725 * The default value of the '{@link #getDeduction_DS_Debt_yearly() <em>Deduction DS Debt yearly</em>}' attribute.
726 * <!-- begin-user-doc -->
727 * <!-- end-user-doc -->
728 * @see #getDeduction_DS_Debt_yearly()
729 * @generated
730 * @ordered
731 */
732 protected static final double DEDUCTION_DS_DEBT_YEARLY_EDEFAULT = 0.0;
733
734 /**
735 * The cached value of the '{@link #getDeduction_DS_Debt_yearly() <em>Deduction DS Debt yearly</em>}' attribute.
736 * <!-- begin-user-doc -->
737 * <!-- end-user-doc -->
738 * @see #getDeduction_DS_Debt_yearly()
739 * @generated
740 * @ordered
741 */
742 protected double deduction_DS_Debt_yearly = DEDUCTION_DS_DEBT_YEARLY_EDEFAULT;
743
744 /**
745 * <!-- begin-user-doc -->
746 * <!-- end-user-doc -->
747 * @generated
748 */
749 protected Tax_CardImpl() {
750 super();
751 }
752
753 /**
754 * <!-- begin-user-doc -->
755 * <!-- end-user-doc -->
756 * @generated
757 */
758 @Override
759 protected EClass eStaticClass() {
760 return TaxationPackage.Literals.TAX_CARD;
761 }
762
763 /**
764 * <!-- begin-user-doc -->
765 * <!-- end-user-doc -->
766 * @generated
767 */
768 @Override
769 public String getCard_identifier() {
770 return card_identifier;
771 }
772
773 /**
774 * <!-- begin-user-doc -->
775 * <!-- end-user-doc -->
776 * @generated
777 */
778 @Override
779 public void setCard_identifier(String newCard_identifier) {
780 String oldCard_identifier = card_identifier;
781 card_identifier = newCard_identifier;
782 if (eNotificationRequired())
783 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CARD_IDENTIFIER, oldCard_identifier, card_identifier));
784 }
785
786 /**
787 * <!-- begin-user-doc -->
788 * <!-- end-user-doc -->
789 * @generated
790 */
791 @Override
792 public Tax_Card_Type getTax_card_type() {
793 return tax_card_type;
794 }
795
796 /**
797 * <!-- begin-user-doc -->
798 * <!-- end-user-doc -->
799 * @generated
800 */
801 @Override
802 public void setTax_card_type(Tax_Card_Type newTax_card_type) {
803 Tax_Card_Type oldTax_card_type = tax_card_type;
804 tax_card_type = newTax_card_type == null ? TAX_CARD_TYPE_EDEFAULT : newTax_card_type;
805 if (eNotificationRequired())
806 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__TAX_CARD_TYPE, oldTax_card_type, tax_card_type));
807 }
808
809 /**
810 * <!-- begin-user-doc -->
811 * <!-- end-user-doc -->
812 * @generated
813 */
814 @Override
815 public Tax_Office getTax_office() {
816 return tax_office;
817 }
818
819 /**
820 * <!-- begin-user-doc -->
821 * <!-- end-user-doc -->
822 * @generated
823 */
824 @Override
825 public void setTax_office(Tax_Office newTax_office) {
826 Tax_Office oldTax_office = tax_office;
827 tax_office = newTax_office == null ? TAX_OFFICE_EDEFAULT : newTax_office;
828 if (eNotificationRequired())
829 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__TAX_OFFICE, oldTax_office, tax_office));
830 }
831
832 /**
833 * <!-- begin-user-doc -->
834 * <!-- end-user-doc -->
835 * @generated
836 */
837 @Override
838 public Date getValid_from_date() {
839 return valid_from_date;
840 }
841
842 /**
843 * <!-- begin-user-doc -->
844 * <!-- end-user-doc -->
845 * @generated
846 */
847 @Override
848 public void setValid_from_date(Date newValid_from_date) {
849 Date oldValid_from_date = valid_from_date;
850 valid_from_date = newValid_from_date;
851 if (eNotificationRequired())
852 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__VALID_FROM_DATE, oldValid_from_date, valid_from_date));
853 }
854
855 /**
856 * <!-- begin-user-doc -->
857 * <!-- end-user-doc -->
858 * @generated
859 */
860 @Override
861 public Date getValid_until_date() {
862 return valid_until_date;
863 }
864
865 /**
866 * <!-- begin-user-doc -->
867 * <!-- end-user-doc -->
868 * @generated
869 */
870 @Override
871 public void setValid_until_date(Date newValid_until_date) {
872 Date oldValid_until_date = valid_until_date;
873 valid_until_date = newValid_until_date;
874 if (eNotificationRequired())
875 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__VALID_UNTIL_DATE, oldValid_until_date, valid_until_date));
876 }
877
878 /**
879 * <!-- begin-user-doc -->
880 * <!-- end-user-doc -->
881 * @generated
882 */
883 @Override
884 public double getPercentage_of_witholding() {
885 return percentage_of_witholding;
886 }
887
888 /**
889 * <!-- begin-user-doc -->
890 * <!-- end-user-doc -->
891 * @generated
892 */
893 @Override
894 public void setPercentage_of_witholding(double newPercentage_of_witholding) {
895 double oldPercentage_of_witholding = percentage_of_witholding;
896 percentage_of_witholding = newPercentage_of_witholding;
897 if (eNotificationRequired())
898 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__PERCENTAGE_OF_WITHOLDING, oldPercentage_of_witholding, percentage_of_witholding));
899 }
900
901 /**
902 * <!-- begin-user-doc -->
903 * <!-- end-user-doc -->
904 * @generated
905 */
906 @Override
907 public EList<String> getTax_payers_name_surname() {
908 if (tax_payers_name_surname == null) {
909 tax_payers_name_surname = new EDataTypeUniqueEList<String>(String.class, this, TaxationPackage.TAX_CARD__TAX_PAYERS_NAME_SURNAME);
910 }
911 return tax_payers_name_surname;
912 }
913
914 /**
915 * <!-- begin-user-doc -->
916 * <!-- end-user-doc -->
917 * @generated
918 */
919 @Override
920 public EList<String> getTax_payers_partner_name_surname() {
921 if (tax_payers_partner_name_surname == null) {
922 tax_payers_partner_name_surname = new EDataTypeUniqueEList<String>(String.class, this, TaxationPackage.TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME);
923 }
924 return tax_payers_partner_name_surname;
925 }
926
927 /**
928 * <!-- begin-user-doc -->
929 * <!-- end-user-doc -->
930 * @generated
931 */
932 @Override
933 public Address getTax_payers_address() {
934 if (tax_payers_address != null && tax_payers_address.eIsProxy()) {
935 InternalEObject oldTax_payers_address = (InternalEObject)tax_payers_address;
936 tax_payers_address = (Address)eResolveProxy(oldTax_payers_address);
937 if (tax_payers_address != oldTax_payers_address) {
938 if (eNotificationRequired())
939 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.TAX_CARD__TAX_PAYERS_ADDRESS, oldTax_payers_address, tax_payers_address));
940 }
941 }
942 return tax_payers_address;
943 }
944
945 /**
946 * <!-- begin-user-doc -->
947 * <!-- end-user-doc -->
948 * @generated
949 */
950 public Address basicGetTax_payers_address() {
951 return tax_payers_address;
952 }
953
954 /**
955 * <!-- begin-user-doc -->
956 * <!-- end-user-doc -->
957 * @generated
958 */
959 @Override
960 public void setTax_payers_address(Address newTax_payers_address) {
961 Address oldTax_payers_address = tax_payers_address;
962 tax_payers_address = newTax_payers_address;
963 if (eNotificationRequired())
964 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__TAX_PAYERS_ADDRESS, oldTax_payers_address, tax_payers_address));
965 }
966
967 /**
968 * <!-- begin-user-doc -->
969 * <!-- end-user-doc -->
970 * @generated
971 */
972 @Override
973 public String getJobs_Employer_SSNo() {
974 return jobs_Employer_SSNo;
975 }
976
977 /**
978 * <!-- begin-user-doc -->
979 * <!-- end-user-doc -->
980 * @generated
981 */
982 @Override
983 public void setJobs_Employer_SSNo(String newJobs_Employer_SSNo) {
984 String oldJobs_Employer_SSNo = jobs_Employer_SSNo;
985 jobs_Employer_SSNo = newJobs_Employer_SSNo;
986 if (eNotificationRequired())
987 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__JOBS_EMPLOYER_SS_NO, oldJobs_Employer_SSNo, jobs_Employer_SSNo));
988 }
989
990 /**
991 * <!-- begin-user-doc -->
992 * <!-- end-user-doc -->
993 * @generated
994 */
995 @Override
996 public String getJobs_employers_name() {
997 return jobs_employers_name;
998 }
999
1000 /**
1001 * <!-- begin-user-doc -->
1002 * <!-- end-user-doc -->
1003 * @generated
1004 */
1005 @Override
1006 public void setJobs_employers_name(String newJobs_employers_name) {
1007 String oldJobs_employers_name = jobs_employers_name;
1008 jobs_employers_name = newJobs_employers_name;
1009 if (eNotificationRequired())
1010 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__JOBS_EMPLOYERS_NAME, oldJobs_employers_name, jobs_employers_name));
1011 }
1012
1013 /**
1014 * <!-- begin-user-doc -->
1015 * <!-- end-user-doc -->
1016 * @generated
1017 */
1018 @Override
1019 public Job_Activity getJobs_activity_type() {
1020 return jobs_activity_type;
1021 }
1022
1023 /**
1024 * <!-- begin-user-doc -->
1025 * <!-- end-user-doc -->
1026 * @generated
1027 */
1028 @Override
1029 public void setJobs_activity_type(Job_Activity newJobs_activity_type) {
1030 Job_Activity oldJobs_activity_type = jobs_activity_type;
1031 jobs_activity_type = newJobs_activity_type == null ? JOBS_ACTIVITY_TYPE_EDEFAULT : newJobs_activity_type;
1032 if (eNotificationRequired())
1033 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__JOBS_ACTIVITY_TYPE, oldJobs_activity_type, jobs_activity_type));
1034 }
1035
1036 /**
1037 * <!-- begin-user-doc -->
1038 * <!-- end-user-doc -->
1039 * @generated
1040 */
1041 @Override
1042 public Town getJobs_place_of_work() {
1043 return jobs_place_of_work;
1044 }
1045
1046 /**
1047 * <!-- begin-user-doc -->
1048 * <!-- end-user-doc -->
1049 * @generated
1050 */
1051 @Override
1052 public void setJobs_place_of_work(Town newJobs_place_of_work) {
1053 Town oldJobs_place_of_work = jobs_place_of_work;
1054 jobs_place_of_work = newJobs_place_of_work == null ? JOBS_PLACE_OF_WORK_EDEFAULT : newJobs_place_of_work;
1055 if (eNotificationRequired())
1056 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__JOBS_PLACE_OF_WORK, oldJobs_place_of_work, jobs_place_of_work));
1057 }
1058
1059 /**
1060 * <!-- begin-user-doc -->
1061 * <!-- end-user-doc -->
1062 * @generated
1063 */
1064 @Override
1065 public double getDeduction_FD_daily() {
1066 return deduction_FD_daily;
1067 }
1068
1069 /**
1070 * <!-- begin-user-doc -->
1071 * <!-- end-user-doc -->
1072 * @generated
1073 */
1074 @Override
1075 public void setDeduction_FD_daily(double newDeduction_FD_daily) {
1076 double oldDeduction_FD_daily = deduction_FD_daily;
1077 deduction_FD_daily = newDeduction_FD_daily;
1078 if (eNotificationRequired())
1079 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_FD_DAILY, oldDeduction_FD_daily, deduction_FD_daily));
1080 }
1081
1082 /**
1083 * <!-- begin-user-doc -->
1084 * <!-- end-user-doc -->
1085 * @generated
1086 */
1087 @Override
1088 public double getDeduction_FD_monthly() {
1089 return deduction_FD_monthly;
1090 }
1091
1092 /**
1093 * <!-- begin-user-doc -->
1094 * <!-- end-user-doc -->
1095 * @generated
1096 */
1097 @Override
1098 public void setDeduction_FD_monthly(double newDeduction_FD_monthly) {
1099 double oldDeduction_FD_monthly = deduction_FD_monthly;
1100 deduction_FD_monthly = newDeduction_FD_monthly;
1101 if (eNotificationRequired())
1102 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_FD_MONTHLY, oldDeduction_FD_monthly, deduction_FD_monthly));
1103 }
1104
1105 /**
1106 * <!-- begin-user-doc -->
1107 * <!-- end-user-doc -->
1108 * @generated
1109 */
1110 @Override
1111 public double getDeduction_AC_daily() {
1112 return deduction_AC_daily;
1113 }
1114
1115 /**
1116 * <!-- begin-user-doc -->
1117 * <!-- end-user-doc -->
1118 * @generated
1119 */
1120 @Override
1121 public void setDeduction_AC_daily(double newDeduction_AC_daily) {
1122 double oldDeduction_AC_daily = deduction_AC_daily;
1123 deduction_AC_daily = newDeduction_AC_daily;
1124 if (eNotificationRequired())
1125 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_AC_DAILY, oldDeduction_AC_daily, deduction_AC_daily));
1126 }
1127
1128 /**
1129 * <!-- begin-user-doc -->
1130 * <!-- end-user-doc -->
1131 * @generated
1132 */
1133 @Override
1134 public double getDeduction_AC_monthly() {
1135 return deduction_AC_monthly;
1136 }
1137
1138 /**
1139 * <!-- begin-user-doc -->
1140 * <!-- end-user-doc -->
1141 * @generated
1142 */
1143 @Override
1144 public void setDeduction_AC_monthly(double newDeduction_AC_monthly) {
1145 double oldDeduction_AC_monthly = deduction_AC_monthly;
1146 deduction_AC_monthly = newDeduction_AC_monthly;
1147 if (eNotificationRequired())
1148 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_AC_MONTHLY, oldDeduction_AC_monthly, deduction_AC_monthly));
1149 }
1150
1151 /**
1152 * <!-- begin-user-doc -->
1153 * <!-- end-user-doc -->
1154 * @generated
1155 */
1156 @Override
1157 public double getDeduction_AC_yearly() {
1158 return deduction_AC_yearly;
1159 }
1160
1161 /**
1162 * <!-- begin-user-doc -->
1163 * <!-- end-user-doc -->
1164 * @generated
1165 */
1166 @Override
1167 public void setDeduction_AC_yearly(double newDeduction_AC_yearly) {
1168 double oldDeduction_AC_yearly = deduction_AC_yearly;
1169 deduction_AC_yearly = newDeduction_AC_yearly;
1170 if (eNotificationRequired())
1171 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_AC_YEARLY, oldDeduction_AC_yearly, deduction_AC_yearly));
1172 }
1173
1174 /**
1175 * <!-- begin-user-doc -->
1176 * <!-- end-user-doc -->
1177 * @generated
1178 */
1179 @Override
1180 public double getDeduction_CE_daily() {
1181 return deduction_CE_daily;
1182 }
1183
1184 /**
1185 * <!-- begin-user-doc -->
1186 * <!-- end-user-doc -->
1187 * @generated
1188 */
1189 @Override
1190 public void setDeduction_CE_daily(double newDeduction_CE_daily) {
1191 double oldDeduction_CE_daily = deduction_CE_daily;
1192 deduction_CE_daily = newDeduction_CE_daily;
1193 if (eNotificationRequired())
1194 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_CE_DAILY, oldDeduction_CE_daily, deduction_CE_daily));
1195 }
1196
1197 /**
1198 * <!-- begin-user-doc -->
1199 * <!-- end-user-doc -->
1200 * @generated
1201 */
1202 @Override
1203 public double getDeduction_CE_monthly() {
1204 return deduction_CE_monthly;
1205 }
1206
1207 /**
1208 * <!-- begin-user-doc -->
1209 * <!-- end-user-doc -->
1210 * @generated
1211 */
1212 @Override
1213 public void setDeduction_CE_monthly(double newDeduction_CE_monthly) {
1214 double oldDeduction_CE_monthly = deduction_CE_monthly;
1215 deduction_CE_monthly = newDeduction_CE_monthly;
1216 if (eNotificationRequired())
1217 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_CE_MONTHLY, oldDeduction_CE_monthly, deduction_CE_monthly));
1218 }
1219
1220 /**
1221 * <!-- begin-user-doc -->
1222 * <!-- end-user-doc -->
1223 * @generated
1224 */
1225 @Override
1226 public double getDeduction_CE_yearly() {
1227 return deduction_CE_yearly;
1228 }
1229
1230 /**
1231 * <!-- begin-user-doc -->
1232 * <!-- end-user-doc -->
1233 * @generated
1234 */
1235 @Override
1236 public void setDeduction_CE_yearly(double newDeduction_CE_yearly) {
1237 double oldDeduction_CE_yearly = deduction_CE_yearly;
1238 deduction_CE_yearly = newDeduction_CE_yearly;
1239 if (eNotificationRequired())
1240 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_CE_YEARLY, oldDeduction_CE_yearly, deduction_CE_yearly));
1241 }
1242
1243 /**
1244 * <!-- begin-user-doc -->
1245 * <!-- end-user-doc -->
1246 * @generated
1247 */
1248 @Override
1249 public double getDeduction_DS_daily() {
1250 return deduction_DS_daily;
1251 }
1252
1253 /**
1254 * <!-- begin-user-doc -->
1255 * <!-- end-user-doc -->
1256 * @generated
1257 */
1258 @Override
1259 public void setDeduction_DS_daily(double newDeduction_DS_daily) {
1260 double oldDeduction_DS_daily = deduction_DS_daily;
1261 deduction_DS_daily = newDeduction_DS_daily;
1262 if (eNotificationRequired())
1263 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_DS_DAILY, oldDeduction_DS_daily, deduction_DS_daily));
1264 }
1265
1266 /**
1267 * <!-- begin-user-doc -->
1268 * <!-- end-user-doc -->
1269 * @generated
1270 */
1271 @Override
1272 public double getDeduction_DS_monthly() {
1273 return deduction_DS_monthly;
1274 }
1275
1276 /**
1277 * <!-- begin-user-doc -->
1278 * <!-- end-user-doc -->
1279 * @generated
1280 */
1281 @Override
1282 public void setDeduction_DS_monthly(double newDeduction_DS_monthly) {
1283 double oldDeduction_DS_monthly = deduction_DS_monthly;
1284 deduction_DS_monthly = newDeduction_DS_monthly;
1285 if (eNotificationRequired())
1286 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_DS_MONTHLY, oldDeduction_DS_monthly, deduction_DS_monthly));
1287 }
1288
1289 /**
1290 * <!-- begin-user-doc -->
1291 * <!-- end-user-doc -->
1292 * @generated
1293 */
1294 @Override
1295 public double getDeduction_FO_daily() {
1296 return deduction_FO_daily;
1297 }
1298
1299 /**
1300 * <!-- begin-user-doc -->
1301 * <!-- end-user-doc -->
1302 * @generated
1303 */
1304 @Override
1305 public void setDeduction_FO_daily(double newDeduction_FO_daily) {
1306 double oldDeduction_FO_daily = deduction_FO_daily;
1307 deduction_FO_daily = newDeduction_FO_daily;
1308 if (eNotificationRequired())
1309 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_FO_DAILY, oldDeduction_FO_daily, deduction_FO_daily));
1310 }
1311
1312 /**
1313 * <!-- begin-user-doc -->
1314 * <!-- end-user-doc -->
1315 * @generated
1316 */
1317 @Override
1318 public double getDeduction_FO_monthly() {
1319 return deduction_FO_monthly;
1320 }
1321
1322 /**
1323 * <!-- begin-user-doc -->
1324 * <!-- end-user-doc -->
1325 * @generated
1326 */
1327 @Override
1328 public void setDeduction_FO_monthly(double newDeduction_FO_monthly) {
1329 double oldDeduction_FO_monthly = deduction_FO_monthly;
1330 deduction_FO_monthly = newDeduction_FO_monthly;
1331 if (eNotificationRequired())
1332 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_FO_MONTHLY, oldDeduction_FO_monthly, deduction_FO_monthly));
1333 }
1334
1335 /**
1336 * <!-- begin-user-doc -->
1337 * <!-- end-user-doc -->
1338 * @generated
1339 */
1340 @Override
1341 public double getDeduction_FO_yearly() {
1342 return deduction_FO_yearly;
1343 }
1344
1345 /**
1346 * <!-- begin-user-doc -->
1347 * <!-- end-user-doc -->
1348 * @generated
1349 */
1350 @Override
1351 public void setDeduction_FO_yearly(double newDeduction_FO_yearly) {
1352 double oldDeduction_FO_yearly = deduction_FO_yearly;
1353 deduction_FO_yearly = newDeduction_FO_yearly;
1354 if (eNotificationRequired())
1355 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_FO_YEARLY, oldDeduction_FO_yearly, deduction_FO_yearly));
1356 }
1357
1358 /**
1359 * <!-- begin-user-doc -->
1360 * <!-- end-user-doc -->
1361 * @generated
1362 */
1363 @Override
1364 public double getCredit_CIS_daily() {
1365 return credit_CIS_daily;
1366 }
1367
1368 /**
1369 * <!-- begin-user-doc -->
1370 * <!-- end-user-doc -->
1371 * @generated
1372 */
1373 @Override
1374 public void setCredit_CIS_daily(double newCredit_CIS_daily) {
1375 double oldCredit_CIS_daily = credit_CIS_daily;
1376 credit_CIS_daily = newCredit_CIS_daily;
1377 if (eNotificationRequired())
1378 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CREDIT_CIS_DAILY, oldCredit_CIS_daily, credit_CIS_daily));
1379 }
1380
1381 /**
1382 * <!-- begin-user-doc -->
1383 * <!-- end-user-doc -->
1384 * @generated
1385 */
1386 @Override
1387 public double getCredit_CIS_monthly() {
1388 return credit_CIS_monthly;
1389 }
1390
1391 /**
1392 * <!-- begin-user-doc -->
1393 * <!-- end-user-doc -->
1394 * @generated
1395 */
1396 @Override
1397 public void setCredit_CIS_monthly(double newCredit_CIS_monthly) {
1398 double oldCredit_CIS_monthly = credit_CIS_monthly;
1399 credit_CIS_monthly = newCredit_CIS_monthly;
1400 if (eNotificationRequired())
1401 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CREDIT_CIS_MONTHLY, oldCredit_CIS_monthly, credit_CIS_monthly));
1402 }
1403
1404 /**
1405 * <!-- begin-user-doc -->
1406 * <!-- end-user-doc -->
1407 * @generated
1408 */
1409 @Override
1410 public double getCredit_CIM_daily() {
1411 return credit_CIM_daily;
1412 }
1413
1414 /**
1415 * <!-- begin-user-doc -->
1416 * <!-- end-user-doc -->
1417 * @generated
1418 */
1419 @Override
1420 public void setCredit_CIM_daily(double newCredit_CIM_daily) {
1421 double oldCredit_CIM_daily = credit_CIM_daily;
1422 credit_CIM_daily = newCredit_CIM_daily;
1423 if (eNotificationRequired())
1424 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CREDIT_CIM_DAILY, oldCredit_CIM_daily, credit_CIM_daily));
1425 }
1426
1427 /**
1428 * <!-- begin-user-doc -->
1429 * <!-- end-user-doc -->
1430 * @generated
1431 */
1432 @Override
1433 public boolean isValidity() {
1434 return validity;
1435 }
1436
1437 /**
1438 * <!-- begin-user-doc -->
1439 * <!-- end-user-doc -->
1440 * @generated
1441 */
1442 @Override
1443 public void setValidity(boolean newValidity) {
1444 boolean oldValidity = validity;
1445 validity = newValidity;
1446 if (eNotificationRequired())
1447 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__VALIDITY, oldValidity, validity));
1448 }
1449
1450 /**
1451 * <!-- begin-user-doc -->
1452 * <!-- end-user-doc -->
1453 * @generated
1454 */
1455 @Override
1456 public EList<Income_Tax_Credit> getIncome_Tax_Credit() {
1457 if (income_Tax_Credit == null) {
1458 income_Tax_Credit = new EObjectWithInverseResolvingEList<Income_Tax_Credit>(Income_Tax_Credit.class, this, TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT, TaxationPackage.INCOME_TAX_CREDIT__TAXATION_FRAME);
1459 }
1460 return income_Tax_Credit;
1461 }
1462
1463 /**
1464 * <!-- begin-user-doc -->
1465 * <!-- end-user-doc -->
1466 * @generated
1467 */
1468 @Override
1469 public Tax_Card getPrevious() {
1470 if (previous != null && previous.eIsProxy()) {
1471 InternalEObject oldPrevious = (InternalEObject)previous;
1472 previous = (Tax_Card)eResolveProxy(oldPrevious);
1473 if (previous != oldPrevious) {
1474 if (eNotificationRequired())
1475 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.TAX_CARD__PREVIOUS, oldPrevious, previous));
1476 }
1477 }
1478 return previous;
1479 }
1480
1481 /**
1482 * <!-- begin-user-doc -->
1483 * <!-- end-user-doc -->
1484 * @generated
1485 */
1486 public Tax_Card basicGetPrevious() {
1487 return previous;
1488 }
1489
1490 /**
1491 * <!-- begin-user-doc -->
1492 * <!-- end-user-doc -->
1493 * @generated
1494 */
1495 public NotificationChain basicSetPrevious(Tax_Card newPrevious, NotificationChain msgs) {
1496 Tax_Card oldPrevious = previous;
1497 previous = newPrevious;
1498 if (eNotificationRequired()) {
1499 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__PREVIOUS, oldPrevious, newPrevious);
1500 if (msgs == null) msgs = notification; else msgs.add(notification);
1501 }
1502 return msgs;
1503 }
1504
1505 /**
1506 * <!-- begin-user-doc -->
1507 * <!-- end-user-doc -->
1508 * @generated
1509 */
1510 @Override
1511 public void setPrevious(Tax_Card newPrevious) {
1512 if (newPrevious != previous) {
1513 NotificationChain msgs = null;
1514 if (previous != null)
1515 msgs = ((InternalEObject)previous).eInverseRemove(this, TaxationPackage.TAX_CARD__CURRENT_TAX_CARD, Tax_Card.class, msgs);
1516 if (newPrevious != null)
1517 msgs = ((InternalEObject)newPrevious).eInverseAdd(this, TaxationPackage.TAX_CARD__CURRENT_TAX_CARD, Tax_Card.class, msgs);
1518 msgs = basicSetPrevious(newPrevious, msgs);
1519 if (msgs != null) msgs.dispatch();
1520 }
1521 else if (eNotificationRequired())
1522 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__PREVIOUS, newPrevious, newPrevious));
1523 }
1524
1525 /**
1526 * <!-- begin-user-doc -->
1527 * <!-- end-user-doc -->
1528 * @generated
1529 */
1530 @Override
1531 public Tax_Card getCurrent_tax_card() {
1532 if (current_tax_card != null && current_tax_card.eIsProxy()) {
1533 InternalEObject oldCurrent_tax_card = (InternalEObject)current_tax_card;
1534 current_tax_card = (Tax_Card)eResolveProxy(oldCurrent_tax_card);
1535 if (current_tax_card != oldCurrent_tax_card) {
1536 if (eNotificationRequired())
1537 eNotify(new ENotificationImpl(this, Notification.RESOLVE, TaxationPackage.TAX_CARD__CURRENT_TAX_CARD, oldCurrent_tax_card, current_tax_card));
1538 }
1539 }
1540 return current_tax_card;
1541 }
1542
1543 /**
1544 * <!-- begin-user-doc -->
1545 * <!-- end-user-doc -->
1546 * @generated
1547 */
1548 public Tax_Card basicGetCurrent_tax_card() {
1549 return current_tax_card;
1550 }
1551
1552 /**
1553 * <!-- begin-user-doc -->
1554 * <!-- end-user-doc -->
1555 * @generated
1556 */
1557 public NotificationChain basicSetCurrent_tax_card(Tax_Card newCurrent_tax_card, NotificationChain msgs) {
1558 Tax_Card oldCurrent_tax_card = current_tax_card;
1559 current_tax_card = newCurrent_tax_card;
1560 if (eNotificationRequired()) {
1561 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CURRENT_TAX_CARD, oldCurrent_tax_card, newCurrent_tax_card);
1562 if (msgs == null) msgs = notification; else msgs.add(notification);
1563 }
1564 return msgs;
1565 }
1566
1567 /**
1568 * <!-- begin-user-doc -->
1569 * <!-- end-user-doc -->
1570 * @generated
1571 */
1572 @Override
1573 public void setCurrent_tax_card(Tax_Card newCurrent_tax_card) {
1574 if (newCurrent_tax_card != current_tax_card) {
1575 NotificationChain msgs = null;
1576 if (current_tax_card != null)
1577 msgs = ((InternalEObject)current_tax_card).eInverseRemove(this, TaxationPackage.TAX_CARD__PREVIOUS, Tax_Card.class, msgs);
1578 if (newCurrent_tax_card != null)
1579 msgs = ((InternalEObject)newCurrent_tax_card).eInverseAdd(this, TaxationPackage.TAX_CARD__PREVIOUS, Tax_Card.class, msgs);
1580 msgs = basicSetCurrent_tax_card(newCurrent_tax_card, msgs);
1581 if (msgs != null) msgs.dispatch();
1582 }
1583 else if (eNotificationRequired())
1584 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CURRENT_TAX_CARD, newCurrent_tax_card, newCurrent_tax_card));
1585 }
1586
1587 /**
1588 * <!-- begin-user-doc -->
1589 * <!-- end-user-doc -->
1590 * @generated
1591 */
1592 @Override
1593 public double getCredit_CIM_yearly() {
1594 return credit_CIM_yearly;
1595 }
1596
1597 /**
1598 * <!-- begin-user-doc -->
1599 * <!-- end-user-doc -->
1600 * @generated
1601 */
1602 @Override
1603 public void setCredit_CIM_yearly(double newCredit_CIM_yearly) {
1604 double oldCredit_CIM_yearly = credit_CIM_yearly;
1605 credit_CIM_yearly = newCredit_CIM_yearly;
1606 if (eNotificationRequired())
1607 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__CREDIT_CIM_YEARLY, oldCredit_CIM_yearly, credit_CIM_yearly));
1608 }
1609
1610 /**
1611 * <!-- begin-user-doc -->
1612 * <!-- end-user-doc -->
1613 * @generated
1614 */
1615 @Override
1616 public double getDeduction_DS_Alimony_yearly() {
1617 return deduction_DS_Alimony_yearly;
1618 }
1619
1620 /**
1621 * <!-- begin-user-doc -->
1622 * <!-- end-user-doc -->
1623 * @generated
1624 */
1625 @Override
1626 public void setDeduction_DS_Alimony_yearly(double newDeduction_DS_Alimony_yearly) {
1627 double oldDeduction_DS_Alimony_yearly = deduction_DS_Alimony_yearly;
1628 deduction_DS_Alimony_yearly = newDeduction_DS_Alimony_yearly;
1629 if (eNotificationRequired())
1630 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY, oldDeduction_DS_Alimony_yearly, deduction_DS_Alimony_yearly));
1631 }
1632
1633 /**
1634 * <!-- begin-user-doc -->
1635 * <!-- end-user-doc -->
1636 * @generated
1637 */
1638 @Override
1639 public double getDeduction_DS_Debt_yearly() {
1640 return deduction_DS_Debt_yearly;
1641 }
1642
1643 /**
1644 * <!-- begin-user-doc -->
1645 * <!-- end-user-doc -->
1646 * @generated
1647 */
1648 @Override
1649 public void setDeduction_DS_Debt_yearly(double newDeduction_DS_Debt_yearly) {
1650 double oldDeduction_DS_Debt_yearly = deduction_DS_Debt_yearly;
1651 deduction_DS_Debt_yearly = newDeduction_DS_Debt_yearly;
1652 if (eNotificationRequired())
1653 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__DEDUCTION_DS_DEBT_YEARLY, oldDeduction_DS_Debt_yearly, deduction_DS_Debt_yearly));
1654 }
1655
1656 /**
1657 * <!-- begin-user-doc -->
1658 * <!-- end-user-doc -->
1659 * @generated
1660 */
1661 @Override
1662 public Income getIncome() {
1663 if (eContainerFeatureID() != TaxationPackage.TAX_CARD__INCOME) return null;
1664 return (Income)eInternalContainer();
1665 }
1666
1667 /**
1668 * <!-- begin-user-doc -->
1669 * <!-- end-user-doc -->
1670 * @generated
1671 */
1672 public NotificationChain basicSetIncome(Income newIncome, NotificationChain msgs) {
1673 msgs = eBasicSetContainer((InternalEObject)newIncome, TaxationPackage.TAX_CARD__INCOME, msgs);
1674 return msgs;
1675 }
1676
1677 /**
1678 * <!-- begin-user-doc -->
1679 * <!-- end-user-doc -->
1680 * @generated
1681 */
1682 @Override
1683 public void setIncome(Income newIncome) {
1684 if (newIncome != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.TAX_CARD__INCOME && newIncome != null)) {
1685 if (EcoreUtil.isAncestor(this, newIncome))
1686 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
1687 NotificationChain msgs = null;
1688 if (eInternalContainer() != null)
1689 msgs = eBasicRemoveFromContainer(msgs);
1690 if (newIncome != null)
1691 msgs = ((InternalEObject)newIncome).eInverseAdd(this, TaxationPackage.INCOME__TAX_CARD, Income.class, msgs);
1692 msgs = basicSetIncome(newIncome, msgs);
1693 if (msgs != null) msgs.dispatch();
1694 }
1695 else if (eNotificationRequired())
1696 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_CARD__INCOME, newIncome, newIncome));
1697 }
1698
1699 /**
1700 * <!-- begin-user-doc -->
1701 * <!-- end-user-doc -->
1702 * @generated
1703 */
1704 @SuppressWarnings("unchecked")
1705 @Override
1706 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
1707 switch (featureID) {
1708 case TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT:
1709 return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncome_Tax_Credit()).basicAdd(otherEnd, msgs);
1710 case TaxationPackage.TAX_CARD__PREVIOUS:
1711 if (previous != null)
1712 msgs = ((InternalEObject)previous).eInverseRemove(this, TaxationPackage.TAX_CARD__CURRENT_TAX_CARD, Tax_Card.class, msgs);
1713 return basicSetPrevious((Tax_Card)otherEnd, msgs);
1714 case TaxationPackage.TAX_CARD__CURRENT_TAX_CARD:
1715 if (current_tax_card != null)
1716 msgs = ((InternalEObject)current_tax_card).eInverseRemove(this, TaxationPackage.TAX_CARD__PREVIOUS, Tax_Card.class, msgs);
1717 return basicSetCurrent_tax_card((Tax_Card)otherEnd, msgs);
1718 case TaxationPackage.TAX_CARD__INCOME:
1719 if (eInternalContainer() != null)
1720 msgs = eBasicRemoveFromContainer(msgs);
1721 return basicSetIncome((Income)otherEnd, msgs);
1722 }
1723 return super.eInverseAdd(otherEnd, featureID, msgs);
1724 }
1725
1726 /**
1727 * <!-- begin-user-doc -->
1728 * <!-- end-user-doc -->
1729 * @generated
1730 */
1731 @Override
1732 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
1733 switch (featureID) {
1734 case TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT:
1735 return ((InternalEList<?>)getIncome_Tax_Credit()).basicRemove(otherEnd, msgs);
1736 case TaxationPackage.TAX_CARD__PREVIOUS:
1737 return basicSetPrevious(null, msgs);
1738 case TaxationPackage.TAX_CARD__CURRENT_TAX_CARD:
1739 return basicSetCurrent_tax_card(null, msgs);
1740 case TaxationPackage.TAX_CARD__INCOME:
1741 return basicSetIncome(null, msgs);
1742 }
1743 return super.eInverseRemove(otherEnd, featureID, msgs);
1744 }
1745
1746 /**
1747 * <!-- begin-user-doc -->
1748 * <!-- end-user-doc -->
1749 * @generated
1750 */
1751 @Override
1752 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
1753 switch (eContainerFeatureID()) {
1754 case TaxationPackage.TAX_CARD__INCOME:
1755 return eInternalContainer().eInverseRemove(this, TaxationPackage.INCOME__TAX_CARD, Income.class, msgs);
1756 }
1757 return super.eBasicRemoveFromContainerFeature(msgs);
1758 }
1759
1760 /**
1761 * <!-- begin-user-doc -->
1762 * <!-- end-user-doc -->
1763 * @generated
1764 */
1765 @Override
1766 public Object eGet(int featureID, boolean resolve, boolean coreType) {
1767 switch (featureID) {
1768 case TaxationPackage.TAX_CARD__CARD_IDENTIFIER:
1769 return getCard_identifier();
1770 case TaxationPackage.TAX_CARD__TAX_CARD_TYPE:
1771 return getTax_card_type();
1772 case TaxationPackage.TAX_CARD__TAX_OFFICE:
1773 return getTax_office();
1774 case TaxationPackage.TAX_CARD__VALID_FROM_DATE:
1775 return getValid_from_date();
1776 case TaxationPackage.TAX_CARD__VALID_UNTIL_DATE:
1777 return getValid_until_date();
1778 case TaxationPackage.TAX_CARD__PERCENTAGE_OF_WITHOLDING:
1779 return getPercentage_of_witholding();
1780 case TaxationPackage.TAX_CARD__TAX_PAYERS_NAME_SURNAME:
1781 return getTax_payers_name_surname();
1782 case TaxationPackage.TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME:
1783 return getTax_payers_partner_name_surname();
1784 case TaxationPackage.TAX_CARD__TAX_PAYERS_ADDRESS:
1785 if (resolve) return getTax_payers_address();
1786 return basicGetTax_payers_address();
1787 case TaxationPackage.TAX_CARD__JOBS_EMPLOYER_SS_NO:
1788 return getJobs_Employer_SSNo();
1789 case TaxationPackage.TAX_CARD__JOBS_EMPLOYERS_NAME:
1790 return getJobs_employers_name();
1791 case TaxationPackage.TAX_CARD__JOBS_ACTIVITY_TYPE:
1792 return getJobs_activity_type();
1793 case TaxationPackage.TAX_CARD__JOBS_PLACE_OF_WORK:
1794 return getJobs_place_of_work();
1795 case TaxationPackage.TAX_CARD__DEDUCTION_FD_DAILY:
1796 return getDeduction_FD_daily();
1797 case TaxationPackage.TAX_CARD__DEDUCTION_FD_MONTHLY:
1798 return getDeduction_FD_monthly();
1799 case TaxationPackage.TAX_CARD__DEDUCTION_AC_DAILY:
1800 return getDeduction_AC_daily();
1801 case TaxationPackage.TAX_CARD__DEDUCTION_AC_MONTHLY:
1802 return getDeduction_AC_monthly();
1803 case TaxationPackage.TAX_CARD__DEDUCTION_AC_YEARLY:
1804 return getDeduction_AC_yearly();
1805 case TaxationPackage.TAX_CARD__DEDUCTION_CE_DAILY:
1806 return getDeduction_CE_daily();
1807 case TaxationPackage.TAX_CARD__DEDUCTION_CE_MONTHLY:
1808 return getDeduction_CE_monthly();
1809 case TaxationPackage.TAX_CARD__DEDUCTION_CE_YEARLY:
1810 return getDeduction_CE_yearly();
1811 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DAILY:
1812 return getDeduction_DS_daily();
1813 case TaxationPackage.TAX_CARD__DEDUCTION_DS_MONTHLY:
1814 return getDeduction_DS_monthly();
1815 case TaxationPackage.TAX_CARD__DEDUCTION_FO_DAILY:
1816 return getDeduction_FO_daily();
1817 case TaxationPackage.TAX_CARD__DEDUCTION_FO_MONTHLY:
1818 return getDeduction_FO_monthly();
1819 case TaxationPackage.TAX_CARD__DEDUCTION_FO_YEARLY:
1820 return getDeduction_FO_yearly();
1821 case TaxationPackage.TAX_CARD__CREDIT_CIS_DAILY:
1822 return getCredit_CIS_daily();
1823 case TaxationPackage.TAX_CARD__CREDIT_CIS_MONTHLY:
1824 return getCredit_CIS_monthly();
1825 case TaxationPackage.TAX_CARD__CREDIT_CIM_DAILY:
1826 return getCredit_CIM_daily();
1827 case TaxationPackage.TAX_CARD__VALIDITY:
1828 return isValidity();
1829 case TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT:
1830 return getIncome_Tax_Credit();
1831 case TaxationPackage.TAX_CARD__PREVIOUS:
1832 if (resolve) return getPrevious();
1833 return basicGetPrevious();
1834 case TaxationPackage.TAX_CARD__CURRENT_TAX_CARD:
1835 if (resolve) return getCurrent_tax_card();
1836 return basicGetCurrent_tax_card();
1837 case TaxationPackage.TAX_CARD__CREDIT_CIM_YEARLY:
1838 return getCredit_CIM_yearly();
1839 case TaxationPackage.TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY:
1840 return getDeduction_DS_Alimony_yearly();
1841 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DEBT_YEARLY:
1842 return getDeduction_DS_Debt_yearly();
1843 case TaxationPackage.TAX_CARD__INCOME:
1844 return getIncome();
1845 }
1846 return super.eGet(featureID, resolve, coreType);
1847 }
1848
1849 /**
1850 * <!-- begin-user-doc -->
1851 * <!-- end-user-doc -->
1852 * @generated
1853 */
1854 @SuppressWarnings("unchecked")
1855 @Override
1856 public void eSet(int featureID, Object newValue) {
1857 switch (featureID) {
1858 case TaxationPackage.TAX_CARD__CARD_IDENTIFIER:
1859 setCard_identifier((String)newValue);
1860 return;
1861 case TaxationPackage.TAX_CARD__TAX_CARD_TYPE:
1862 setTax_card_type((Tax_Card_Type)newValue);
1863 return;
1864 case TaxationPackage.TAX_CARD__TAX_OFFICE:
1865 setTax_office((Tax_Office)newValue);
1866 return;
1867 case TaxationPackage.TAX_CARD__VALID_FROM_DATE:
1868 setValid_from_date((Date)newValue);
1869 return;
1870 case TaxationPackage.TAX_CARD__VALID_UNTIL_DATE:
1871 setValid_until_date((Date)newValue);
1872 return;
1873 case TaxationPackage.TAX_CARD__PERCENTAGE_OF_WITHOLDING:
1874 setPercentage_of_witholding((Double)newValue);
1875 return;
1876 case TaxationPackage.TAX_CARD__TAX_PAYERS_NAME_SURNAME:
1877 getTax_payers_name_surname().clear();
1878 getTax_payers_name_surname().addAll((Collection<? extends String>)newValue);
1879 return;
1880 case TaxationPackage.TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME:
1881 getTax_payers_partner_name_surname().clear();
1882 getTax_payers_partner_name_surname().addAll((Collection<? extends String>)newValue);
1883 return;
1884 case TaxationPackage.TAX_CARD__TAX_PAYERS_ADDRESS:
1885 setTax_payers_address((Address)newValue);
1886 return;
1887 case TaxationPackage.TAX_CARD__JOBS_EMPLOYER_SS_NO:
1888 setJobs_Employer_SSNo((String)newValue);
1889 return;
1890 case TaxationPackage.TAX_CARD__JOBS_EMPLOYERS_NAME:
1891 setJobs_employers_name((String)newValue);
1892 return;
1893 case TaxationPackage.TAX_CARD__JOBS_ACTIVITY_TYPE:
1894 setJobs_activity_type((Job_Activity)newValue);
1895 return;
1896 case TaxationPackage.TAX_CARD__JOBS_PLACE_OF_WORK:
1897 setJobs_place_of_work((Town)newValue);
1898 return;
1899 case TaxationPackage.TAX_CARD__DEDUCTION_FD_DAILY:
1900 setDeduction_FD_daily((Double)newValue);
1901 return;
1902 case TaxationPackage.TAX_CARD__DEDUCTION_FD_MONTHLY:
1903 setDeduction_FD_monthly((Double)newValue);
1904 return;
1905 case TaxationPackage.TAX_CARD__DEDUCTION_AC_DAILY:
1906 setDeduction_AC_daily((Double)newValue);
1907 return;
1908 case TaxationPackage.TAX_CARD__DEDUCTION_AC_MONTHLY:
1909 setDeduction_AC_monthly((Double)newValue);
1910 return;
1911 case TaxationPackage.TAX_CARD__DEDUCTION_AC_YEARLY:
1912 setDeduction_AC_yearly((Double)newValue);
1913 return;
1914 case TaxationPackage.TAX_CARD__DEDUCTION_CE_DAILY:
1915 setDeduction_CE_daily((Double)newValue);
1916 return;
1917 case TaxationPackage.TAX_CARD__DEDUCTION_CE_MONTHLY:
1918 setDeduction_CE_monthly((Double)newValue);
1919 return;
1920 case TaxationPackage.TAX_CARD__DEDUCTION_CE_YEARLY:
1921 setDeduction_CE_yearly((Double)newValue);
1922 return;
1923 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DAILY:
1924 setDeduction_DS_daily((Double)newValue);
1925 return;
1926 case TaxationPackage.TAX_CARD__DEDUCTION_DS_MONTHLY:
1927 setDeduction_DS_monthly((Double)newValue);
1928 return;
1929 case TaxationPackage.TAX_CARD__DEDUCTION_FO_DAILY:
1930 setDeduction_FO_daily((Double)newValue);
1931 return;
1932 case TaxationPackage.TAX_CARD__DEDUCTION_FO_MONTHLY:
1933 setDeduction_FO_monthly((Double)newValue);
1934 return;
1935 case TaxationPackage.TAX_CARD__DEDUCTION_FO_YEARLY:
1936 setDeduction_FO_yearly((Double)newValue);
1937 return;
1938 case TaxationPackage.TAX_CARD__CREDIT_CIS_DAILY:
1939 setCredit_CIS_daily((Double)newValue);
1940 return;
1941 case TaxationPackage.TAX_CARD__CREDIT_CIS_MONTHLY:
1942 setCredit_CIS_monthly((Double)newValue);
1943 return;
1944 case TaxationPackage.TAX_CARD__CREDIT_CIM_DAILY:
1945 setCredit_CIM_daily((Double)newValue);
1946 return;
1947 case TaxationPackage.TAX_CARD__VALIDITY:
1948 setValidity((Boolean)newValue);
1949 return;
1950 case TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT:
1951 getIncome_Tax_Credit().clear();
1952 getIncome_Tax_Credit().addAll((Collection<? extends Income_Tax_Credit>)newValue);
1953 return;
1954 case TaxationPackage.TAX_CARD__PREVIOUS:
1955 setPrevious((Tax_Card)newValue);
1956 return;
1957 case TaxationPackage.TAX_CARD__CURRENT_TAX_CARD:
1958 setCurrent_tax_card((Tax_Card)newValue);
1959 return;
1960 case TaxationPackage.TAX_CARD__CREDIT_CIM_YEARLY:
1961 setCredit_CIM_yearly((Double)newValue);
1962 return;
1963 case TaxationPackage.TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY:
1964 setDeduction_DS_Alimony_yearly((Double)newValue);
1965 return;
1966 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DEBT_YEARLY:
1967 setDeduction_DS_Debt_yearly((Double)newValue);
1968 return;
1969 case TaxationPackage.TAX_CARD__INCOME:
1970 setIncome((Income)newValue);
1971 return;
1972 }
1973 super.eSet(featureID, newValue);
1974 }
1975
1976 /**
1977 * <!-- begin-user-doc -->
1978 * <!-- end-user-doc -->
1979 * @generated
1980 */
1981 @Override
1982 public void eUnset(int featureID) {
1983 switch (featureID) {
1984 case TaxationPackage.TAX_CARD__CARD_IDENTIFIER:
1985 setCard_identifier(CARD_IDENTIFIER_EDEFAULT);
1986 return;
1987 case TaxationPackage.TAX_CARD__TAX_CARD_TYPE:
1988 setTax_card_type(TAX_CARD_TYPE_EDEFAULT);
1989 return;
1990 case TaxationPackage.TAX_CARD__TAX_OFFICE:
1991 setTax_office(TAX_OFFICE_EDEFAULT);
1992 return;
1993 case TaxationPackage.TAX_CARD__VALID_FROM_DATE:
1994 setValid_from_date(VALID_FROM_DATE_EDEFAULT);
1995 return;
1996 case TaxationPackage.TAX_CARD__VALID_UNTIL_DATE:
1997 setValid_until_date(VALID_UNTIL_DATE_EDEFAULT);
1998 return;
1999 case TaxationPackage.TAX_CARD__PERCENTAGE_OF_WITHOLDING:
2000 setPercentage_of_witholding(PERCENTAGE_OF_WITHOLDING_EDEFAULT);
2001 return;
2002 case TaxationPackage.TAX_CARD__TAX_PAYERS_NAME_SURNAME:
2003 getTax_payers_name_surname().clear();
2004 return;
2005 case TaxationPackage.TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME:
2006 getTax_payers_partner_name_surname().clear();
2007 return;
2008 case TaxationPackage.TAX_CARD__TAX_PAYERS_ADDRESS:
2009 setTax_payers_address((Address)null);
2010 return;
2011 case TaxationPackage.TAX_CARD__JOBS_EMPLOYER_SS_NO:
2012 setJobs_Employer_SSNo(JOBS_EMPLOYER_SS_NO_EDEFAULT);
2013 return;
2014 case TaxationPackage.TAX_CARD__JOBS_EMPLOYERS_NAME:
2015 setJobs_employers_name(JOBS_EMPLOYERS_NAME_EDEFAULT);
2016 return;
2017 case TaxationPackage.TAX_CARD__JOBS_ACTIVITY_TYPE:
2018 setJobs_activity_type(JOBS_ACTIVITY_TYPE_EDEFAULT);
2019 return;
2020 case TaxationPackage.TAX_CARD__JOBS_PLACE_OF_WORK:
2021 setJobs_place_of_work(JOBS_PLACE_OF_WORK_EDEFAULT);
2022 return;
2023 case TaxationPackage.TAX_CARD__DEDUCTION_FD_DAILY:
2024 setDeduction_FD_daily(DEDUCTION_FD_DAILY_EDEFAULT);
2025 return;
2026 case TaxationPackage.TAX_CARD__DEDUCTION_FD_MONTHLY:
2027 setDeduction_FD_monthly(DEDUCTION_FD_MONTHLY_EDEFAULT);
2028 return;
2029 case TaxationPackage.TAX_CARD__DEDUCTION_AC_DAILY:
2030 setDeduction_AC_daily(DEDUCTION_AC_DAILY_EDEFAULT);
2031 return;
2032 case TaxationPackage.TAX_CARD__DEDUCTION_AC_MONTHLY:
2033 setDeduction_AC_monthly(DEDUCTION_AC_MONTHLY_EDEFAULT);
2034 return;
2035 case TaxationPackage.TAX_CARD__DEDUCTION_AC_YEARLY:
2036 setDeduction_AC_yearly(DEDUCTION_AC_YEARLY_EDEFAULT);
2037 return;
2038 case TaxationPackage.TAX_CARD__DEDUCTION_CE_DAILY:
2039 setDeduction_CE_daily(DEDUCTION_CE_DAILY_EDEFAULT);
2040 return;
2041 case TaxationPackage.TAX_CARD__DEDUCTION_CE_MONTHLY:
2042 setDeduction_CE_monthly(DEDUCTION_CE_MONTHLY_EDEFAULT);
2043 return;
2044 case TaxationPackage.TAX_CARD__DEDUCTION_CE_YEARLY:
2045 setDeduction_CE_yearly(DEDUCTION_CE_YEARLY_EDEFAULT);
2046 return;
2047 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DAILY:
2048 setDeduction_DS_daily(DEDUCTION_DS_DAILY_EDEFAULT);
2049 return;
2050 case TaxationPackage.TAX_CARD__DEDUCTION_DS_MONTHLY:
2051 setDeduction_DS_monthly(DEDUCTION_DS_MONTHLY_EDEFAULT);
2052 return;
2053 case TaxationPackage.TAX_CARD__DEDUCTION_FO_DAILY:
2054 setDeduction_FO_daily(DEDUCTION_FO_DAILY_EDEFAULT);
2055 return;
2056 case TaxationPackage.TAX_CARD__DEDUCTION_FO_MONTHLY:
2057 setDeduction_FO_monthly(DEDUCTION_FO_MONTHLY_EDEFAULT);
2058 return;
2059 case TaxationPackage.TAX_CARD__DEDUCTION_FO_YEARLY:
2060 setDeduction_FO_yearly(DEDUCTION_FO_YEARLY_EDEFAULT);
2061 return;
2062 case TaxationPackage.TAX_CARD__CREDIT_CIS_DAILY:
2063 setCredit_CIS_daily(CREDIT_CIS_DAILY_EDEFAULT);
2064 return;
2065 case TaxationPackage.TAX_CARD__CREDIT_CIS_MONTHLY:
2066 setCredit_CIS_monthly(CREDIT_CIS_MONTHLY_EDEFAULT);
2067 return;
2068 case TaxationPackage.TAX_CARD__CREDIT_CIM_DAILY:
2069 setCredit_CIM_daily(CREDIT_CIM_DAILY_EDEFAULT);
2070 return;
2071 case TaxationPackage.TAX_CARD__VALIDITY:
2072 setValidity(VALIDITY_EDEFAULT);
2073 return;
2074 case TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT:
2075 getIncome_Tax_Credit().clear();
2076 return;
2077 case TaxationPackage.TAX_CARD__PREVIOUS:
2078 setPrevious((Tax_Card)null);
2079 return;
2080 case TaxationPackage.TAX_CARD__CURRENT_TAX_CARD:
2081 setCurrent_tax_card((Tax_Card)null);
2082 return;
2083 case TaxationPackage.TAX_CARD__CREDIT_CIM_YEARLY:
2084 setCredit_CIM_yearly(CREDIT_CIM_YEARLY_EDEFAULT);
2085 return;
2086 case TaxationPackage.TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY:
2087 setDeduction_DS_Alimony_yearly(DEDUCTION_DS_ALIMONY_YEARLY_EDEFAULT);
2088 return;
2089 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DEBT_YEARLY:
2090 setDeduction_DS_Debt_yearly(DEDUCTION_DS_DEBT_YEARLY_EDEFAULT);
2091 return;
2092 case TaxationPackage.TAX_CARD__INCOME:
2093 setIncome((Income)null);
2094 return;
2095 }
2096 super.eUnset(featureID);
2097 }
2098
2099 /**
2100 * <!-- begin-user-doc -->
2101 * <!-- end-user-doc -->
2102 * @generated
2103 */
2104 @Override
2105 public boolean eIsSet(int featureID) {
2106 switch (featureID) {
2107 case TaxationPackage.TAX_CARD__CARD_IDENTIFIER:
2108 return CARD_IDENTIFIER_EDEFAULT == null ? card_identifier != null : !CARD_IDENTIFIER_EDEFAULT.equals(card_identifier);
2109 case TaxationPackage.TAX_CARD__TAX_CARD_TYPE:
2110 return tax_card_type != TAX_CARD_TYPE_EDEFAULT;
2111 case TaxationPackage.TAX_CARD__TAX_OFFICE:
2112 return tax_office != TAX_OFFICE_EDEFAULT;
2113 case TaxationPackage.TAX_CARD__VALID_FROM_DATE:
2114 return VALID_FROM_DATE_EDEFAULT == null ? valid_from_date != null : !VALID_FROM_DATE_EDEFAULT.equals(valid_from_date);
2115 case TaxationPackage.TAX_CARD__VALID_UNTIL_DATE:
2116 return VALID_UNTIL_DATE_EDEFAULT == null ? valid_until_date != null : !VALID_UNTIL_DATE_EDEFAULT.equals(valid_until_date);
2117 case TaxationPackage.TAX_CARD__PERCENTAGE_OF_WITHOLDING:
2118 return percentage_of_witholding != PERCENTAGE_OF_WITHOLDING_EDEFAULT;
2119 case TaxationPackage.TAX_CARD__TAX_PAYERS_NAME_SURNAME:
2120 return tax_payers_name_surname != null && !tax_payers_name_surname.isEmpty();
2121 case TaxationPackage.TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME:
2122 return tax_payers_partner_name_surname != null && !tax_payers_partner_name_surname.isEmpty();
2123 case TaxationPackage.TAX_CARD__TAX_PAYERS_ADDRESS:
2124 return tax_payers_address != null;
2125 case TaxationPackage.TAX_CARD__JOBS_EMPLOYER_SS_NO:
2126 return JOBS_EMPLOYER_SS_NO_EDEFAULT == null ? jobs_Employer_SSNo != null : !JOBS_EMPLOYER_SS_NO_EDEFAULT.equals(jobs_Employer_SSNo);
2127 case TaxationPackage.TAX_CARD__JOBS_EMPLOYERS_NAME:
2128 return JOBS_EMPLOYERS_NAME_EDEFAULT == null ? jobs_employers_name != null : !JOBS_EMPLOYERS_NAME_EDEFAULT.equals(jobs_employers_name);
2129 case TaxationPackage.TAX_CARD__JOBS_ACTIVITY_TYPE:
2130 return jobs_activity_type != JOBS_ACTIVITY_TYPE_EDEFAULT;
2131 case TaxationPackage.TAX_CARD__JOBS_PLACE_OF_WORK:
2132 return jobs_place_of_work != JOBS_PLACE_OF_WORK_EDEFAULT;
2133 case TaxationPackage.TAX_CARD__DEDUCTION_FD_DAILY:
2134 return deduction_FD_daily != DEDUCTION_FD_DAILY_EDEFAULT;
2135 case TaxationPackage.TAX_CARD__DEDUCTION_FD_MONTHLY:
2136 return deduction_FD_monthly != DEDUCTION_FD_MONTHLY_EDEFAULT;
2137 case TaxationPackage.TAX_CARD__DEDUCTION_AC_DAILY:
2138 return deduction_AC_daily != DEDUCTION_AC_DAILY_EDEFAULT;
2139 case TaxationPackage.TAX_CARD__DEDUCTION_AC_MONTHLY:
2140 return deduction_AC_monthly != DEDUCTION_AC_MONTHLY_EDEFAULT;
2141 case TaxationPackage.TAX_CARD__DEDUCTION_AC_YEARLY:
2142 return deduction_AC_yearly != DEDUCTION_AC_YEARLY_EDEFAULT;
2143 case TaxationPackage.TAX_CARD__DEDUCTION_CE_DAILY:
2144 return deduction_CE_daily != DEDUCTION_CE_DAILY_EDEFAULT;
2145 case TaxationPackage.TAX_CARD__DEDUCTION_CE_MONTHLY:
2146 return deduction_CE_monthly != DEDUCTION_CE_MONTHLY_EDEFAULT;
2147 case TaxationPackage.TAX_CARD__DEDUCTION_CE_YEARLY:
2148 return deduction_CE_yearly != DEDUCTION_CE_YEARLY_EDEFAULT;
2149 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DAILY:
2150 return deduction_DS_daily != DEDUCTION_DS_DAILY_EDEFAULT;
2151 case TaxationPackage.TAX_CARD__DEDUCTION_DS_MONTHLY:
2152 return deduction_DS_monthly != DEDUCTION_DS_MONTHLY_EDEFAULT;
2153 case TaxationPackage.TAX_CARD__DEDUCTION_FO_DAILY:
2154 return deduction_FO_daily != DEDUCTION_FO_DAILY_EDEFAULT;
2155 case TaxationPackage.TAX_CARD__DEDUCTION_FO_MONTHLY:
2156 return deduction_FO_monthly != DEDUCTION_FO_MONTHLY_EDEFAULT;
2157 case TaxationPackage.TAX_CARD__DEDUCTION_FO_YEARLY:
2158 return deduction_FO_yearly != DEDUCTION_FO_YEARLY_EDEFAULT;
2159 case TaxationPackage.TAX_CARD__CREDIT_CIS_DAILY:
2160 return credit_CIS_daily != CREDIT_CIS_DAILY_EDEFAULT;
2161 case TaxationPackage.TAX_CARD__CREDIT_CIS_MONTHLY:
2162 return credit_CIS_monthly != CREDIT_CIS_MONTHLY_EDEFAULT;
2163 case TaxationPackage.TAX_CARD__CREDIT_CIM_DAILY:
2164 return credit_CIM_daily != CREDIT_CIM_DAILY_EDEFAULT;
2165 case TaxationPackage.TAX_CARD__VALIDITY:
2166 return validity != VALIDITY_EDEFAULT;
2167 case TaxationPackage.TAX_CARD__INCOME_TAX_CREDIT:
2168 return income_Tax_Credit != null && !income_Tax_Credit.isEmpty();
2169 case TaxationPackage.TAX_CARD__PREVIOUS:
2170 return previous != null;
2171 case TaxationPackage.TAX_CARD__CURRENT_TAX_CARD:
2172 return current_tax_card != null;
2173 case TaxationPackage.TAX_CARD__CREDIT_CIM_YEARLY:
2174 return credit_CIM_yearly != CREDIT_CIM_YEARLY_EDEFAULT;
2175 case TaxationPackage.TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY:
2176 return deduction_DS_Alimony_yearly != DEDUCTION_DS_ALIMONY_YEARLY_EDEFAULT;
2177 case TaxationPackage.TAX_CARD__DEDUCTION_DS_DEBT_YEARLY:
2178 return deduction_DS_Debt_yearly != DEDUCTION_DS_DEBT_YEARLY_EDEFAULT;
2179 case TaxationPackage.TAX_CARD__INCOME:
2180 return getIncome() != null;
2181 }
2182 return super.eIsSet(featureID);
2183 }
2184
2185 /**
2186 * <!-- begin-user-doc -->
2187 * <!-- end-user-doc -->
2188 * @generated
2189 */
2190 @Override
2191 public String toString() {
2192 if (eIsProxy()) return super.toString();
2193
2194 StringBuilder result = new StringBuilder(super.toString());
2195 result.append(" (card_identifier: ");
2196 result.append(card_identifier);
2197 result.append(", tax_card_type: ");
2198 result.append(tax_card_type);
2199 result.append(", tax_office: ");
2200 result.append(tax_office);
2201 result.append(", valid_from_date: ");
2202 result.append(valid_from_date);
2203 result.append(", valid_until_date: ");
2204 result.append(valid_until_date);
2205 result.append(", percentage_of_witholding: ");
2206 result.append(percentage_of_witholding);
2207 result.append(", tax_payers_name_surname: ");
2208 result.append(tax_payers_name_surname);
2209 result.append(", tax_payers_partner_name_surname: ");
2210 result.append(tax_payers_partner_name_surname);
2211 result.append(", jobs_Employer_SSNo: ");
2212 result.append(jobs_Employer_SSNo);
2213 result.append(", jobs_employers_name: ");
2214 result.append(jobs_employers_name);
2215 result.append(", jobs_activity_type: ");
2216 result.append(jobs_activity_type);
2217 result.append(", jobs_place_of_work: ");
2218 result.append(jobs_place_of_work);
2219 result.append(", deduction_FD_daily: ");
2220 result.append(deduction_FD_daily);
2221 result.append(", deduction_FD_monthly: ");
2222 result.append(deduction_FD_monthly);
2223 result.append(", deduction_AC_daily: ");
2224 result.append(deduction_AC_daily);
2225 result.append(", deduction_AC_monthly: ");
2226 result.append(deduction_AC_monthly);
2227 result.append(", deduction_AC_yearly: ");
2228 result.append(deduction_AC_yearly);
2229 result.append(", deduction_CE_daily: ");
2230 result.append(deduction_CE_daily);
2231 result.append(", deduction_CE_monthly: ");
2232 result.append(deduction_CE_monthly);
2233 result.append(", deduction_CE_yearly: ");
2234 result.append(deduction_CE_yearly);
2235 result.append(", deduction_DS_daily: ");
2236 result.append(deduction_DS_daily);
2237 result.append(", deduction_DS_monthly: ");
2238 result.append(deduction_DS_monthly);
2239 result.append(", deduction_FO_daily: ");
2240 result.append(deduction_FO_daily);
2241 result.append(", deduction_FO_monthly: ");
2242 result.append(deduction_FO_monthly);
2243 result.append(", deduction_FO_yearly: ");
2244 result.append(deduction_FO_yearly);
2245 result.append(", credit_CIS_daily: ");
2246 result.append(credit_CIS_daily);
2247 result.append(", credit_CIS_monthly: ");
2248 result.append(credit_CIS_monthly);
2249 result.append(", credit_CIM_daily: ");
2250 result.append(credit_CIM_daily);
2251 result.append(", validity: ");
2252 result.append(validity);
2253 result.append(", credit_CIM_yearly: ");
2254 result.append(credit_CIM_yearly);
2255 result.append(", deduction_DS_Alimony_yearly: ");
2256 result.append(deduction_DS_Alimony_yearly);
2257 result.append(", deduction_DS_Debt_yearly: ");
2258 result.append(deduction_DS_Debt_yearly);
2259 result.append(')');
2260 return result.toString();
2261 }
2262
2263} //Tax_CardImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PayerImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PayerImpl.java
new file mode 100644
index 00000000..7e382d7f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PayerImpl.java
@@ -0,0 +1,425 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Dependent;
6import Taxation.FromAgent;
7import Taxation.FromLaw;
8import Taxation.Income;
9import Taxation.Tax_Payer;
10import Taxation.TaxationPackage;
11
12import java.util.Collection;
13
14import org.eclipse.emf.common.notify.Notification;
15import org.eclipse.emf.common.notify.NotificationChain;
16
17import org.eclipse.emf.common.util.EList;
18
19import org.eclipse.emf.ecore.EClass;
20import org.eclipse.emf.ecore.InternalEObject;
21
22import org.eclipse.emf.ecore.impl.ENotificationImpl;
23
24import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
25import org.eclipse.emf.ecore.util.InternalEList;
26
27/**
28 * <!-- begin-user-doc -->
29 * An implementation of the model object '<em><b>Tax Payer</b></em>'.
30 * <!-- end-user-doc -->
31 * <p>
32 * The following features are implemented:
33 * </p>
34 * <ul>
35 * <li>{@link Taxation.impl.Tax_PayerImpl#getDependents <em>Dependents</em>}</li>
36 * <li>{@link Taxation.impl.Tax_PayerImpl#getFrom_agent <em>From agent</em>}</li>
37 * <li>{@link Taxation.impl.Tax_PayerImpl#getIncomes <em>Incomes</em>}</li>
38 * <li>{@link Taxation.impl.Tax_PayerImpl#getFrom_law <em>From law</em>}</li>
39 * <li>{@link Taxation.impl.Tax_PayerImpl#getTaxesDue <em>Taxes Due</em>}</li>
40 * </ul>
41 *
42 * @generated
43 */
44public abstract class Tax_PayerImpl extends Physical_PersonImpl implements Tax_Payer {
45 /**
46 * The cached value of the '{@link #getDependents() <em>Dependents</em>}' containment reference list.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @see #getDependents()
50 * @generated
51 * @ordered
52 */
53 protected EList<Dependent> dependents;
54
55 /**
56 * The cached value of the '{@link #getFrom_agent() <em>From agent</em>}' containment reference.
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @see #getFrom_agent()
60 * @generated
61 * @ordered
62 */
63 protected FromAgent from_agent;
64
65 /**
66 * The cached value of the '{@link #getIncomes() <em>Incomes</em>}' containment reference list.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @see #getIncomes()
70 * @generated
71 * @ordered
72 */
73 protected EList<Income> incomes;
74
75 /**
76 * The cached value of the '{@link #getFrom_law() <em>From law</em>}' containment reference.
77 * <!-- begin-user-doc -->
78 * <!-- end-user-doc -->
79 * @see #getFrom_law()
80 * @generated
81 * @ordered
82 */
83 protected FromLaw from_law;
84
85 /**
86 * The default value of the '{@link #getTaxesDue() <em>Taxes Due</em>}' attribute.
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @see #getTaxesDue()
90 * @generated
91 * @ordered
92 */
93 protected static final double TAXES_DUE_EDEFAULT = 0.0;
94
95 /**
96 * The cached value of the '{@link #getTaxesDue() <em>Taxes Due</em>}' attribute.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @see #getTaxesDue()
100 * @generated
101 * @ordered
102 */
103 protected double taxesDue = TAXES_DUE_EDEFAULT;
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 protected Tax_PayerImpl() {
111 super();
112 }
113
114 /**
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @generated
118 */
119 @Override
120 protected EClass eStaticClass() {
121 return TaxationPackage.Literals.TAX_PAYER;
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 @Override
130 public EList<Dependent> getDependents() {
131 if (dependents == null) {
132 dependents = new EObjectContainmentWithInverseEList<Dependent>(Dependent.class, this, TaxationPackage.TAX_PAYER__DEPENDENTS, TaxationPackage.DEPENDENT__RESPONSIBLE_PERSON);
133 }
134 return dependents;
135 }
136
137 /**
138 * <!-- begin-user-doc -->
139 * <!-- end-user-doc -->
140 * @generated
141 */
142 @Override
143 public FromAgent getFrom_agent() {
144 return from_agent;
145 }
146
147 /**
148 * <!-- begin-user-doc -->
149 * <!-- end-user-doc -->
150 * @generated
151 */
152 public NotificationChain basicSetFrom_agent(FromAgent newFrom_agent, NotificationChain msgs) {
153 FromAgent oldFrom_agent = from_agent;
154 from_agent = newFrom_agent;
155 if (eNotificationRequired()) {
156 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PAYER__FROM_AGENT, oldFrom_agent, newFrom_agent);
157 if (msgs == null) msgs = notification; else msgs.add(notification);
158 }
159 return msgs;
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public void setFrom_agent(FromAgent newFrom_agent) {
169 if (newFrom_agent != from_agent) {
170 NotificationChain msgs = null;
171 if (from_agent != null)
172 msgs = ((InternalEObject)from_agent).eInverseRemove(this, TaxationPackage.FROM_AGENT__TAX_PAYER, FromAgent.class, msgs);
173 if (newFrom_agent != null)
174 msgs = ((InternalEObject)newFrom_agent).eInverseAdd(this, TaxationPackage.FROM_AGENT__TAX_PAYER, FromAgent.class, msgs);
175 msgs = basicSetFrom_agent(newFrom_agent, msgs);
176 if (msgs != null) msgs.dispatch();
177 }
178 else if (eNotificationRequired())
179 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PAYER__FROM_AGENT, newFrom_agent, newFrom_agent));
180 }
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 @Override
188 public EList<Income> getIncomes() {
189 if (incomes == null) {
190 incomes = new EObjectContainmentWithInverseEList<Income>(Income.class, this, TaxationPackage.TAX_PAYER__INCOMES, TaxationPackage.INCOME__TAX_PAYER);
191 }
192 return incomes;
193 }
194
195 /**
196 * <!-- begin-user-doc -->
197 * <!-- end-user-doc -->
198 * @generated
199 */
200 @Override
201 public FromLaw getFrom_law() {
202 return from_law;
203 }
204
205 /**
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @generated
209 */
210 public NotificationChain basicSetFrom_law(FromLaw newFrom_law, NotificationChain msgs) {
211 FromLaw oldFrom_law = from_law;
212 from_law = newFrom_law;
213 if (eNotificationRequired()) {
214 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PAYER__FROM_LAW, oldFrom_law, newFrom_law);
215 if (msgs == null) msgs = notification; else msgs.add(notification);
216 }
217 return msgs;
218 }
219
220 /**
221 * <!-- begin-user-doc -->
222 * <!-- end-user-doc -->
223 * @generated
224 */
225 @Override
226 public void setFrom_law(FromLaw newFrom_law) {
227 if (newFrom_law != from_law) {
228 NotificationChain msgs = null;
229 if (from_law != null)
230 msgs = ((InternalEObject)from_law).eInverseRemove(this, TaxationPackage.FROM_LAW__TAX_PAYER, FromLaw.class, msgs);
231 if (newFrom_law != null)
232 msgs = ((InternalEObject)newFrom_law).eInverseAdd(this, TaxationPackage.FROM_LAW__TAX_PAYER, FromLaw.class, msgs);
233 msgs = basicSetFrom_law(newFrom_law, msgs);
234 if (msgs != null) msgs.dispatch();
235 }
236 else if (eNotificationRequired())
237 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PAYER__FROM_LAW, newFrom_law, newFrom_law));
238 }
239
240 /**
241 * <!-- begin-user-doc -->
242 * <!-- end-user-doc -->
243 * @generated
244 */
245 @Override
246 public double getTaxesDue() {
247 return taxesDue;
248 }
249
250 /**
251 * <!-- begin-user-doc -->
252 * <!-- end-user-doc -->
253 * @generated
254 */
255 @Override
256 public void setTaxesDue(double newTaxesDue) {
257 double oldTaxesDue = taxesDue;
258 taxesDue = newTaxesDue;
259 if (eNotificationRequired())
260 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PAYER__TAXES_DUE, oldTaxesDue, taxesDue));
261 }
262
263 /**
264 * <!-- begin-user-doc -->
265 * <!-- end-user-doc -->
266 * @generated
267 */
268 @SuppressWarnings("unchecked")
269 @Override
270 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
271 switch (featureID) {
272 case TaxationPackage.TAX_PAYER__DEPENDENTS:
273 return ((InternalEList<InternalEObject>)(InternalEList<?>)getDependents()).basicAdd(otherEnd, msgs);
274 case TaxationPackage.TAX_PAYER__FROM_AGENT:
275 if (from_agent != null)
276 msgs = ((InternalEObject)from_agent).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.TAX_PAYER__FROM_AGENT, null, msgs);
277 return basicSetFrom_agent((FromAgent)otherEnd, msgs);
278 case TaxationPackage.TAX_PAYER__INCOMES:
279 return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncomes()).basicAdd(otherEnd, msgs);
280 case TaxationPackage.TAX_PAYER__FROM_LAW:
281 if (from_law != null)
282 msgs = ((InternalEObject)from_law).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - TaxationPackage.TAX_PAYER__FROM_LAW, null, msgs);
283 return basicSetFrom_law((FromLaw)otherEnd, msgs);
284 }
285 return super.eInverseAdd(otherEnd, featureID, msgs);
286 }
287
288 /**
289 * <!-- begin-user-doc -->
290 * <!-- end-user-doc -->
291 * @generated
292 */
293 @Override
294 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
295 switch (featureID) {
296 case TaxationPackage.TAX_PAYER__DEPENDENTS:
297 return ((InternalEList<?>)getDependents()).basicRemove(otherEnd, msgs);
298 case TaxationPackage.TAX_PAYER__FROM_AGENT:
299 return basicSetFrom_agent(null, msgs);
300 case TaxationPackage.TAX_PAYER__INCOMES:
301 return ((InternalEList<?>)getIncomes()).basicRemove(otherEnd, msgs);
302 case TaxationPackage.TAX_PAYER__FROM_LAW:
303 return basicSetFrom_law(null, msgs);
304 }
305 return super.eInverseRemove(otherEnd, featureID, msgs);
306 }
307
308 /**
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @generated
312 */
313 @Override
314 public Object eGet(int featureID, boolean resolve, boolean coreType) {
315 switch (featureID) {
316 case TaxationPackage.TAX_PAYER__DEPENDENTS:
317 return getDependents();
318 case TaxationPackage.TAX_PAYER__FROM_AGENT:
319 return getFrom_agent();
320 case TaxationPackage.TAX_PAYER__INCOMES:
321 return getIncomes();
322 case TaxationPackage.TAX_PAYER__FROM_LAW:
323 return getFrom_law();
324 case TaxationPackage.TAX_PAYER__TAXES_DUE:
325 return getTaxesDue();
326 }
327 return super.eGet(featureID, resolve, coreType);
328 }
329
330 /**
331 * <!-- begin-user-doc -->
332 * <!-- end-user-doc -->
333 * @generated
334 */
335 @SuppressWarnings("unchecked")
336 @Override
337 public void eSet(int featureID, Object newValue) {
338 switch (featureID) {
339 case TaxationPackage.TAX_PAYER__DEPENDENTS:
340 getDependents().clear();
341 getDependents().addAll((Collection<? extends Dependent>)newValue);
342 return;
343 case TaxationPackage.TAX_PAYER__FROM_AGENT:
344 setFrom_agent((FromAgent)newValue);
345 return;
346 case TaxationPackage.TAX_PAYER__INCOMES:
347 getIncomes().clear();
348 getIncomes().addAll((Collection<? extends Income>)newValue);
349 return;
350 case TaxationPackage.TAX_PAYER__FROM_LAW:
351 setFrom_law((FromLaw)newValue);
352 return;
353 case TaxationPackage.TAX_PAYER__TAXES_DUE:
354 setTaxesDue((Double)newValue);
355 return;
356 }
357 super.eSet(featureID, newValue);
358 }
359
360 /**
361 * <!-- begin-user-doc -->
362 * <!-- end-user-doc -->
363 * @generated
364 */
365 @Override
366 public void eUnset(int featureID) {
367 switch (featureID) {
368 case TaxationPackage.TAX_PAYER__DEPENDENTS:
369 getDependents().clear();
370 return;
371 case TaxationPackage.TAX_PAYER__FROM_AGENT:
372 setFrom_agent((FromAgent)null);
373 return;
374 case TaxationPackage.TAX_PAYER__INCOMES:
375 getIncomes().clear();
376 return;
377 case TaxationPackage.TAX_PAYER__FROM_LAW:
378 setFrom_law((FromLaw)null);
379 return;
380 case TaxationPackage.TAX_PAYER__TAXES_DUE:
381 setTaxesDue(TAXES_DUE_EDEFAULT);
382 return;
383 }
384 super.eUnset(featureID);
385 }
386
387 /**
388 * <!-- begin-user-doc -->
389 * <!-- end-user-doc -->
390 * @generated
391 */
392 @Override
393 public boolean eIsSet(int featureID) {
394 switch (featureID) {
395 case TaxationPackage.TAX_PAYER__DEPENDENTS:
396 return dependents != null && !dependents.isEmpty();
397 case TaxationPackage.TAX_PAYER__FROM_AGENT:
398 return from_agent != null;
399 case TaxationPackage.TAX_PAYER__INCOMES:
400 return incomes != null && !incomes.isEmpty();
401 case TaxationPackage.TAX_PAYER__FROM_LAW:
402 return from_law != null;
403 case TaxationPackage.TAX_PAYER__TAXES_DUE:
404 return taxesDue != TAXES_DUE_EDEFAULT;
405 }
406 return super.eIsSet(featureID);
407 }
408
409 /**
410 * <!-- begin-user-doc -->
411 * <!-- end-user-doc -->
412 * @generated
413 */
414 @Override
415 public String toString() {
416 if (eIsProxy()) return super.toString();
417
418 StringBuilder result = new StringBuilder(super.toString());
419 result.append(" (taxesDue: ");
420 result.append(taxesDue);
421 result.append(')');
422 return result.toString();
423 }
424
425} //Tax_PayerImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PropertyImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PropertyImpl.java
new file mode 100644
index 00000000..e1ed46e4
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Tax_PropertyImpl.java
@@ -0,0 +1,323 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Legal_Union_Record;
6import Taxation.Tax_Property;
7import Taxation.TaxationPackage;
8import org.eclipse.emf.common.notify.Notification;
9import org.eclipse.emf.common.notify.NotificationChain;
10
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17import org.eclipse.emf.ecore.util.EcoreUtil;
18
19/**
20 * <!-- begin-user-doc -->
21 * An implementation of the model object '<em><b>Tax Property</b></em>'.
22 * <!-- end-user-doc -->
23 * <p>
24 * The following features are implemented:
25 * </p>
26 * <ul>
27 * <li>{@link Taxation.impl.Tax_PropertyImpl#getStarting_year <em>Starting year</em>}</li>
28 * <li>{@link Taxation.impl.Tax_PropertyImpl#getId10 <em>Id10</em>}</li>
29 * <li>{@link Taxation.impl.Tax_PropertyImpl#getUnion_record <em>Union record</em>}</li>
30 * </ul>
31 *
32 * @generated
33 */
34public class Tax_PropertyImpl extends MinimalEObjectImpl.Container implements Tax_Property {
35 /**
36 * The default value of the '{@link #getStarting_year() <em>Starting year</em>}' attribute.
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @see #getStarting_year()
40 * @generated
41 * @ordered
42 */
43 protected static final int STARTING_YEAR_EDEFAULT = 0;
44
45 /**
46 * The cached value of the '{@link #getStarting_year() <em>Starting year</em>}' attribute.
47 * <!-- begin-user-doc -->
48 * <!-- end-user-doc -->
49 * @see #getStarting_year()
50 * @generated
51 * @ordered
52 */
53 protected int starting_year = STARTING_YEAR_EDEFAULT;
54
55 /**
56 * The default value of the '{@link #getId10() <em>Id10</em>}' attribute.
57 * <!-- begin-user-doc -->
58 * <!-- end-user-doc -->
59 * @see #getId10()
60 * @generated
61 * @ordered
62 */
63 protected static final String ID10_EDEFAULT = null;
64
65 /**
66 * The cached value of the '{@link #getId10() <em>Id10</em>}' attribute.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @see #getId10()
70 * @generated
71 * @ordered
72 */
73 protected String id10 = ID10_EDEFAULT;
74
75 /**
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @generated
79 */
80 protected Tax_PropertyImpl() {
81 super();
82 }
83
84 /**
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @generated
88 */
89 @Override
90 protected EClass eStaticClass() {
91 return TaxationPackage.Literals.TAX_PROPERTY;
92 }
93
94 /**
95 * <!-- begin-user-doc -->
96 * <!-- end-user-doc -->
97 * @generated
98 */
99 @Override
100 public int getStarting_year() {
101 return starting_year;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 @Override
110 public void setStarting_year(int newStarting_year) {
111 int oldStarting_year = starting_year;
112 starting_year = newStarting_year;
113 if (eNotificationRequired())
114 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PROPERTY__STARTING_YEAR, oldStarting_year, starting_year));
115 }
116
117 /**
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @generated
121 */
122 @Override
123 public String getId10() {
124 return id10;
125 }
126
127 /**
128 * <!-- begin-user-doc -->
129 * <!-- end-user-doc -->
130 * @generated
131 */
132 @Override
133 public void setId10(String newId10) {
134 String oldId10 = id10;
135 id10 = newId10;
136 if (eNotificationRequired())
137 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PROPERTY__ID10, oldId10, id10));
138 }
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 @Override
146 public Legal_Union_Record getUnion_record() {
147 if (eContainerFeatureID() != TaxationPackage.TAX_PROPERTY__UNION_RECORD) return null;
148 return (Legal_Union_Record)eInternalContainer();
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 public NotificationChain basicSetUnion_record(Legal_Union_Record newUnion_record, NotificationChain msgs) {
157 msgs = eBasicSetContainer((InternalEObject)newUnion_record, TaxationPackage.TAX_PROPERTY__UNION_RECORD, msgs);
158 return msgs;
159 }
160
161 /**
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 */
166 @Override
167 public void setUnion_record(Legal_Union_Record newUnion_record) {
168 if (newUnion_record != eInternalContainer() || (eContainerFeatureID() != TaxationPackage.TAX_PROPERTY__UNION_RECORD && newUnion_record != null)) {
169 if (EcoreUtil.isAncestor(this, newUnion_record))
170 throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
171 NotificationChain msgs = null;
172 if (eInternalContainer() != null)
173 msgs = eBasicRemoveFromContainer(msgs);
174 if (newUnion_record != null)
175 msgs = ((InternalEObject)newUnion_record).eInverseAdd(this, TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES, Legal_Union_Record.class, msgs);
176 msgs = basicSetUnion_record(newUnion_record, msgs);
177 if (msgs != null) msgs.dispatch();
178 }
179 else if (eNotificationRequired())
180 eNotify(new ENotificationImpl(this, Notification.SET, TaxationPackage.TAX_PROPERTY__UNION_RECORD, newUnion_record, newUnion_record));
181 }
182
183 /**
184 * <!-- begin-user-doc -->
185 * <!-- end-user-doc -->
186 * @generated
187 */
188 @Override
189 public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
190 switch (featureID) {
191 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
192 if (eInternalContainer() != null)
193 msgs = eBasicRemoveFromContainer(msgs);
194 return basicSetUnion_record((Legal_Union_Record)otherEnd, msgs);
195 }
196 return super.eInverseAdd(otherEnd, featureID, msgs);
197 }
198
199 /**
200 * <!-- begin-user-doc -->
201 * <!-- end-user-doc -->
202 * @generated
203 */
204 @Override
205 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
206 switch (featureID) {
207 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
208 return basicSetUnion_record(null, msgs);
209 }
210 return super.eInverseRemove(otherEnd, featureID, msgs);
211 }
212
213 /**
214 * <!-- begin-user-doc -->
215 * <!-- end-user-doc -->
216 * @generated
217 */
218 @Override
219 public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
220 switch (eContainerFeatureID()) {
221 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
222 return eInternalContainer().eInverseRemove(this, TaxationPackage.LEGAL_UNION_RECORD__PROPERTIES, Legal_Union_Record.class, msgs);
223 }
224 return super.eBasicRemoveFromContainerFeature(msgs);
225 }
226
227 /**
228 * <!-- begin-user-doc -->
229 * <!-- end-user-doc -->
230 * @generated
231 */
232 @Override
233 public Object eGet(int featureID, boolean resolve, boolean coreType) {
234 switch (featureID) {
235 case TaxationPackage.TAX_PROPERTY__STARTING_YEAR:
236 return getStarting_year();
237 case TaxationPackage.TAX_PROPERTY__ID10:
238 return getId10();
239 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
240 return getUnion_record();
241 }
242 return super.eGet(featureID, resolve, coreType);
243 }
244
245 /**
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 */
250 @Override
251 public void eSet(int featureID, Object newValue) {
252 switch (featureID) {
253 case TaxationPackage.TAX_PROPERTY__STARTING_YEAR:
254 setStarting_year((Integer)newValue);
255 return;
256 case TaxationPackage.TAX_PROPERTY__ID10:
257 setId10((String)newValue);
258 return;
259 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
260 setUnion_record((Legal_Union_Record)newValue);
261 return;
262 }
263 super.eSet(featureID, newValue);
264 }
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 @Override
272 public void eUnset(int featureID) {
273 switch (featureID) {
274 case TaxationPackage.TAX_PROPERTY__STARTING_YEAR:
275 setStarting_year(STARTING_YEAR_EDEFAULT);
276 return;
277 case TaxationPackage.TAX_PROPERTY__ID10:
278 setId10(ID10_EDEFAULT);
279 return;
280 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
281 setUnion_record((Legal_Union_Record)null);
282 return;
283 }
284 super.eUnset(featureID);
285 }
286
287 /**
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 @Override
293 public boolean eIsSet(int featureID) {
294 switch (featureID) {
295 case TaxationPackage.TAX_PROPERTY__STARTING_YEAR:
296 return starting_year != STARTING_YEAR_EDEFAULT;
297 case TaxationPackage.TAX_PROPERTY__ID10:
298 return ID10_EDEFAULT == null ? id10 != null : !ID10_EDEFAULT.equals(id10);
299 case TaxationPackage.TAX_PROPERTY__UNION_RECORD:
300 return getUnion_record() != null;
301 }
302 return super.eIsSet(featureID);
303 }
304
305 /**
306 * <!-- begin-user-doc -->
307 * <!-- end-user-doc -->
308 * @generated
309 */
310 @Override
311 public String toString() {
312 if (eIsProxy()) return super.toString();
313
314 StringBuilder result = new StringBuilder(super.toString());
315 result.append(" (starting_year: ");
316 result.append(starting_year);
317 result.append(", id10: ");
318 result.append(id10);
319 result.append(')');
320 return result.toString();
321 }
322
323} //Tax_PropertyImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Taxation.ecore b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Taxation.ecore
new file mode 100644
index 00000000..7834561d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Taxation.ecore
@@ -0,0 +1,1257 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Taxation" nsURI="http:///TaxCardOld.ecore" nsPrefix="TaxCard">
4 <eAnnotations source="http://www.eclipse.org/OCL/Import">
5 <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
6 </eAnnotations>
7 <eClassifiers xsi:type="ecore:EEnum" name="Grantor">
8 <eLiterals name="WWW" literal="WWW"/>
9 <eLiterals name="Employer" value="1" literal="Employer"/>
10 <eLiterals name="MMM" value="2" literal="MMM"/>
11 <eLiterals name="UUU" value="3" literal="UUU"/>
12 <eLiterals name="YYY" value="4" literal="YYY"/>
13 <eLiterals name="OOO" value="5" literal="OOO"/>
14 </eClassifiers>
15 <eClassifiers xsi:type="ecore:EClass" name="Constants" abstract="true">
16 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD"
17 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
18 defaultValueLiteral="3480.0"/>
19 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE"
20 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
21 defaultValueLiteral="3600.0"/>
22 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_SALARY" lowerBound="1"
23 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1500.0"/>
24 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION"
25 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
26 defaultValueLiteral="4500.0"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS"
28 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
29 defaultValueLiteral="20.0"/>
30 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS"
31 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
32 defaultValueLiteral="120.0"/>
33 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC"
34 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
35 defaultValueLiteral="0.0"/>
36 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE"
37 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
38 defaultValueLiteral="24000.0"/>
39 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
40 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
41 defaultValueLiteral="99.0"/>
42 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
43 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
44 defaultValueLiteral="30.0"/>
45 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION"
46 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
47 defaultValueLiteral="4.0"/>
48 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_DAILY" lowerBound="1"
49 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="2.0"/>
50 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_MONTHLY"
51 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
52 defaultValueLiteral="62.0"/>
53 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIM_YEARLY" lowerBound="1"
54 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="750.0"/>
55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_DAILY" lowerBound="1"
56 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
57 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_MONTHLY"
58 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
59 defaultValueLiteral="25.0"/>
60 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIP_YEARLY" lowerBound="1"
61 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="30.0"/>
62 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_DAILY" lowerBound="1"
63 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="1.0"/>
64 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_MONTHLY"
65 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
66 defaultValueLiteral="25.0"/>
67 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_CIS_YEARLY" lowerBound="1"
68 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
69 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT"
70 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
71 defaultValueLiteral="99.0"/>
72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS"
73 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
74 <eStructuralFeatures xsi:type="ecore:EAttribute" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
75 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
76 <eStructuralFeatures xsi:type="ecore:EAttribute" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE"
77 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
78 <eStructuralFeatures xsi:type="ecore:EAttribute" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE"
79 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
80 </eClassifiers>
81 <eClassifiers xsi:type="ecore:EEnum" name="Disability_Types">
82 <eLiterals name="beug"/>
83 <eLiterals name="NONE" value="1"/>
84 <eLiterals name="A" value="2" literal="A"/>
85 <eLiterals name="B" value="3" literal="B"/>
86 <eLiterals name="C" value="4" literal="C"/>
87 <eLiterals name="D" value="5" literal="D"/>
88 <eLiterals name="E" value="6" literal="E"/>
89 <eLiterals name="OTHER" value="7"/>
90 </eClassifiers>
91 <eClassifiers xsi:type="ecore:EEnum" name="Country">
92 <eLiterals name="ZZ" literal="ZZ"/>
93 <eLiterals name="FF" value="1" literal="FF"/>
94 <eLiterals name="BB" value="2" literal="BB"/>
95 <eLiterals name="DD" value="3" literal="DD"/>
96 <eLiterals name="NN" value="4" literal="NN"/>
97 <eLiterals name="OTHER" value="5" literal="OTHER"/>
98 </eClassifiers>
99 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Card_Type">
100 <eLiterals name="Principal" literal="Principal"/>
101 <eLiterals name="Additional" value="1" literal="Additional"/>
102 </eClassifiers>
103 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Office">
104 <eLiterals name="RTS_2" literal="RTS_2"/>
105 <eLiterals name="RTS_3" value="1" literal="RTS_3"/>
106 <eLiterals name="RTS_4" value="2" literal="RTS_4"/>
107 <eLiterals name="RTS_5" value="3" literal="RTS_5"/>
108 </eClassifiers>
109 <eClassifiers xsi:type="ecore:EEnum" name="Tax_Class_Category">
110 <eLiterals name="One" literal="One"/>
111 <eLiterals name="One_A" value="1" literal="One_A"/>
112 <eLiterals name="Two" value="2" literal="Two"/>
113 </eClassifiers>
114 <eClassifiers xsi:type="ecore:EEnum" name="Job_Activity">
115 <eLiterals name="Salary" literal="Salary"/>
116 <eLiterals name="Pension" value="1" literal="Pension"/>
117 <eLiterals name="Annuity" value="2" literal="Annuity"/>
118 </eClassifiers>
119 <eClassifiers xsi:type="ecore:EEnum" name="Town">
120 <eLiterals name="LL" literal="LL"/>
121 <eLiterals name="BB" value="1" literal="BB"/>
122 <eLiterals name="SS" value="2" literal="SS"/>
123 <eLiterals name="TT" value="3" literal="TT"/>
124 <eLiterals name="Other" value="4" literal="Other"/>
125 </eClassifiers>
126 <eClassifiers xsi:type="ecore:EEnum" name="Type_of_Rate">
127 <eLiterals name="REGULAR" literal="REGULAR"/>
128 <eLiterals name="REAL_COST" value="1" literal="REAL_COST"/>
129 </eClassifiers>
130 <eClassifiers xsi:type="ecore:EEnum" name="CE_Type">
131 <eLiterals name="INALIDITY_AND_INFIRMITY" literal="INALIDITY_AND_INFIRMITY"/>
132 <eLiterals name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"
133 value="1" literal="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
134 <eLiterals name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" value="2" literal="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
135 </eClassifiers>
136 <eClassifiers xsi:type="ecore:EEnum" name="Expense_Purpose">
137 <eLiterals name="HOUSE_CARE" literal="HOUSE_CARE"/>
138 <eLiterals name="CHILD_CARE" value="1" literal="CHILD_CARE"/>
139 <eLiterals name="DEPENDENCE_CARE" value="2" literal="DEPENDENCE_CARE"/>
140 <eLiterals name="OTHER" value="3" literal="OTHER"/>
141 <eLiterals name="ALIMONY" value="4"/>
142 <eLiterals name="RECURRENT_DEPT" value="5"/>
143 </eClassifiers>
144 <eClassifiers xsi:type="ecore:EEnum" name="Dependent_Type">
145 <eLiterals name="CHILD" literal="CHILD"/>
146 <eLiterals name="SPOUSE" value="1" literal="SPOUSE"/>
147 <eLiterals name="RELATIVE" value="2" literal="RELATIVE"/>
148 <eLiterals name="OTHER_FAMILY_MEMBER" value="3" literal="OTHER_FAMILY_MEMBER"/>
149 <eLiterals name="NOT_OWN_CHILD" value="4"/>
150 </eClassifiers>
151 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax">
152 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
153 eType="#//Tax_Payer"/>
154 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_amount" lowerBound="1"
155 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
157 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id6" ordered="false" lowerBound="1"
159 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
160 </eClassifiers>
161 <eClassifiers xsi:type="ecore:EClass" name="Tax_Payer" abstract="true" eSuperTypes="#//Physical_Person #//Tax_Case">
162 <eAnnotations source="duplicates">
163 <contents xsi:type="ecore:EReference" name="expenses" ordered="false" upperBound="-1"
164 eType="#//Expense" containment="true">
165 <eAnnotations source="redefines" references="#//Physical_Person/expenses"/>
166 </contents>
167 </eAnnotations>
168 <eOperations name="is_dependent_part_of_the_household" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
169 <eParameters name="IN_dependent" lowerBound="1" eType="#//Dependent"/>
170 </eOperations>
171 <eOperations name="number_of_months_of_allowance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
172 <eOperations name="deduction_according_disability_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
173 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
174 <details key="body" value="if ( self.disability_percentage >= 0.25 and self.disability_percentage &lt; 0.35) then&#xA;&#x9;&#x9;&#x9;150.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.35 and self.disability_percentage &lt; 0.45) then&#xA;&#x9;&#x9;&#x9;225.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.45 and self.disability_percentage &lt;0.55) then&#xA;&#x9;&#x9;&#x9;375.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.55 and self.disability_percentage &lt; 0.65 ) then&#xA;&#x9;&#x9;&#x9;450.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.65 and self.disability_percentage &lt; 0.75) then&#xA;&#x9;&#x9;&#x9;525.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.75 and self.disability_percentage &lt; 0.85) then&#xA;&#x9;&#x9;&#x9;585.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.85 and self.disability_percentage&lt; 0.95) then&#xA;&#x9;&#x9;&#x9;645.0&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.95 and self.disability_percentage&lt;=1)then&#xA;&#x9;&#x9;&#x9;735.0 else 0.0 endif endif endif endif endif endif endif endif"/>
175 </eAnnotations>
176 </eOperations>
177 <eOperations name="getIsTaxedJointly" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
178 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
179 <details key="body" value="let is_married:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Marriage_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: - **/&#x9;&#xA;if (is_married) = false then&#xA; let is_in_partnership_relation:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Partnership_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_in_partnership_relation) = false then&#xA; false&#xA; else&#xA; if (is_in_partnership_relation) = true then&#xA; let is_joint_tax_beneficial:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_joint_tax_beneficial) = true then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let relation_lasted_for_the_taxation_year:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = false then&#xA; false&#xA; else&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = false then&#xA; false&#xA; else&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) &#xA; &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = true then&#xA; true&#xA; else&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_joint_tax_beneficial) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_married) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let is_couple_assimilated_to_residents:Boolean = (resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_assimilated_to_residents) = true then&#xA; true&#xA; else&#xA; if (is_couple_assimilated_to_residents) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let local_professional_household_income:Real = self.getProfetionalIncomeHouseholdZZ(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = false then&#xA; false&#xA; else&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (are_both_spouses_non_resident) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let professional_income_resident_taxpayer:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes->oclIsInvalid()) then 0.0 else my_incomes.income_amount->sum() endif else if(spouse_incomes->oclIsInvalid()) then 0.0 else spouse_incomes.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = false then&#xA; false&#xA; else&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
180 </eAnnotations>
181 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
182 </eOperations>
183 <eOperations name="getIsreceivingAllowancesForChildren" ordered="false" lowerBound="1"
184 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
185 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
186 <details key="body" value="let children1:Set(Dependent)=self.dependents->select(dependent_type=Dependent_Type::CHILD) in&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in&#xA;&#x9;&#x9;&#x9;let house: Household = union.household in&#xA;&#x9;&#x9;&#x9;let children:Set(Dependent)=if (house.oclIsInvalid()) then children1 else children1->union(house.children) endif in&#xA;&#x9;&#x9;&#x9;if(children->size()=0)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let allowances:Boolean=children.allowances->select(starting_year&lt;=year and ending_year=-1 and amount>0)->size()>0in&#xA;&#x9;&#x9;&#x9;if(allowances)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
187 </eAnnotations>
188 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
189 </eOperations>
190 <eOperations name="getProfetionalIncomeHousehold" ordered="false" lowerBound="1"
191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
192 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
193 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real= if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
194 </eAnnotations>
195 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
196 </eOperations>
197 <eOperations name="getProfetionalIncomeHouseholdZZ" ordered="false" lowerBound="1"
198 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
199 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
200 <details key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real=if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
201 </eAnnotations>
202 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
203 </eOperations>
204 <eOperations name="getTaxClass" ordered="false" lowerBound="1" eType="#//Tax_Class_Category">
205 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
206 <details key="body" value="let is_resident_taxpayer:Boolean = self.oclIsKindOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: Returns yes if a given taxpayer is a resident. - **/&#x9;&#xA;if (is_resident_taxpayer) = true then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_resident_taxpayer) = false then&#xA; let is_married:Boolean = self.getIsMaried(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married. - **/&#x9;&#xA; if (is_married) = false then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_married) = true then&#xA; let total_professional_income_household:Real = self.getProfetionalIncomeHousehold(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes. - **/&#x9;&#xA; let sum_professional_income_household_ZZ:Real = self.getProfetionalIncomeHouseholdZZ(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes that are taxed in ZZ. - **/&#x9;&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
207 </eAnnotations>
208 <eParameters name="taxation_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
209 </eOperations>
210 <eStructuralFeatures xsi:type="ecore:EReference" name="dependents" ordered="false"
211 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/responsible_person"/>
212 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" lowerBound="1"
213 eType="#//FromAgent" containment="true" eOpposite="#//FromAgent/taxPayer"/>
214 <eStructuralFeatures xsi:type="ecore:EReference" name="incomes" ordered="false"
215 lowerBound="1" upperBound="-1" eType="#//Income" containment="true" eOpposite="#//Income/taxPayer"/>
216 <eStructuralFeatures xsi:type="ecore:EReference" name="from_law" lowerBound="1"
217 eType="#//FromLaw" containment="true" eOpposite="#//FromLaw/taxPayer"/>
218 <eStructuralFeatures xsi:type="ecore:EAttribute" name="AEP_deduction" ordered="false"
219 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
220 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxesDue" ordered="false"
221 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
222 </eClassifiers>
223 <eClassifiers xsi:type="ecore:EClass" name="Physical_Person">
224 <eOperations name="is_separated_from" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
225 <eParameters name="IN_person" lowerBound="1" eType="#//Physical_Person"/>
226 </eOperations>
227 <eOperations name="is_person_affiliated_personnaly_to_social_security" lowerBound="1"
228 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
229 <eOperations name="getSeperationState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
230 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
231 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.separation_cause=seperation_type&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
232 </eAnnotations>
233 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
234 <eParameters name="seperation_type" ordered="false" lowerBound="1" eType="#//Separation_Causes"/>
235 </eOperations>
236 <eOperations name="getAge" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
237 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
238 <details key="body" value="&#x9;if(birth_year>=year )then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;year-birth_year&#xA;&#x9;&#x9;&#x9;endif"/>
239 </eAnnotations>
240 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
241 </eOperations>
242 <eOperations name="getIsMaried" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
243 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
244 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
245 </eAnnotations>
246 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
247 </eOperations>
248 <eOperations name="getSeperationYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
249 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
250 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.end_year&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
251 </eAnnotations>
252 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
253 </eOperations>
254 <eOperations name="getDivorceTransitionState" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
255 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
256 <details key="body" value="let sep_year:Integer=self.getSeperationYear(year) in&#xA;&#x9;&#x9;&#x9;if(sep_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if( (sep_year &lt;= year and sep_year >= (year -3))=false) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let past_sep_year:Integer=self.getSeperationYear(year-5) in&#xA;&#x9;&#x9;&#x9;if(past_sep_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
257 </eAnnotations>
258 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
259 </eOperations>
260 <eOperations name="getSpouse" ordered="false" lowerBound="1" eType="#//Physical_Person">
261 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
262 <details key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in &#xA;&#x9;&#x9;&#x9;if(union.oclIsInvalid())then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9; if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(lasted_union.individual_A=self)then&#xA;&#x9;&#x9;&#x9;lasted_union.individual_B&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.individual_A&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
263 </eAnnotations>
264 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
265 </eOperations>
266 <eOperations name="getLegalUnionRecord" ordered="false" lowerBound="1" eType="#//Legal_Union_Record">
267 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
268 <details key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;lasted_union&#xA;&#x9;&#x9;&#x9;endif"/>
269 </eAnnotations>
270 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
271 </eOperations>
272 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
273 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
274 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assisting_spouse" lowerBound="1"
275 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" derived="true"/>
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="SSNo" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
277 iD="true"/>
278 <eStructuralFeatures xsi:type="ecore:EReference" name="addresses" ordered="false"
279 upperBound="-1" eType="#//Address" eOpposite="#//Address/taxPayer"/>
280 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_year" ordered="false"
281 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
282 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_percentage"
283 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
284 <eStructuralFeatures xsi:type="ecore:EAttribute" name="disability_type" ordered="false"
285 unique="false" lowerBound="1" eType="#//Disability_Types"/>
286 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_affiliated_personnaly_to_social_security"
287 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
288 derived="true"/>
289 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_month" ordered="false"
290 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
291 <eStructuralFeatures xsi:type="ecore:EAttribute" name="birth_day" ordered="false"
292 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
293 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
294 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/beneficiary"/>
295 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_widower" ordered="false"
296 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
297 <eStructuralFeatures xsi:type="ecore:EAttribute" name="last_start_year_widower"
298 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
299 </eClassifiers>
300 <eClassifiers xsi:type="ecore:EClass" name="Address">
301 <eStructuralFeatures xsi:type="ecore:EAttribute" name="country" lowerBound="1"
302 eType="#//Country" defaultValueLiteral="ZZ"/>
303 <eStructuralFeatures xsi:type="ecore:EAttribute" name="street" lowerBound="1"
304 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
305 <eStructuralFeatures xsi:type="ecore:EAttribute" name="zipCode" lowerBound="1"
306 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
307 <eStructuralFeatures xsi:type="ecore:EAttribute" name="city" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
308 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id2" ordered="false" lowerBound="1"
309 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
310 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
311 upperBound="-1" eType="#//Physical_Person" eOpposite="#//Physical_Person/addresses"/>
312 </eClassifiers>
313 <eClassifiers xsi:type="ecore:EClass" name="Expense">
314 <eStructuralFeatures xsi:type="ecore:EAttribute" name="declared_amount" lowerBound="1"
315 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
316 <eStructuralFeatures xsi:type="ecore:EAttribute" name="expense_purpose" lowerBound="1"
317 eType="#//Expense_Purpose" defaultValueLiteral="OTHER"/>
318 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" eType="#//Dependent"
319 eOpposite="#//Dependent/expense"/>
320 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
321 eType="#//FromAgent" eOpposite="#//FromAgent/expense"/>
322 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year_expense_was_incurred_in"
323 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
324 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
325 eType="#//Income" eOpposite="#//Income/expenses"/>
326 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id4" ordered="false" lowerBound="1"
327 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
328 <eStructuralFeatures xsi:type="ecore:EReference" name="beneficiary" ordered="false"
329 eType="#//Physical_Person" eOpposite="#//Physical_Person/expenses"/>
330 </eClassifiers>
331 <eClassifiers xsi:type="ecore:EClass" name="Dependent" eSuperTypes="#//Physical_Person">
332 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CIM"
333 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
334 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_DS" lowerBound="1"
335 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
336 <eOperations name="compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care"
337 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
338 <eOperations name="is_dependent_following_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
339 <eParameters name="IN_continued_studies" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
340 </eOperations>
341 <eStructuralFeatures xsi:type="ecore:EAttribute" name="dependent_type" lowerBound="1"
342 eType="#//Dependent_Type"/>
343 <eStructuralFeatures xsi:type="ecore:EReference" name="responsible_person" eType="#//Tax_Payer"
344 eOpposite="#//Tax_Payer/dependents"/>
345 <eStructuralFeatures xsi:type="ecore:EAttribute" name="continued_studies" lowerBound="1"
346 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="false"/>
347 <eStructuralFeatures xsi:type="ecore:EReference" name="allowances" ordered="false"
348 upperBound="-1" eType="#//External_Allowance" containment="true" eOpposite="#//External_Allowance/person"/>
349 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
350 eType="#//Household" eOpposite="#//Household/children"/>
351 <eStructuralFeatures xsi:type="ecore:EReference" name="from_agent" ordered="false"
352 eType="#//FromAgent" eOpposite="#//FromAgent/dependent"/>
353 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
354 upperBound="-1" eType="#//Expense" eOpposite="#//Expense/dependent"/>
355 </eClassifiers>
356 <eClassifiers xsi:type="ecore:EClass" name="External_Allowance">
357 <eOperations name="getAmount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
358 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
359 <details key="body" value=" if(dep_age>=6 and dep_age&lt;=11) then&#xA;(base + 16.17).round()&#xA; else if (dep_age>=12) then (base + 48.52).round() else &#xA; if(is_disabled) then(base + 185.60).round() else base endif endif endif"/>
360 </eAnnotations>
361 <eParameters name="base" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
362 <eParameters name="dep_age" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
363 <eParameters name="is_disabled" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
364 </eOperations>
365 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
366 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
367 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
368 </eAnnotations>
369 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
370 </eOperations>
371 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
372 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
373 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantor" lowerBound="1"
374 eType="#//Grantor"/>
375 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
376 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
377 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ending_year" ordered="false"
378 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
379 <eStructuralFeatures xsi:type="ecore:EReference" name="reciver" ordered="false"
380 lowerBound="1" eType="#//Physical_Person"/>
381 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
382 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
383 <eStructuralFeatures xsi:type="ecore:EReference" name="person" ordered="false"
384 lowerBound="1" eType="#//Dependent" eOpposite="#//Dependent/allowances"/>
385 </eClassifiers>
386 <eClassifiers xsi:type="ecore:EClass" name="Household" eSuperTypes="#//Tax_Case">
387 <eStructuralFeatures xsi:type="ecore:EReference" name="parents" ordered="false"
388 lowerBound="1" eType="#//Legal_Union_Record" containment="true" eOpposite="#//Legal_Union_Record/household"/>
389 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id1" ordered="false" lowerBound="1"
390 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
391 <eStructuralFeatures xsi:type="ecore:EReference" name="children" ordered="false"
392 upperBound="-1" eType="#//Dependent" containment="true" eOpposite="#//Dependent/household"/>
393 </eClassifiers>
394 <eClassifiers xsi:type="ecore:EClass" name="Legal_Union_Record" abstract="true">
395 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" lowerBound="1"
396 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
397 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_year" lowerBound="1"
398 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
399 <eStructuralFeatures xsi:type="ecore:EAttribute" name="separation_cause" ordered="false"
400 lowerBound="1" eType="#//Separation_Causes"/>
401 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_A" ordered="false"
402 lowerBound="1" eType="#//Physical_Person" containment="true">
403 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
404 <details key="body" value="legal_union_A"/>
405 </eAnnotations>
406 </eStructuralFeatures>
407 <eStructuralFeatures xsi:type="ecore:EReference" name="individual_B" ordered="false"
408 lowerBound="1" eType="#//Physical_Person" containment="true">
409 <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
410 <details key="body" value="legal_union_B"/>
411 </eAnnotations>
412 </eStructuralFeatures>
413 <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
414 lowerBound="1" upperBound="-1" eType="#//Tax_Property" containment="true"
415 eOpposite="#//Tax_Property/union_record"/>
416 <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutual_agreement" ordered="false"
417 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
418 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id9" ordered="false" lowerBound="1"
419 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
420 <eStructuralFeatures xsi:type="ecore:EReference" name="household" ordered="false"
421 lowerBound="1" eType="#//Household" eOpposite="#//Household/parents"/>
422 </eClassifiers>
423 <eClassifiers xsi:type="ecore:EEnum" name="Separation_Causes">
424 <eLiterals name="NONE"/>
425 <eLiterals name="DIVORCE" value="1"/>
426 <eLiterals name="SEPARATION_DE_FAIT" value="2"/>
427 <eLiterals name="SEPARATION_BY_COURT" value="3"/>
428 </eClassifiers>
429 <eClassifiers xsi:type="ecore:EClass" name="Tax_Property">
430 <eStructuralFeatures xsi:type="ecore:EAttribute" name="starting_year" ordered="false"
431 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
432 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxed_jointly" ordered="false"
433 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
434 defaultValueLiteral="false"/>
435 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id10" ordered="false" lowerBound="1"
436 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
437 <eStructuralFeatures xsi:type="ecore:EReference" name="union_record" ordered="false"
438 lowerBound="1" eType="#//Legal_Union_Record" eOpposite="#//Legal_Union_Record/properties"/>
439 </eClassifiers>
440 <eClassifiers xsi:type="ecore:EClass" name="Tax_Case" abstract="true" interface="true"/>
441 <eClassifiers xsi:type="ecore:EClass" name="FromAgent">
442 <eStructuralFeatures xsi:type="ecore:EAttribute" name="taxation_year" unique="false"
443 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
444 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
445 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_agent"/>
446 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care"
447 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
448 <eStructuralFeatures xsi:type="ecore:EReference" name="expense" ordered="false"
449 eType="#//Expense" eOpposite="#//Expense/from_agent"/>
450 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_debt" ordered="false"
451 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
452 <eStructuralFeatures xsi:type="ecore:EReference" name="dependent" ordered="false"
453 eType="#//Dependent" eOpposite="#//Dependent/from_agent"/>
454 </eClassifiers>
455 <eClassifiers xsi:type="ecore:EClass" name="Income" abstract="true">
456 <eOperations name="compute_duration_of_contract" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
457 <eOperations name="compute_duration_of_contract_within_taxation_year" lowerBound="1"
458 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
459 <eParameters name="IN_date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
460 </eOperations>
461 <eOperations name="prorata_worked_months" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
462 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
463 <details key="body" value="self.details->select(is_worked)->size()"/>
464 </eAnnotations>
465 </eOperations>
466 <eOperations name="prorata_worked_days" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
467 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
468 <details key="body" value="let a:Set(Income_Detail)=self.details->select(is_worked) in &#xA;&#x9;&#x9;&#x9;a.worked_days->sum().mod(25)"/>
469 </eAnnotations>
470 </eOperations>
471 <eOperations name="prorata_period" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
472 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
473 <details key="body" value="&#xA;&#x9;&#x9;&#x9;let nb_months:Integer=self.prorata_worked_months()in&#xA;&#x9;&#x9;&#x9;let nb_days:Integer=self.prorata_worked_days()in&#xA;&#x9;&#x9;&#x9; if(nb_months=12) then&#xA;&#x9;&#x9;&#x9;1&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;nb_months/12 + nb_days/300&#xA;&#x9;&#x9;&#x9;endif"/>
474 </eAnnotations>
475 </eOperations>
476 <eOperations name="income_per_day" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
477 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
478 <details key="body" value="income_per_year()/300"/>
479 </eAnnotations>
480 </eOperations>
481 <eOperations name="income_per_month" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
482 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
483 <details key="body" value="income_per_year()/12"/>
484 </eAnnotations>
485 </eOperations>
486 <eOperations name="income_per_year" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
487 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
488 <details key="body" value="&#x9;&#x9;&#x9;let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;involved_details.amount->sum()"/>
489 </eAnnotations>
490 </eOperations>
491 <eOperations name="getDurationInyears" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
492 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
493 <details key="body" value="&#xA;&#x9;&#x9;&#x9;if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then &#xA;&#x9;&#x9;&#x9;if(start_year.oclIsUndefined())then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in&#xA;&#x9;&#x9;&#x9;if(res&lt;0) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;res&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif"/>
494 </eAnnotations>
495 </eOperations>
496 <eStructuralFeatures xsi:type="ecore:EAttribute" name="income_amount" ordered="false"
497 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
498 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
499 <details key="derivation" value="let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in&#xA;non_null_amounts->collect(amount)->min()"/>
500 </eAnnotations>
501 </eStructuralFeatures>
502 <eStructuralFeatures xsi:type="ecore:EReference" name="income_type" lowerBound="1"
503 eType="#//Income_Type" containment="true" eOpposite="#//Income_Type/income"/>
504 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_within_taxation_year"
505 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
506 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_date_of_contract"
507 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
508 <eStructuralFeatures xsi:type="ecore:EAttribute" name="end_date_within_taxation_year"
509 ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
510 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_card" eType="#//Tax_Card"
511 containment="true" eOpposite="#//Tax_Card/income"/>
512 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_liability" lowerBound="1"
513 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
514 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" ordered="false"
515 lowerBound="1" eType="#//Tax_Payer" eOpposite="#//Tax_Payer/incomes"/>
516 <eStructuralFeatures xsi:type="ecore:EAttribute" name="year" unique="false" lowerBound="1"
517 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
518 <eStructuralFeatures xsi:type="ecore:EReference" name="details" lowerBound="12"
519 upperBound="12" eType="#//Income_Detail" containment="true" eOpposite="#//Income_Detail/income"/>
520 <eStructuralFeatures xsi:type="ecore:EAttribute" name="num" ordered="false" lowerBound="1"
521 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"
522 iD="true"/>
523 <eStructuralFeatures xsi:type="ecore:EAttribute" name="start_year" ordered="false"
524 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
525 <eStructuralFeatures xsi:type="ecore:EReference" name="expenses" ordered="false"
526 upperBound="-1" eType="#//Expense" containment="true" eOpposite="#//Expense/income"/>
527 </eClassifiers>
528 <eClassifiers xsi:type="ecore:EClass" name="Income_Type" abstract="true">
529 <eStructuralFeatures xsi:type="ecore:EAttribute" name="subjectToWithholdingTax"
530 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
531 derived="true">
532 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
533 <details key="derivation" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.income.tax_card->notEmpty()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
534 </eAnnotations>
535 </eStructuralFeatures>
536 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id8" ordered="false" lowerBound="1"
537 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
538 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
539 eType="#//Income" eOpposite="#//Income/income_type"/>
540 </eClassifiers>
541 <eClassifiers xsi:type="ecore:EClass" name="Tax_Card">
542 <eOperations name="getSumDeductionsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
543 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
544 <details key="body" value="deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly"/>
545 </eAnnotations>
546 </eOperations>
547 <eOperations name="getSumCreditsYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
548 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
549 <details key="body" value="credit_CIS_yearly+credit_CIP_yearly"/>
550 </eAnnotations>
551 </eOperations>
552 <eStructuralFeatures xsi:type="ecore:EAttribute" name="card_identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
553 iD="true"/>
554 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_card_type" lowerBound="1"
555 eType="#//Tax_Card_Type" derived="true">
556 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
557 <details key="derivation" value="if(self.income.taxPayer.incomes->size()=1) then &#xA;Tax_Card_Type::Principal&#xA;&#x9;else&#xA;&#x9;&#x9;let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in&#xA;&#x9;&#x9;let bigest_income:Income= all_incomes->first() in&#xA;&#x9;&#x9;&#x9; if(bigest_income=self.income) then&#xA;&#x9;&#x9;&#x9; &#x9; Tax_Card_Type::Principal&#xA;&#x9;&#x9;&#x9; else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;Tax_Card_Type::Additional&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
558 </eAnnotations>
559 </eStructuralFeatures>
560 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_office" lowerBound="1"
561 eType="#//Tax_Office"/>
562 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_from_date" ordered="false"
563 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
564 <eStructuralFeatures xsi:type="ecore:EAttribute" name="valid_until_date" ordered="false"
565 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
566 <eStructuralFeatures xsi:type="ecore:EAttribute" name="percentage_of_witholding"
567 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
568 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_name_surname"
569 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
570 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payers_partner_name_surname"
571 ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
572 <eStructuralFeatures xsi:type="ecore:EReference" name="tax_payers_address" eType="#//Address"/>
573 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_Employer_SSNo" ordered="false"
574 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
575 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_employers_name" ordered="false"
576 unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
577 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_activity_type" lowerBound="1"
578 eType="#//Job_Activity"/>
579 <eStructuralFeatures xsi:type="ecore:EAttribute" name="jobs_place_of_work" lowerBound="1"
580 eType="#//Town"/>
581 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_daily" ordered="false"
582 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
583 defaultValueLiteral="0.0"/>
584 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_monthly" ordered="false"
585 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
586 defaultValueLiteral="0.0"/>
587 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FD_yearly" unique="false"
588 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
589 defaultValueLiteral="0.0"/>
590 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_daily" unique="false"
591 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
592 defaultValueLiteral="0.0"/>
593 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_monthly" unique="false"
594 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
595 defaultValueLiteral="0.0"/>
596 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_AC_yearly" unique="false"
597 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
598 defaultValueLiteral="0.0"/>
599 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_daily" unique="false"
600 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
601 defaultValueLiteral="0.0"/>
602 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_monthly" unique="false"
603 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
604 defaultValueLiteral="0.0"/>
605 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_yearly" unique="false"
606 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
607 defaultValueLiteral="0.0"/>
608 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_CE_invalidity_yearly"
609 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
610 defaultValueLiteral="0.0"/>
611 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_daily" unique="false"
612 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
613 defaultValueLiteral="0.0"/>
614 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_monthly" lowerBound="1"
615 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0"/>
616 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_yearly" unique="false"
617 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
618 defaultValueLiteral="0.0"/>
619 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_daily" unique="false"
620 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
621 defaultValueLiteral="0.0"/>
622 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_monthly" unique="false"
623 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
624 defaultValueLiteral="0.0"/>
625 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_FO_yearly" unique="false"
626 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
627 defaultValueLiteral="0.0"/>
628 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_daily" unique="false"
629 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
630 defaultValueLiteral="0.0"/>
631 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_monthly" unique="false"
632 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
633 defaultValueLiteral="0.0"/>
634 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_monthly" unique="false"
635 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
636 defaultValueLiteral="0.0"/>
637 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIP_yearly" unique="false"
638 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
639 defaultValueLiteral="0.0"/>
640 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_daily" unique="false"
641 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
642 defaultValueLiteral="0.0"/>
643 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_monthly" unique="false"
644 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
645 defaultValueLiteral="0.0"/>
646 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIS_yearly" unique="false"
647 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
648 defaultValueLiteral="0.0"/>
649 <eStructuralFeatures xsi:type="ecore:EAttribute" name="validity" lowerBound="1"
650 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
651 <eStructuralFeatures xsi:type="ecore:EReference" name="income_Tax_Credit" ordered="false"
652 upperBound="-1" eType="#//Income_Tax_Credit" eOpposite="#//Income_Tax_Credit/taxation_Frame"/>
653 <eStructuralFeatures xsi:type="ecore:EReference" name="previous" eType="#//Tax_Card"
654 eOpposite="#//Tax_Card/current_tax_card"/>
655 <eStructuralFeatures xsi:type="ecore:EReference" name="current_tax_card" eType="#//Tax_Card"
656 eOpposite="#//Tax_Card/previous"/>
657 <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit_CIM_yearly" ordered="false"
658 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
659 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Alimony_yearly"
660 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
661 <eStructuralFeatures xsi:type="ecore:EAttribute" name="deduction_DS_Debt_yearly"
662 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
663 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
664 eType="#//Income" eOpposite="#//Income/tax_card"/>
665 </eClassifiers>
666 <eClassifiers xsi:type="ecore:EClass" name="Income_Tax_Credit">
667 <eStructuralFeatures xsi:type="ecore:EAttribute" name="grantedBy" lowerBound="1"
668 eType="#//Grantor"/>
669 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" eType="#//Tax_Payer"/>
670 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_year" lowerBound="1"
671 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
672 <eStructuralFeatures xsi:type="ecore:EAttribute" name="yearly" lowerBound="1"
673 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="300.0"/>
674 <eStructuralFeatures xsi:type="ecore:EAttribute" name="monthly" lowerBound="1"
675 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="25.0"/>
676 <eStructuralFeatures xsi:type="ecore:EAttribute" name="daily" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
677 defaultValueLiteral="1.0"/>
678 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id7" ordered="false" lowerBound="1"
679 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
680 <eStructuralFeatures xsi:type="ecore:EReference" name="taxation_Frame" eType="#//Tax_Card"
681 eOpposite="#//Tax_Card/income_Tax_Credit"/>
682 </eClassifiers>
683 <eClassifiers xsi:type="ecore:EClass" name="Income_Detail">
684 <eStructuralFeatures xsi:type="ecore:EAttribute" name="month" ordered="false"
685 unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
686 <eStructuralFeatures xsi:type="ecore:EAttribute" name="amount" lowerBound="1"
687 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
688 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_worked" lowerBound="1"
689 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
690 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance" lowerBound="1"
691 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
692 <eStructuralFeatures xsi:type="ecore:EAttribute" name="worked_days" lowerBound="1"
693 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
694 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_CNS" ordered="false"
695 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
696 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_contributing_pension"
697 ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
698 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id5" ordered="false" lowerBound="1"
699 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
700 <eStructuralFeatures xsi:type="ecore:EReference" name="income" lowerBound="1"
701 eType="#//Income" eOpposite="#//Income/details"/>
702 </eClassifiers>
703 <eClassifiers xsi:type="ecore:EClass" name="FromLaw">
704 <eOperations name="CE_INVALIDITY_FLAT_RATE_TYPE_E" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
705 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
706 <details key="body" value="1455.0"/>
707 </eAnnotations>
708 </eOperations>
709 <eOperations name="CIP_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
710 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
711 <details key="body" value="25.0"/>
712 </eAnnotations>
713 </eOperations>
714 <eOperations name="CIP_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
715 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
716 <details key="body" value="300.0"/>
717 </eAnnotations>
718 </eOperations>
719 <eOperations name="FLAT_RATE_CIP_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
720 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
721 <details key="body" value="300.0"/>
722 </eAnnotations>
723 </eOperations>
724 <eOperations name="FLAT_RATE_PER_UNIT" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
725 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
726 <details key="body" value="99.0"/>
727 </eAnnotations>
728 </eOperations>
729 <eOperations name="MAXIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
730 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
731 <details key="body" value="30.0"/>
732 </eAnnotations>
733 </eOperations>
734 <eOperations name="MINIMUM_DISTANCE_IN_UNITS" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
735 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
736 <details key="body" value="4.0"/>
737 </eAnnotations>
738 </eOperations>
739 <eOperations name="FLAT_MAXIMUM_FD" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
740 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
741 <details key="body" value="2574.0"/>
742 </eAnnotations>
743 </eOperations>
744 <eOperations name="CIS_MINIMUM_INCOME_DAY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
745 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
746 <details key="body" value="3.12"/>
747 </eAnnotations>
748 </eOperations>
749 <eOperations name="CIS_MINIMUM_INCOME_MONTH" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
750 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
751 <details key="body" value="78.0"/>
752 </eAnnotations>
753 </eOperations>
754 <eOperations name="CIS_MINIMUM_INCOME_YEAR" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
755 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
756 <details key="body" value="936.0"/>
757 </eAnnotations>
758 </eOperations>
759 <eOperations name="FLAT_RATE_CIS_DAILY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
760 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
761 <details key="body" value="1.0"/>
762 </eAnnotations>
763 </eOperations>
764 <eOperations name="FLAT_RATE_CIS_MONTHLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
765 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
766 <details key="body" value="25.0"/>
767 </eAnnotations>
768 </eOperations>
769 <eOperations name="FLAT_RATE_CIS_YEARLY" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
770 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
771 <details key="body" value="300.0"/>
772 </eAnnotations>
773 </eOperations>
774 <eOperations name="get_A_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
775 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
776 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9; endif"/>
777 </eAnnotations>
778 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
779 </eOperations>
780 <eOperations name="get_B_for_salary_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
781 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
782 <details key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 81.9&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 105.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 132.39000&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 162.405&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 195.6&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 231.975&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 271.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 314.265&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 360.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 409.275&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 461.55&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 517.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 575.64&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 637.455&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 702.45&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 770.625&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 806.30250 &#xA;&#x9;&#x9;else 890.48583&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
783 </eAnnotations>
784 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
785 </eOperations>
786 <eOperations name="get_A_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
787 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
788 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
789 </eAnnotations>
790 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
791 </eOperations>
792 <eOperations name="get_B_for_salary_class_1A" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
793 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
794 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 235.5&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 297.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 362.79&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 431.205&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 502.8&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 577.575&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 655.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 736.665&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 820.98&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 908.475&#xA;&#x9;&#x9;else 938.7&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9;&#x9;endif"/>
795 </eAnnotations>
796 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
797 </eOperations>
798 <eOperations name="get_A_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
799 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
800 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
801 </eAnnotations>
802 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
803 </eOperations>
804 <eOperations name="get_B_for_salary_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
805 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
806 <details key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 157&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 202.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 254.58&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 312.91&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 377.6&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 448.65&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 526.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 609.83&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 699.96&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 796.45&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 899.3&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 1008.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 1124.08&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 1246.01&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 1374.3&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 1508.95&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 1579.455&#xA;&#x9;&#x9;else 1746.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
807 </eAnnotations>
808 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
809 </eOperations>
810 <eOperations name="get_A_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
811 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
812 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
813 </eAnnotations>
814 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
815 </eOperations>
816 <eOperations name="get_B_for_pension_class_1" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
817 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
818 <details key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 80.3&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 103.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 129.99&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 159.605&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 192.4&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 228.375&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 267.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 309.865&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 355.38&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 404.075&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 455.95&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 511.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 569.24&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 630.655&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 695.25&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 763.025&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 798.5025&#xA;&#x9;&#x9;else 882.48583&#x9;&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
819 </eAnnotations>
820 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
821 </eOperations>
822 <eOperations name="get_A_for_pension_class_1A" ordered="false" lowerBound="1"
823 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
824 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
825 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
826 </eAnnotations>
827 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
828 </eOperations>
829 <eOperations name="get_B_for_pension_class_1A" ordered="false" lowerBound="1"
830 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
831 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
832 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 233.100&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 294.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 359.190&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 427.005&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 498&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 572.175&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 649.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 730.065&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 813.780&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 900.675&#xA;&#x9;&#x9;else 930.700&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
833 </eAnnotations>
834 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
835 </eOperations>
836 <eOperations name="get_A_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
837 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
838 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
839 </eAnnotations>
840 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
841 </eOperations>
842 <eOperations name="get_B_for_pension_class_2" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
843 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
844 <details key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 155.4&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 200.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 252.18&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 310.11&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 374.4&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 445.05&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 522.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 605.43&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 695.16&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 791.25&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 893.7&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 1002.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 1117.68&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 1239.21&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 1367.1&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 1501.35&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 1571.655&#xA;&#x9;&#x9;else 1738.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
845 </eAnnotations>
846 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
847 </eOperations>
848 <eOperations name="get_A_for_other_yearly_class_1" ordered="false" lowerBound="1"
849 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
850 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
851 <details key="body" value=" if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
852 </eAnnotations>
853 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
854 </eOperations>
855 <eOperations name="get_B_for_other_yearly_class_1" ordered="false" lowerBound="1"
856 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
857 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
858 <details key="body" value="if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 901.200 &#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 1164.660&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 1466.280&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 1806.060&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 2184&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 2600.100&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 3054.360&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 3546.780 &#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 4077.360&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 4646.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 5253&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 5898.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 6581.28&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 7302.66&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 8062.2&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 8859.9&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 9277.83&#xA;&#x9;&#x9;else 10277.83&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
859 </eAnnotations>
860 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
861 </eOperations>
862 <eOperations name="get_A_for_other_yearly_class_1A" ordered="false" lowerBound="1"
863 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
864 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
865 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
866 </eAnnotations>
867 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
868 </eOperations>
869 <eOperations name="get_B_for_other_yearly_class_1A" ordered="false" lowerBound="1"
870 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
871 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
872 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 2703.600&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 3417.660&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 4169.880&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 4960.260&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 5788.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 6655.500&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 7560.360&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 8503.380&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 9484.560&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 10503.900&#xA;&#x9;&#x9;else 10856.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
873 </eAnnotations>
874 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
875 </eOperations>
876 <eOperations name="get_A_for_other_yearly_class_2" ordered="false" lowerBound="1"
877 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
878 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
879 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
880 </eAnnotations>
881 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
882 </eOperations>
883 <eOperations name="get_B_for_other_yearly_class_2" ordered="false" lowerBound="1"
884 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
885 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
886 <details key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 1802.400 &#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 2329.320&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 2932.560&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 3612.120&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 4368.000&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 5200.200&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 6108.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 7093.560&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 8154.720&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 9292.200&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 10506.000&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 11796.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 13162.560&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 14605.320&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 16124.400&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 17719.800&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 18555.660&#xA;&#x9;&#x9;else 20555.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
887 </eAnnotations>
888 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
889 </eOperations>
890 <eOperations name="calculate_taxes_per_month" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
891 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
892 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_class_2(amount) else get_A_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_class_2(amount) else get_B_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 25085 else 12585 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_class_2(amount) else get_A_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_class_2(amount) else get_B_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 25065 else 12565 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
893 </eAnnotations>
894 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
895 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
896 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
897 </eOperations>
898 <eOperations name="round_lower_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
899 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
900 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
901 </eAnnotations>
902 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
903 </eOperations>
904 <eOperations name="round_ten_cent" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
905 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
906 <details key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;if(p1=amount) then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let p2_temp:Real = (amount-p1) * 10 in&#xA;&#x9;&#x9;&#x9;let p2:Integer = p2_temp.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()+(p2.toString().toReal()/10.0)&#xA;&#x9;&#x9;&#x9;endif"/>
907 </eAnnotations>
908 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
909 </eOperations>
910 <eOperations name="get_A_for_salary_yearly_class_1" ordered="false" lowerBound="1"
911 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
912 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
913 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
914 </eAnnotations>
915 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
916 </eOperations>
917 <eOperations name="get_B_for_salary_yearly_class_1" ordered="false" lowerBound="1"
918 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
919 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
920 <details key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 982.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 1266.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 1588.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 1948.8600&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 2347.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 2783.7000&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 3258.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 3771.1800&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 4322.1600&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 4911.3000&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 5538.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 6204.0600&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 6907.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 7649.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 8429.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 9247.5000&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 9675.6300&#xA;&#x9;&#x9;else 10685.8300&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
921 </eAnnotations>
922 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
923 </eOperations>
924 <eOperations name="get_A_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
925 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
926 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
927 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
928 </eAnnotations>
929 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
930 </eOperations>
931 <eOperations name="get_B_for_salary_yearly_class_1A" ordered="false" lowerBound="1"
932 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
933 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
934 <details key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 2826.0000&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 3570.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 4353.4800&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 5174.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 6033.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 6930.9000&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 7866.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 8839.9800&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 9851.7600&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 10901.7000&#xA;&#x9;&#x9;else 11264.4000&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
935 </eAnnotations>
936 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
937 </eOperations>
938 <eOperations name="get_A_for_salary_yearly_class_2" ordered="false" lowerBound="1"
939 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
940 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
941 <details key="body" value="if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
942 </eAnnotations>
943 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
944 </eOperations>
945 <eOperations name="get_B_for_salary_yearly_class_2" ordered="false" lowerBound="1"
946 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
947 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
948 <details key="body" value=" if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 1884.000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 2431.3200&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 3054.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 3754.9200&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 4531.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 5383.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 6312.7200&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 7317.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 8399.5200&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 9557.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 10791.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 12102.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 13488.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 14952.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 16491.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 18107.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 18953.4600&#xA;&#x9;&#x9;else 20963.6600&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
949 </eAnnotations>
950 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
951 </eOperations>
952 <eOperations name="get_A_for_pension_yearly_class_1" ordered="false" lowerBound="1"
953 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
954 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
955 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
956 </eAnnotations>
957 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
958 </eOperations>
959 <eOperations name="get_B_for_pension_yearly_class_1" ordered="false" lowerBound="1"
960 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
961 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
962 <details key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 963.600&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 1242.660&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 1559.880&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 1915.260&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 2308.800&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 2740.500&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 3210.360&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 3718.380&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 4264.560&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 4848.900&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 5471.400&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 6132.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 6830.880&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 7567.860&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 8343.000&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 9156.300&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 9582.030&#xA;&#x9;&#x9;else 10589.830&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
963 </eAnnotations>
964 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
965 </eOperations>
966 <eOperations name="get_A_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
967 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
968 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
969 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
970 </eAnnotations>
971 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
972 </eOperations>
973 <eOperations name="get_B_for_pension_yearly_class_1A" ordered="false" lowerBound="1"
974 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
975 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
976 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 2797.200&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 3534.660&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 4310.280&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 5124.060&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 5976.000&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 6866.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 7794.360&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 8760.780&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 9765.360&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 10808.100&#xA;&#x9;&#x9;else 11168.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
977 </eAnnotations>
978 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
979 </eOperations>
980 <eOperations name="get_A_for_pension_yearly_class_2" ordered="false" lowerBound="1"
981 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
982 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
983 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
984 </eAnnotations>
985 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
986 </eOperations>
987 <eOperations name="get_B_for_pension_yearly_class_2" ordered="false" lowerBound="1"
988 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
989 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
990 <details key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 1864.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 2407.320&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 3026.160&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 3721.320&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 4492.800&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 5340.600&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 6264.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 7265.160&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 8341.920&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 9495.000&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 10724.400&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 12030.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 13412.160&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 14870.520&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 16405.200&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 18016.200&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 18859.860&#xA;&#x9;&#x9;else 20867.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
991 </eAnnotations>
992 <eParameters name="revenu" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
993 </eOperations>
994 <eOperations name="calculate_taxes_per_year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
995 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
996 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
997 </eAnnotations>
998 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
999 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1000 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1001 </eOperations>
1002 <eOperations name="CNS_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1003 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1004 <details key="body" value="0.0305"/>
1005 </eAnnotations>
1006 </eOperations>
1007 <eOperations name="PENSION_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1008 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1009 <details key="body" value="0.08"/>
1010 </eAnnotations>
1011 </eOperations>
1012 <eOperations name="round_lower_fifty_euros" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1013 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1014 <details key="body" value="&#x9;&#x9;if(amount&lt;50) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if (amount>=50 and amount&lt;100) then&#xA;&#x9;&#x9;&#x9;50.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let temp_amount:Real = round_lower_euros(amount) in&#xA;&#x9;&#x9;&#x9;let ch:String=temp_amount.toString()in&#xA;&#x9;&#x9;&#x9;let temp_amount1:Real = temp_amount / 100.0 in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(temp_amount1.round() = temp_amount1.floor()) then&#xA;&#x9;&#x9;&#x9;temp_amount1.floor() * 100.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;(temp_amount1.round() * 100.0) - 50&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1015 </eAnnotations>
1016 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1017 </eOperations>
1018 <eOperations name="getTaxableIncomePerYear" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1019 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1020 <details key="body" value="let gross_salary_year:Real= income.income_per_year() in&#xA;&#x9;&#x9;&#x9;let type:Income_Type=income.income_type in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Employment_Income)) then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in&#xA;&#x9;&#x9;&#x9;let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- sum_deductions_year in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 | &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount &#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true)then&#xA;&#x9;&#x9;&#x9; acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9; )&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;in round_lower_fifty_euros(res)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1021 </eAnnotations>
1022 <eParameters name="income" ordered="false" lowerBound="1" eType="#//Income"/>
1023 </eOperations>
1024 <eOperations name="precision" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1025 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1026 <details key="body" value="&#x9;&#x9;let ch:String=amount.toString() in&#xA;&#x9;&#x9;&#x9;if(ch.indexOf('.')=-1)then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let pos_pt:Integer=ch.indexOf('.') in&#xA;&#x9;&#x9;&#x9;if(pos_pt+degit >=ch.size()) then&#xA;&#x9;&#x9;&#x9;amount &#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let ch1:String=ch.substring(1,pos_pt+degit) in&#xA;&#x9;&#x9;&#x9;ch1.toReal()&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1027 </eAnnotations>
1028 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1029 <eParameters name="degit" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1030 </eOperations>
1031 <eOperations name="MAXIMUM_RATE_FOR_CE_CHILDREN" ordered="false" lowerBound="1"
1032 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1033 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1034 <details key="body" value="3480.0"/>
1035 </eAnnotations>
1036 </eOperations>
1037 <eOperations name="MINIMUM_LEGAL_SALARY" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1038 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1039 <details key="body" value="1921.03"/>
1040 </eAnnotations>
1041 </eOperations>
1042 <eOperations name="MAXIMUM_FLAT_RATE_FOR_ALIMONY" ordered="false" lowerBound="1"
1043 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1044 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1045 <details key="body" value="&#x9;&#x9;&#x9;if(year_divorce>1997)then&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600.0&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;if(year=2009 or year = 2010) then&#xA;&#x9;&#x9;&#x9;23400.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;24000.0&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600.0&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;23400.0&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
1046 </eAnnotations>
1047 <eParameters name="year" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1048 <eParameters name="year_divorce" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1049 </eOperations>
1050 <eOperations name="AEP_FLAT_RATE" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1051 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1052 <details key="body" value="4500.0"/>
1053 </eAnnotations>
1054 </eOperations>
1055 <eOperations name="calculate_taxes_per_year_mixed" ordered="false" lowerBound="1"
1056 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1057 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1058 <details key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1059 </eAnnotations>
1060 <eParameters name="amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1061 <eParameters name="local_amount" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1062 <eParameters name="classe" ordered="false" lowerBound="1" eType="#//Tax_Class_Category"/>
1063 <eParameters name="income_type" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1064 </eOperations>
1065 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" lowerBound="1"
1066 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1067 <eStructuralFeatures xsi:type="ecore:EReference" name="taxPayer" lowerBound="1"
1068 eType="#//Tax_Payer" eOpposite="#//Tax_Payer/from_law"/>
1069 </eClassifiers>
1070 <eClassifiers xsi:type="ecore:EClass" name="Fiscal_Address" eSuperTypes="#//Address"/>
1071 <eClassifiers xsi:type="ecore:EClass" name="Habitual_Address" eSuperTypes="#//Address"/>
1072 <eClassifiers xsi:type="ecore:EClass" name="Marriage_Record" eSuperTypes="#//Legal_Union_Record"/>
1073 <eClassifiers xsi:type="ecore:EClass" name="Non_Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1074 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_assimilated_to_resident"
1075 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1076 defaultValueLiteral="false"/>
1077 </eClassifiers>
1078 <eClassifiers xsi:type="ecore:EClass" name="Partnership_Record" eSuperTypes="#//Legal_Union_Record"/>
1079 <eClassifiers xsi:type="ecore:EClass" name="Resident_Tax_Payer" eSuperTypes="#//Tax_Payer">
1080 <eStructuralFeatures xsi:type="ecore:EAttribute" name="test" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1081 derived="true">
1082 <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1083 <details key="derivation" value="self.oclAsType(Tax_Payer).from_agent.taxation_year=2014"/>
1084 </eAnnotations>
1085 </eStructuralFeatures>
1086 </eClassifiers>
1087 <eClassifiers xsi:type="ecore:EClass" name="Trade_and_Business_Income" eSuperTypes="#//Income_Type"/>
1088 <eClassifiers xsi:type="ecore:EClass" name="Agriculture_and_Forestry_Income" eSuperTypes="#//Income_Type"/>
1089 <eClassifiers xsi:type="ecore:EClass" name="Pensions_and_Annuities_Income" eSuperTypes="#//Income_Type">
1090 <eStructuralFeatures xsi:type="ecore:EAttribute" name="occasional_payement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1091 defaultValueLiteral="false"/>
1092 </eClassifiers>
1093 <eClassifiers xsi:type="ecore:EClass" name="Capital_and_Investments_Income" eSuperTypes="#//Income_Type"/>
1094 <eClassifiers xsi:type="ecore:EClass" name="Employment_Income" eSuperTypes="#//Income_Type"/>
1095 <eClassifiers xsi:type="ecore:EClass" name="Rentals_and_Leases_Income" eSuperTypes="#//Income_Type">
1096 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_periodic" lowerBound="1"
1097 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="true"/>
1098 </eClassifiers>
1099 <eClassifiers xsi:type="ecore:EClass" name="Foreign_Income" eSuperTypes="#//Income"/>
1100 <eClassifiers xsi:type="ecore:EClass" name="Local_Income" eSuperTypes="#//Income"/>
1101 <eClassifiers xsi:type="ecore:EClass" name="CIM" eSuperTypes="#//Income_Tax_Credit"/>
1102 <eClassifiers xsi:type="ecore:EClass" name="CIP" eSuperTypes="#//Income_Tax_Credit"/>
1103 <eClassifiers xsi:type="ecore:EClass" name="CIS" eSuperTypes="#//Income_Tax_Credit"/>
1104 <eClassifiers xsi:type="ecore:EClass" name="FD" eSuperTypes="#//Professional_Expenses_Deduction">
1105 <eOperations name="compute_distance_unit_between_home_and_workpalce" lowerBound="1"
1106 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1107 <eStructuralFeatures xsi:type="ecore:EAttribute" name="distance_declared_in_january"
1108 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1109 <eStructuralFeatures xsi:type="ecore:EAttribute" name="calculated_distance" lowerBound="1"
1110 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" derived="true"/>
1111 </eClassifiers>
1112 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expenses_Deduction"/>
1113 <eClassifiers xsi:type="ecore:EClass" name="FO" eSuperTypes="#//Professional_Expenses_Deduction">
1114 <eOperations name="compute_disability_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1115 <eOperations name="compute_regular_flat_rate" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1116 <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate_type_for_FO" lowerBound="1"
1117 eType="#//Type_of_Rate" derived="true"/>
1118 </eClassifiers>
1119 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Permanent_Expense" eSuperTypes="#//DS">
1120 <eStructuralFeatures xsi:type="ecore:EAttribute" name="permanent_expense_category"
1121 lowerBound="1" eType="#//Category_of_Permanent_Expense"/>
1122 </eClassifiers>
1123 <eClassifiers xsi:type="ecore:EClass" name="DS">
1124 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount"
1125 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1126 <eStructuralFeatures xsi:type="ecore:EAttribute" name="id3" ordered="false" lowerBound="1"
1127 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
1128 </eClassifiers>
1129 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Permanent_Expense">
1130 <eLiterals name="MISCELLANEOUS_DEBT" literal="MISCELLANEOUS_DEBT"/>
1131 <eLiterals name="ALIMONY" value="1" literal="ALIMONY"/>
1132 </eClassifiers>
1133 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Interest_Expense" eSuperTypes="#//DS">
1134 <eOperations name="compute_maximum_deductible_amount" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1135 <eParameters name="IN_children_with_allowances" ordered="false" upperBound="-1"
1136 eType="#//Dependent"/>
1137 <eParameters name="IN_legal_union" ordered="false" upperBound="-1" eType="#//Legal_Union_Record"/>
1138 </eOperations>
1139 </eClassifiers>
1140 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Health_and_Pension_Insurance"
1141 eSuperTypes="#//DS">
1142 <eStructuralFeatures xsi:type="ecore:EAttribute" name="insurance_category" lowerBound="1"
1143 eType="#//Category_of_Health_and_Pension_Insurances"/>
1144 </eClassifiers>
1145 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Health_and_Pension_Insurances">
1146 <eLiterals name="MANDATORY_HEALTH_AND_PENSION_INSURANCE" literal="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
1147 <eLiterals name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" value="1" literal="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
1148 <eLiterals name="CONTINUED_HEALTH_AND_PENSION_INSURANCE" value="2" literal="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
1149 </eClassifiers>
1150 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Private_Insurance_and_Plan" eSuperTypes="#//DS">
1151 <eOperations name="compute_increase_for_life_insurance" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1152 <eOperations name="compute_maximum_deductible_amount_for_private_insruance" lowerBound="1"
1153 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1154 <eOperations name="compute_maximum_deductible_amount_for_old_age_pension_plan"
1155 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1156 <eStructuralFeatures xsi:type="ecore:EAttribute" name="private_insurance_and_plan_category"
1157 lowerBound="1" eType="#//Category_of_Private_Insurance_and_Plan"/>
1158 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increase_for_life_insurance"
1159 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1160 derived="true"/>
1161 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_private_insurance"
1162 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1163 derived="true"/>
1164 <eStructuralFeatures xsi:type="ecore:EAttribute" name="maximum_deductible_amount_for_old_age_pension_plan"
1165 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
1166 derived="true"/>
1167 </eClassifiers>
1168 <eClassifiers xsi:type="ecore:EEnum" name="Category_of_Private_Insurance_and_Plan">
1169 <eLiterals name="PRIVATE_INSURANCE" literal="PRIVATE_INSURANCE"/>
1170 <eLiterals name="PRIVATE_LIFE_INSURANCE" value="1" literal="PRIVATE_LIFE_INSURANCE"/>
1171 <eLiterals name="COMPANY_MEMBERS_PRIVATE_INSURANCE" value="2" literal="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
1172 <eLiterals name="HOUSING_SAVING_PLAN" value="3" literal="HOUSING_SAVING_PLAN"/>
1173 <eLiterals name="OLD_AGE_PENSION_PLAN" value="4" literal="OLD_AGE_PENSION_PLAN"/>
1174 </eClassifiers>
1175 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Loss_Carryforward" eSuperTypes="#//DS"/>
1176 <eClassifiers xsi:type="ecore:EClass" name="DS_for_Donation" eSuperTypes="#//DS"/>
1177 <eClassifiers xsi:type="ecore:EClass" name="Permanent_Expense" eSuperTypes="#//Special_Expense_DS">
1178 <eOperations name="is_expense_eligible_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
1179 <eParameters name="IN_agent_response" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1180 </eOperations>
1181 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1182 eType="#//Category_of_Permanent_Expense"/>
1183 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_eligible_for_deduction"
1184 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1185 defaultValueLiteral="false" derived="true"/>
1186 </eClassifiers>
1187 <eClassifiers xsi:type="ecore:EClass" name="Special_Expense_DS" eSuperTypes="#//Expense"/>
1188 <eClassifiers xsi:type="ecore:EClass" name="Interest_Expense" eSuperTypes="#//Special_Expense_DS"/>
1189 <eClassifiers xsi:type="ecore:EClass" name="Private_Insurance_and_Plan" eSuperTypes="#//Special_Expense_DS">
1190 <eOperations name="is_private_insurance_and_plan_eligible_for_deduction" lowerBound="1"
1191 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1192 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1193 eType="#//Category_of_Private_Insurance_and_Plan"/>
1194 <eStructuralFeatures xsi:type="ecore:EAttribute" name="duration_of_contract" lowerBound="1"
1195 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
1196 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_private_insurance_and_plan_eligible_for_deduction"
1197 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1198 defaultValueLiteral="false" derived="true"/>
1199 </eClassifiers>
1200 <eClassifiers xsi:type="ecore:EClass" name="Health_and_Pension_Insurance" eSuperTypes="#//Special_Expense_DS">
1201 <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" lowerBound="1"
1202 eType="#//Category_of_Health_and_Pension_Insurances"/>
1203 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_related_to_additional_salary"
1204 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1205 defaultValueLiteral="false"/>
1206 </eClassifiers>
1207 <eClassifiers xsi:type="ecore:EClass" name="Donation" eSuperTypes="#//Special_Expense_DS">
1208 <eOperations name="get_beneficiary_eligibility_for_deduction" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1209 <eStructuralFeatures xsi:type="ecore:EAttribute" name="beneficiary1" lowerBound="1"
1210 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
1211 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_beneficiary_eligible"
1212 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1213 defaultValueLiteral="false" derived="true"/>
1214 <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_donation_reported" lowerBound="1"
1215 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1216 </eClassifiers>
1217 <eClassifiers xsi:type="ecore:EClass" name="Loss_Carryforward" eSuperTypes="#//Special_Expense_DS">
1218 <eOperations name="is_accountability_regular" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1219 <eOperations name="is_compensated_by_other_means" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1220 <eOperations name="has_been_tax_payer_partner_in_business" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1221 <eOperations name="has_tax_payer_inherited_business_ownership" lowerBound="1"
1222 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1223 <eStructuralFeatures xsi:type="ecore:EAttribute" name="regular_accountability"
1224 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1225 derived="true"/>
1226 <eStructuralFeatures xsi:type="ecore:EAttribute" name="compensation_by_other_means"
1227 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1228 derived="true"/>
1229 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_inherited_business_ownership"
1230 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1231 defaultValueLiteral="false" derived="true"/>
1232 <eStructuralFeatures xsi:type="ecore:EAttribute" name="tax_payer_has_been_partner_in_business"
1233 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
1234 defaultValueLiteral="true" derived="true"/>
1235 </eClassifiers>
1236 <eClassifiers xsi:type="ecore:EClass" name="Spousal_Expense_AC" eSuperTypes="#//Expense"/>
1237 <eClassifiers xsi:type="ecore:EClass" name="Extraordinary_Expense_CE" eSuperTypes="#//Expense">
1238 <eOperations name="is_above_thresholded_deduction_percentage_for_CE" lowerBound="1"
1239 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
1240 <eOperations name="compute_thresholded_deduction_percentage_for_CE" lowerBound="1"
1241 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
1242 <eParameters name="IN_thresholded_deduction_percentage" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1243 </eOperations>
1244 <eStructuralFeatures xsi:type="ecore:EAttribute" name="thresholded_deduction_percentage"
1245 lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
1246 <eStructuralFeatures xsi:type="ecore:EAttribute" name="ce_type" lowerBound="1"
1247 eType="#//CE_Type"/>
1248 </eClassifiers>
1249 <eClassifiers xsi:type="ecore:EClass" name="Travel_Expense_FD" eSuperTypes="#//Professional_Expense"/>
1250 <eClassifiers xsi:type="ecore:EClass" name="Professional_Expense" eSuperTypes="#//Expense"/>
1251 <eClassifiers xsi:type="ecore:EClass" name="Miscellaneous_Expense_FO" eSuperTypes="#//Professional_Expense"/>
1252 <eClassifiers xsi:type="ecore:EEnum" name="Legal_Union_Types">
1253 <eLiterals name="MARIAGE"/>
1254 <eLiterals name="PARTNERSHIP" value="1"/>
1255 <eLiterals name="OTHER" value="2"/>
1256 </eClassifiers>
1257</ecore:EPackage>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationFactoryImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationFactoryImpl.java
new file mode 100644
index 00000000..36f4493c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationFactoryImpl.java
@@ -0,0 +1,1144 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.*;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.EDataType;
9import org.eclipse.emf.ecore.EObject;
10import org.eclipse.emf.ecore.EPackage;
11
12import org.eclipse.emf.ecore.impl.EFactoryImpl;
13
14import org.eclipse.emf.ecore.plugin.EcorePlugin;
15
16/**
17 * <!-- begin-user-doc -->
18 * An implementation of the model <b>Factory</b>.
19 * <!-- end-user-doc -->
20 * @generated
21 */
22public class TaxationFactoryImpl extends EFactoryImpl implements TaxationFactory {
23 /**
24 * Creates the default factory implementation.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 public static TaxationFactory init() {
30 try {
31 TaxationFactory theTaxationFactory = (TaxationFactory)EPackage.Registry.INSTANCE.getEFactory(TaxationPackage.eNS_URI);
32 if (theTaxationFactory != null) {
33 return theTaxationFactory;
34 }
35 }
36 catch (Exception exception) {
37 EcorePlugin.INSTANCE.log(exception);
38 }
39 return new TaxationFactoryImpl();
40 }
41
42 /**
43 * Creates an instance of the factory.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 public TaxationFactoryImpl() {
49 super();
50 }
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 @Override
58 public EObject create(EClass eClass) {
59 switch (eClass.getClassifierID()) {
60 case TaxationPackage.INCOME_TAX: return createIncome_Tax();
61 case TaxationPackage.PHYSICAL_PERSON: return createPhysical_Person();
62 case TaxationPackage.ADDRESS: return createAddress();
63 case TaxationPackage.EXPENSE: return createExpense();
64 case TaxationPackage.DEPENDENT: return createDependent();
65 case TaxationPackage.EXTERNAL_ALLOWANCE: return createExternal_Allowance();
66 case TaxationPackage.HOUSEHOLD: return createHousehold();
67 case TaxationPackage.TAX_PROPERTY: return createTax_Property();
68 case TaxationPackage.FROM_AGENT: return createFromAgent();
69 case TaxationPackage.TAX_CARD: return createTax_Card();
70 case TaxationPackage.INCOME_TAX_CREDIT: return createIncome_Tax_Credit();
71 case TaxationPackage.INCOME_DETAIL: return createIncome_Detail();
72 case TaxationPackage.FROM_LAW: return createFromLaw();
73 case TaxationPackage.FISCAL_ADDRESS: return createFiscal_Address();
74 case TaxationPackage.HABITUAL_ADDRESS: return createHabitual_Address();
75 case TaxationPackage.MARRIAGE_RECORD: return createMarriage_Record();
76 case TaxationPackage.NON_RESIDENT_TAX_PAYER: return createNon_Resident_Tax_Payer();
77 case TaxationPackage.PARTNERSHIP_RECORD: return createPartnership_Record();
78 case TaxationPackage.RESIDENT_TAX_PAYER: return createResident_Tax_Payer();
79 case TaxationPackage.TRADE_AND_BUSINESS_INCOME: return createTrade_and_Business_Income();
80 case TaxationPackage.AGRICULTURE_AND_FORESTRY_INCOME: return createAgriculture_and_Forestry_Income();
81 case TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME: return createPensions_and_Annuities_Income();
82 case TaxationPackage.CAPITAL_AND_INVESTMENTS_INCOME: return createCapital_and_Investments_Income();
83 case TaxationPackage.EMPLOYMENT_INCOME: return createEmployment_Income();
84 case TaxationPackage.RENTALS_AND_LEASES_INCOME: return createRentals_and_Leases_Income();
85 case TaxationPackage.FOREIGN_INCOME: return createForeign_Income();
86 case TaxationPackage.LOCAL_INCOME: return createLocal_Income();
87 case TaxationPackage.CIM: return createCIM();
88 case TaxationPackage.CIP: return createCIP();
89 case TaxationPackage.CIS: return createCIS();
90 case TaxationPackage.FD: return createFD();
91 case TaxationPackage.PROFESSIONAL_EXPENSES_DEDUCTION: return createProfessional_Expenses_Deduction();
92 case TaxationPackage.FO: return createFO();
93 case TaxationPackage.DS_FOR_PERMANENT_EXPENSE: return createDS_for_Permanent_Expense();
94 case TaxationPackage.DS: return createDS();
95 case TaxationPackage.DS_FOR_INTEREST_EXPENSE: return createDS_for_Interest_Expense();
96 case TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE: return createDS_for_Health_and_Pension_Insurance();
97 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN: return createDS_for_Private_Insurance_and_Plan();
98 case TaxationPackage.DS_FOR_LOSS_CARRYFORWARD: return createDS_for_Loss_Carryforward();
99 case TaxationPackage.DS_FOR_DONATION: return createDS_for_Donation();
100 case TaxationPackage.PERMANENT_EXPENSE: return createPermanent_Expense();
101 case TaxationPackage.SPECIAL_EXPENSE_DS: return createSpecial_Expense_DS();
102 case TaxationPackage.INTEREST_EXPENSE: return createInterest_Expense();
103 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN: return createPrivate_Insurance_and_Plan();
104 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE: return createHealth_and_Pension_Insurance();
105 case TaxationPackage.DONATION: return createDonation();
106 case TaxationPackage.LOSS_CARRYFORWARD: return createLoss_Carryforward();
107 case TaxationPackage.SPOUSAL_EXPENSE_AC: return createSpousal_Expense_AC();
108 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE: return createExtraordinary_Expense_CE();
109 case TaxationPackage.TRAVEL_EXPENSE_FD: return createTravel_Expense_FD();
110 case TaxationPackage.PROFESSIONAL_EXPENSE: return createProfessional_Expense();
111 case TaxationPackage.MISCELLANEOUS_EXPENSE_FO: return createMiscellaneous_Expense_FO();
112 default:
113 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
114 }
115 }
116
117 /**
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @generated
121 */
122 @Override
123 public Object createFromString(EDataType eDataType, String initialValue) {
124 switch (eDataType.getClassifierID()) {
125 case TaxationPackage.GRANTOR:
126 return createGrantorFromString(eDataType, initialValue);
127 case TaxationPackage.DISABILITY_TYPES:
128 return createDisability_TypesFromString(eDataType, initialValue);
129 case TaxationPackage.COUNTRY:
130 return createCountryFromString(eDataType, initialValue);
131 case TaxationPackage.TAX_CARD_TYPE:
132 return createTax_Card_TypeFromString(eDataType, initialValue);
133 case TaxationPackage.TAX_OFFICE:
134 return createTax_OfficeFromString(eDataType, initialValue);
135 case TaxationPackage.TAX_CLASS_CATEGORY:
136 return createTax_Class_CategoryFromString(eDataType, initialValue);
137 case TaxationPackage.JOB_ACTIVITY:
138 return createJob_ActivityFromString(eDataType, initialValue);
139 case TaxationPackage.TOWN:
140 return createTownFromString(eDataType, initialValue);
141 case TaxationPackage.TYPE_OF_RATE:
142 return createType_of_RateFromString(eDataType, initialValue);
143 case TaxationPackage.CE_TYPE:
144 return createCE_TypeFromString(eDataType, initialValue);
145 case TaxationPackage.EXPENSE_PURPOSE:
146 return createExpense_PurposeFromString(eDataType, initialValue);
147 case TaxationPackage.DEPENDENT_TYPE:
148 return createDependent_TypeFromString(eDataType, initialValue);
149 case TaxationPackage.SEPARATION_CAUSES:
150 return createSeparation_CausesFromString(eDataType, initialValue);
151 case TaxationPackage.CATEGORY_OF_PERMANENT_EXPENSE:
152 return createCategory_of_Permanent_ExpenseFromString(eDataType, initialValue);
153 case TaxationPackage.CATEGORY_OF_HEALTH_AND_PENSION_INSURANCES:
154 return createCategory_of_Health_and_Pension_InsurancesFromString(eDataType, initialValue);
155 case TaxationPackage.CATEGORY_OF_PRIVATE_INSURANCE_AND_PLAN:
156 return createCategory_of_Private_Insurance_and_PlanFromString(eDataType, initialValue);
157 case TaxationPackage.LEGAL_UNION_TYPES:
158 return createLegal_Union_TypesFromString(eDataType, initialValue);
159 default:
160 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
161 }
162 }
163
164 /**
165 * <!-- begin-user-doc -->
166 * <!-- end-user-doc -->
167 * @generated
168 */
169 @Override
170 public String convertToString(EDataType eDataType, Object instanceValue) {
171 switch (eDataType.getClassifierID()) {
172 case TaxationPackage.GRANTOR:
173 return convertGrantorToString(eDataType, instanceValue);
174 case TaxationPackage.DISABILITY_TYPES:
175 return convertDisability_TypesToString(eDataType, instanceValue);
176 case TaxationPackage.COUNTRY:
177 return convertCountryToString(eDataType, instanceValue);
178 case TaxationPackage.TAX_CARD_TYPE:
179 return convertTax_Card_TypeToString(eDataType, instanceValue);
180 case TaxationPackage.TAX_OFFICE:
181 return convertTax_OfficeToString(eDataType, instanceValue);
182 case TaxationPackage.TAX_CLASS_CATEGORY:
183 return convertTax_Class_CategoryToString(eDataType, instanceValue);
184 case TaxationPackage.JOB_ACTIVITY:
185 return convertJob_ActivityToString(eDataType, instanceValue);
186 case TaxationPackage.TOWN:
187 return convertTownToString(eDataType, instanceValue);
188 case TaxationPackage.TYPE_OF_RATE:
189 return convertType_of_RateToString(eDataType, instanceValue);
190 case TaxationPackage.CE_TYPE:
191 return convertCE_TypeToString(eDataType, instanceValue);
192 case TaxationPackage.EXPENSE_PURPOSE:
193 return convertExpense_PurposeToString(eDataType, instanceValue);
194 case TaxationPackage.DEPENDENT_TYPE:
195 return convertDependent_TypeToString(eDataType, instanceValue);
196 case TaxationPackage.SEPARATION_CAUSES:
197 return convertSeparation_CausesToString(eDataType, instanceValue);
198 case TaxationPackage.CATEGORY_OF_PERMANENT_EXPENSE:
199 return convertCategory_of_Permanent_ExpenseToString(eDataType, instanceValue);
200 case TaxationPackage.CATEGORY_OF_HEALTH_AND_PENSION_INSURANCES:
201 return convertCategory_of_Health_and_Pension_InsurancesToString(eDataType, instanceValue);
202 case TaxationPackage.CATEGORY_OF_PRIVATE_INSURANCE_AND_PLAN:
203 return convertCategory_of_Private_Insurance_and_PlanToString(eDataType, instanceValue);
204 case TaxationPackage.LEGAL_UNION_TYPES:
205 return convertLegal_Union_TypesToString(eDataType, instanceValue);
206 default:
207 throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
208 }
209 }
210
211 /**
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @generated
215 */
216 @Override
217 public Income_Tax createIncome_Tax() {
218 Income_TaxImpl income_Tax = new Income_TaxImpl();
219 return income_Tax;
220 }
221
222 /**
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @generated
226 */
227 @Override
228 public Physical_Person createPhysical_Person() {
229 Physical_PersonImpl physical_Person = new Physical_PersonImpl();
230 return physical_Person;
231 }
232
233 /**
234 * <!-- begin-user-doc -->
235 * <!-- end-user-doc -->
236 * @generated
237 */
238 @Override
239 public Address createAddress() {
240 AddressImpl address = new AddressImpl();
241 return address;
242 }
243
244 /**
245 * <!-- begin-user-doc -->
246 * <!-- end-user-doc -->
247 * @generated
248 */
249 @Override
250 public Expense createExpense() {
251 ExpenseImpl expense = new ExpenseImpl();
252 return expense;
253 }
254
255 /**
256 * <!-- begin-user-doc -->
257 * <!-- end-user-doc -->
258 * @generated
259 */
260 @Override
261 public Dependent createDependent() {
262 DependentImpl dependent = new DependentImpl();
263 return dependent;
264 }
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 @Override
272 public External_Allowance createExternal_Allowance() {
273 External_AllowanceImpl external_Allowance = new External_AllowanceImpl();
274 return external_Allowance;
275 }
276
277 /**
278 * <!-- begin-user-doc -->
279 * <!-- end-user-doc -->
280 * @generated
281 */
282 @Override
283 public Household createHousehold() {
284 HouseholdImpl household = new HouseholdImpl();
285 return household;
286 }
287
288 /**
289 * <!-- begin-user-doc -->
290 * <!-- end-user-doc -->
291 * @generated
292 */
293 @Override
294 public Tax_Property createTax_Property() {
295 Tax_PropertyImpl tax_Property = new Tax_PropertyImpl();
296 return tax_Property;
297 }
298
299 /**
300 * <!-- begin-user-doc -->
301 * <!-- end-user-doc -->
302 * @generated
303 */
304 @Override
305 public FromAgent createFromAgent() {
306 FromAgentImpl fromAgent = new FromAgentImpl();
307 return fromAgent;
308 }
309
310 /**
311 * <!-- begin-user-doc -->
312 * <!-- end-user-doc -->
313 * @generated
314 */
315 @Override
316 public Tax_Card createTax_Card() {
317 Tax_CardImpl tax_Card = new Tax_CardImpl();
318 return tax_Card;
319 }
320
321 /**
322 * <!-- begin-user-doc -->
323 * <!-- end-user-doc -->
324 * @generated
325 */
326 @Override
327 public Income_Tax_Credit createIncome_Tax_Credit() {
328 Income_Tax_CreditImpl income_Tax_Credit = new Income_Tax_CreditImpl();
329 return income_Tax_Credit;
330 }
331
332 /**
333 * <!-- begin-user-doc -->
334 * <!-- end-user-doc -->
335 * @generated
336 */
337 @Override
338 public Income_Detail createIncome_Detail() {
339 Income_DetailImpl income_Detail = new Income_DetailImpl();
340 return income_Detail;
341 }
342
343 /**
344 * <!-- begin-user-doc -->
345 * <!-- end-user-doc -->
346 * @generated
347 */
348 @Override
349 public FromLaw createFromLaw() {
350 FromLawImpl fromLaw = new FromLawImpl();
351 return fromLaw;
352 }
353
354 /**
355 * <!-- begin-user-doc -->
356 * <!-- end-user-doc -->
357 * @generated
358 */
359 @Override
360 public Fiscal_Address createFiscal_Address() {
361 Fiscal_AddressImpl fiscal_Address = new Fiscal_AddressImpl();
362 return fiscal_Address;
363 }
364
365 /**
366 * <!-- begin-user-doc -->
367 * <!-- end-user-doc -->
368 * @generated
369 */
370 @Override
371 public Habitual_Address createHabitual_Address() {
372 Habitual_AddressImpl habitual_Address = new Habitual_AddressImpl();
373 return habitual_Address;
374 }
375
376 /**
377 * <!-- begin-user-doc -->
378 * <!-- end-user-doc -->
379 * @generated
380 */
381 @Override
382 public Marriage_Record createMarriage_Record() {
383 Marriage_RecordImpl marriage_Record = new Marriage_RecordImpl();
384 return marriage_Record;
385 }
386
387 /**
388 * <!-- begin-user-doc -->
389 * <!-- end-user-doc -->
390 * @generated
391 */
392 @Override
393 public Non_Resident_Tax_Payer createNon_Resident_Tax_Payer() {
394 Non_Resident_Tax_PayerImpl non_Resident_Tax_Payer = new Non_Resident_Tax_PayerImpl();
395 return non_Resident_Tax_Payer;
396 }
397
398 /**
399 * <!-- begin-user-doc -->
400 * <!-- end-user-doc -->
401 * @generated
402 */
403 @Override
404 public Partnership_Record createPartnership_Record() {
405 Partnership_RecordImpl partnership_Record = new Partnership_RecordImpl();
406 return partnership_Record;
407 }
408
409 /**
410 * <!-- begin-user-doc -->
411 * <!-- end-user-doc -->
412 * @generated
413 */
414 @Override
415 public Resident_Tax_Payer createResident_Tax_Payer() {
416 Resident_Tax_PayerImpl resident_Tax_Payer = new Resident_Tax_PayerImpl();
417 return resident_Tax_Payer;
418 }
419
420 /**
421 * <!-- begin-user-doc -->
422 * <!-- end-user-doc -->
423 * @generated
424 */
425 @Override
426 public Trade_and_Business_Income createTrade_and_Business_Income() {
427 Trade_and_Business_IncomeImpl trade_and_Business_Income = new Trade_and_Business_IncomeImpl();
428 return trade_and_Business_Income;
429 }
430
431 /**
432 * <!-- begin-user-doc -->
433 * <!-- end-user-doc -->
434 * @generated
435 */
436 @Override
437 public Agriculture_and_Forestry_Income createAgriculture_and_Forestry_Income() {
438 Agriculture_and_Forestry_IncomeImpl agriculture_and_Forestry_Income = new Agriculture_and_Forestry_IncomeImpl();
439 return agriculture_and_Forestry_Income;
440 }
441
442 /**
443 * <!-- begin-user-doc -->
444 * <!-- end-user-doc -->
445 * @generated
446 */
447 @Override
448 public Pensions_and_Annuities_Income createPensions_and_Annuities_Income() {
449 Pensions_and_Annuities_IncomeImpl pensions_and_Annuities_Income = new Pensions_and_Annuities_IncomeImpl();
450 return pensions_and_Annuities_Income;
451 }
452
453 /**
454 * <!-- begin-user-doc -->
455 * <!-- end-user-doc -->
456 * @generated
457 */
458 @Override
459 public Capital_and_Investments_Income createCapital_and_Investments_Income() {
460 Capital_and_Investments_IncomeImpl capital_and_Investments_Income = new Capital_and_Investments_IncomeImpl();
461 return capital_and_Investments_Income;
462 }
463
464 /**
465 * <!-- begin-user-doc -->
466 * <!-- end-user-doc -->
467 * @generated
468 */
469 @Override
470 public Employment_Income createEmployment_Income() {
471 Employment_IncomeImpl employment_Income = new Employment_IncomeImpl();
472 return employment_Income;
473 }
474
475 /**
476 * <!-- begin-user-doc -->
477 * <!-- end-user-doc -->
478 * @generated
479 */
480 @Override
481 public Rentals_and_Leases_Income createRentals_and_Leases_Income() {
482 Rentals_and_Leases_IncomeImpl rentals_and_Leases_Income = new Rentals_and_Leases_IncomeImpl();
483 return rentals_and_Leases_Income;
484 }
485
486 /**
487 * <!-- begin-user-doc -->
488 * <!-- end-user-doc -->
489 * @generated
490 */
491 @Override
492 public Foreign_Income createForeign_Income() {
493 Foreign_IncomeImpl foreign_Income = new Foreign_IncomeImpl();
494 return foreign_Income;
495 }
496
497 /**
498 * <!-- begin-user-doc -->
499 * <!-- end-user-doc -->
500 * @generated
501 */
502 @Override
503 public Local_Income createLocal_Income() {
504 Local_IncomeImpl local_Income = new Local_IncomeImpl();
505 return local_Income;
506 }
507
508 /**
509 * <!-- begin-user-doc -->
510 * <!-- end-user-doc -->
511 * @generated
512 */
513 @Override
514 public CIM createCIM() {
515 CIMImpl cim = new CIMImpl();
516 return cim;
517 }
518
519 /**
520 * <!-- begin-user-doc -->
521 * <!-- end-user-doc -->
522 * @generated
523 */
524 @Override
525 public CIP createCIP() {
526 CIPImpl cip = new CIPImpl();
527 return cip;
528 }
529
530 /**
531 * <!-- begin-user-doc -->
532 * <!-- end-user-doc -->
533 * @generated
534 */
535 @Override
536 public CIS createCIS() {
537 CISImpl cis = new CISImpl();
538 return cis;
539 }
540
541 /**
542 * <!-- begin-user-doc -->
543 * <!-- end-user-doc -->
544 * @generated
545 */
546 @Override
547 public FD createFD() {
548 FDImpl fd = new FDImpl();
549 return fd;
550 }
551
552 /**
553 * <!-- begin-user-doc -->
554 * <!-- end-user-doc -->
555 * @generated
556 */
557 @Override
558 public Professional_Expenses_Deduction createProfessional_Expenses_Deduction() {
559 Professional_Expenses_DeductionImpl professional_Expenses_Deduction = new Professional_Expenses_DeductionImpl();
560 return professional_Expenses_Deduction;
561 }
562
563 /**
564 * <!-- begin-user-doc -->
565 * <!-- end-user-doc -->
566 * @generated
567 */
568 @Override
569 public FO createFO() {
570 FOImpl fo = new FOImpl();
571 return fo;
572 }
573
574 /**
575 * <!-- begin-user-doc -->
576 * <!-- end-user-doc -->
577 * @generated
578 */
579 @Override
580 public DS_for_Permanent_Expense createDS_for_Permanent_Expense() {
581 DS_for_Permanent_ExpenseImpl dS_for_Permanent_Expense = new DS_for_Permanent_ExpenseImpl();
582 return dS_for_Permanent_Expense;
583 }
584
585 /**
586 * <!-- begin-user-doc -->
587 * <!-- end-user-doc -->
588 * @generated
589 */
590 @Override
591 public DS createDS() {
592 DSImpl ds = new DSImpl();
593 return ds;
594 }
595
596 /**
597 * <!-- begin-user-doc -->
598 * <!-- end-user-doc -->
599 * @generated
600 */
601 @Override
602 public DS_for_Interest_Expense createDS_for_Interest_Expense() {
603 DS_for_Interest_ExpenseImpl dS_for_Interest_Expense = new DS_for_Interest_ExpenseImpl();
604 return dS_for_Interest_Expense;
605 }
606
607 /**
608 * <!-- begin-user-doc -->
609 * <!-- end-user-doc -->
610 * @generated
611 */
612 @Override
613 public DS_for_Health_and_Pension_Insurance createDS_for_Health_and_Pension_Insurance() {
614 DS_for_Health_and_Pension_InsuranceImpl dS_for_Health_and_Pension_Insurance = new DS_for_Health_and_Pension_InsuranceImpl();
615 return dS_for_Health_and_Pension_Insurance;
616 }
617
618 /**
619 * <!-- begin-user-doc -->
620 * <!-- end-user-doc -->
621 * @generated
622 */
623 @Override
624 public DS_for_Private_Insurance_and_Plan createDS_for_Private_Insurance_and_Plan() {
625 DS_for_Private_Insurance_and_PlanImpl dS_for_Private_Insurance_and_Plan = new DS_for_Private_Insurance_and_PlanImpl();
626 return dS_for_Private_Insurance_and_Plan;
627 }
628
629 /**
630 * <!-- begin-user-doc -->
631 * <!-- end-user-doc -->
632 * @generated
633 */
634 @Override
635 public DS_for_Loss_Carryforward createDS_for_Loss_Carryforward() {
636 DS_for_Loss_CarryforwardImpl dS_for_Loss_Carryforward = new DS_for_Loss_CarryforwardImpl();
637 return dS_for_Loss_Carryforward;
638 }
639
640 /**
641 * <!-- begin-user-doc -->
642 * <!-- end-user-doc -->
643 * @generated
644 */
645 @Override
646 public DS_for_Donation createDS_for_Donation() {
647 DS_for_DonationImpl dS_for_Donation = new DS_for_DonationImpl();
648 return dS_for_Donation;
649 }
650
651 /**
652 * <!-- begin-user-doc -->
653 * <!-- end-user-doc -->
654 * @generated
655 */
656 @Override
657 public Permanent_Expense createPermanent_Expense() {
658 Permanent_ExpenseImpl permanent_Expense = new Permanent_ExpenseImpl();
659 return permanent_Expense;
660 }
661
662 /**
663 * <!-- begin-user-doc -->
664 * <!-- end-user-doc -->
665 * @generated
666 */
667 @Override
668 public Special_Expense_DS createSpecial_Expense_DS() {
669 Special_Expense_DSImpl special_Expense_DS = new Special_Expense_DSImpl();
670 return special_Expense_DS;
671 }
672
673 /**
674 * <!-- begin-user-doc -->
675 * <!-- end-user-doc -->
676 * @generated
677 */
678 @Override
679 public Interest_Expense createInterest_Expense() {
680 Interest_ExpenseImpl interest_Expense = new Interest_ExpenseImpl();
681 return interest_Expense;
682 }
683
684 /**
685 * <!-- begin-user-doc -->
686 * <!-- end-user-doc -->
687 * @generated
688 */
689 @Override
690 public Private_Insurance_and_Plan createPrivate_Insurance_and_Plan() {
691 Private_Insurance_and_PlanImpl private_Insurance_and_Plan = new Private_Insurance_and_PlanImpl();
692 return private_Insurance_and_Plan;
693 }
694
695 /**
696 * <!-- begin-user-doc -->
697 * <!-- end-user-doc -->
698 * @generated
699 */
700 @Override
701 public Health_and_Pension_Insurance createHealth_and_Pension_Insurance() {
702 Health_and_Pension_InsuranceImpl health_and_Pension_Insurance = new Health_and_Pension_InsuranceImpl();
703 return health_and_Pension_Insurance;
704 }
705
706 /**
707 * <!-- begin-user-doc -->
708 * <!-- end-user-doc -->
709 * @generated
710 */
711 @Override
712 public Donation createDonation() {
713 DonationImpl donation = new DonationImpl();
714 return donation;
715 }
716
717 /**
718 * <!-- begin-user-doc -->
719 * <!-- end-user-doc -->
720 * @generated
721 */
722 @Override
723 public Loss_Carryforward createLoss_Carryforward() {
724 Loss_CarryforwardImpl loss_Carryforward = new Loss_CarryforwardImpl();
725 return loss_Carryforward;
726 }
727
728 /**
729 * <!-- begin-user-doc -->
730 * <!-- end-user-doc -->
731 * @generated
732 */
733 @Override
734 public Spousal_Expense_AC createSpousal_Expense_AC() {
735 Spousal_Expense_ACImpl spousal_Expense_AC = new Spousal_Expense_ACImpl();
736 return spousal_Expense_AC;
737 }
738
739 /**
740 * <!-- begin-user-doc -->
741 * <!-- end-user-doc -->
742 * @generated
743 */
744 @Override
745 public Extraordinary_Expense_CE createExtraordinary_Expense_CE() {
746 Extraordinary_Expense_CEImpl extraordinary_Expense_CE = new Extraordinary_Expense_CEImpl();
747 return extraordinary_Expense_CE;
748 }
749
750 /**
751 * <!-- begin-user-doc -->
752 * <!-- end-user-doc -->
753 * @generated
754 */
755 @Override
756 public Travel_Expense_FD createTravel_Expense_FD() {
757 Travel_Expense_FDImpl travel_Expense_FD = new Travel_Expense_FDImpl();
758 return travel_Expense_FD;
759 }
760
761 /**
762 * <!-- begin-user-doc -->
763 * <!-- end-user-doc -->
764 * @generated
765 */
766 @Override
767 public Professional_Expense createProfessional_Expense() {
768 Professional_ExpenseImpl professional_Expense = new Professional_ExpenseImpl();
769 return professional_Expense;
770 }
771
772 /**
773 * <!-- begin-user-doc -->
774 * <!-- end-user-doc -->
775 * @generated
776 */
777 @Override
778 public Miscellaneous_Expense_FO createMiscellaneous_Expense_FO() {
779 Miscellaneous_Expense_FOImpl miscellaneous_Expense_FO = new Miscellaneous_Expense_FOImpl();
780 return miscellaneous_Expense_FO;
781 }
782
783 /**
784 * <!-- begin-user-doc -->
785 * <!-- end-user-doc -->
786 * @generated
787 */
788 public Grantor createGrantorFromString(EDataType eDataType, String initialValue) {
789 Grantor result = Grantor.get(initialValue);
790 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
791 return result;
792 }
793
794 /**
795 * <!-- begin-user-doc -->
796 * <!-- end-user-doc -->
797 * @generated
798 */
799 public String convertGrantorToString(EDataType eDataType, Object instanceValue) {
800 return instanceValue == null ? null : instanceValue.toString();
801 }
802
803 /**
804 * <!-- begin-user-doc -->
805 * <!-- end-user-doc -->
806 * @generated
807 */
808 public Disability_Types createDisability_TypesFromString(EDataType eDataType, String initialValue) {
809 Disability_Types result = Disability_Types.get(initialValue);
810 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
811 return result;
812 }
813
814 /**
815 * <!-- begin-user-doc -->
816 * <!-- end-user-doc -->
817 * @generated
818 */
819 public String convertDisability_TypesToString(EDataType eDataType, Object instanceValue) {
820 return instanceValue == null ? null : instanceValue.toString();
821 }
822
823 /**
824 * <!-- begin-user-doc -->
825 * <!-- end-user-doc -->
826 * @generated
827 */
828 public Country createCountryFromString(EDataType eDataType, String initialValue) {
829 Country result = Country.get(initialValue);
830 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
831 return result;
832 }
833
834 /**
835 * <!-- begin-user-doc -->
836 * <!-- end-user-doc -->
837 * @generated
838 */
839 public String convertCountryToString(EDataType eDataType, Object instanceValue) {
840 return instanceValue == null ? null : instanceValue.toString();
841 }
842
843 /**
844 * <!-- begin-user-doc -->
845 * <!-- end-user-doc -->
846 * @generated
847 */
848 public Tax_Card_Type createTax_Card_TypeFromString(EDataType eDataType, String initialValue) {
849 Tax_Card_Type result = Tax_Card_Type.get(initialValue);
850 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
851 return result;
852 }
853
854 /**
855 * <!-- begin-user-doc -->
856 * <!-- end-user-doc -->
857 * @generated
858 */
859 public String convertTax_Card_TypeToString(EDataType eDataType, Object instanceValue) {
860 return instanceValue == null ? null : instanceValue.toString();
861 }
862
863 /**
864 * <!-- begin-user-doc -->
865 * <!-- end-user-doc -->
866 * @generated
867 */
868 public Tax_Office createTax_OfficeFromString(EDataType eDataType, String initialValue) {
869 Tax_Office result = Tax_Office.get(initialValue);
870 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
871 return result;
872 }
873
874 /**
875 * <!-- begin-user-doc -->
876 * <!-- end-user-doc -->
877 * @generated
878 */
879 public String convertTax_OfficeToString(EDataType eDataType, Object instanceValue) {
880 return instanceValue == null ? null : instanceValue.toString();
881 }
882
883 /**
884 * <!-- begin-user-doc -->
885 * <!-- end-user-doc -->
886 * @generated
887 */
888 public Tax_Class_Category createTax_Class_CategoryFromString(EDataType eDataType, String initialValue) {
889 Tax_Class_Category result = Tax_Class_Category.get(initialValue);
890 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
891 return result;
892 }
893
894 /**
895 * <!-- begin-user-doc -->
896 * <!-- end-user-doc -->
897 * @generated
898 */
899 public String convertTax_Class_CategoryToString(EDataType eDataType, Object instanceValue) {
900 return instanceValue == null ? null : instanceValue.toString();
901 }
902
903 /**
904 * <!-- begin-user-doc -->
905 * <!-- end-user-doc -->
906 * @generated
907 */
908 public Job_Activity createJob_ActivityFromString(EDataType eDataType, String initialValue) {
909 Job_Activity result = Job_Activity.get(initialValue);
910 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
911 return result;
912 }
913
914 /**
915 * <!-- begin-user-doc -->
916 * <!-- end-user-doc -->
917 * @generated
918 */
919 public String convertJob_ActivityToString(EDataType eDataType, Object instanceValue) {
920 return instanceValue == null ? null : instanceValue.toString();
921 }
922
923 /**
924 * <!-- begin-user-doc -->
925 * <!-- end-user-doc -->
926 * @generated
927 */
928 public Town createTownFromString(EDataType eDataType, String initialValue) {
929 Town result = Town.get(initialValue);
930 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
931 return result;
932 }
933
934 /**
935 * <!-- begin-user-doc -->
936 * <!-- end-user-doc -->
937 * @generated
938 */
939 public String convertTownToString(EDataType eDataType, Object instanceValue) {
940 return instanceValue == null ? null : instanceValue.toString();
941 }
942
943 /**
944 * <!-- begin-user-doc -->
945 * <!-- end-user-doc -->
946 * @generated
947 */
948 public Type_of_Rate createType_of_RateFromString(EDataType eDataType, String initialValue) {
949 Type_of_Rate result = Type_of_Rate.get(initialValue);
950 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
951 return result;
952 }
953
954 /**
955 * <!-- begin-user-doc -->
956 * <!-- end-user-doc -->
957 * @generated
958 */
959 public String convertType_of_RateToString(EDataType eDataType, Object instanceValue) {
960 return instanceValue == null ? null : instanceValue.toString();
961 }
962
963 /**
964 * <!-- begin-user-doc -->
965 * <!-- end-user-doc -->
966 * @generated
967 */
968 public CE_Type createCE_TypeFromString(EDataType eDataType, String initialValue) {
969 CE_Type result = CE_Type.get(initialValue);
970 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
971 return result;
972 }
973
974 /**
975 * <!-- begin-user-doc -->
976 * <!-- end-user-doc -->
977 * @generated
978 */
979 public String convertCE_TypeToString(EDataType eDataType, Object instanceValue) {
980 return instanceValue == null ? null : instanceValue.toString();
981 }
982
983 /**
984 * <!-- begin-user-doc -->
985 * <!-- end-user-doc -->
986 * @generated
987 */
988 public Expense_Purpose createExpense_PurposeFromString(EDataType eDataType, String initialValue) {
989 Expense_Purpose result = Expense_Purpose.get(initialValue);
990 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
991 return result;
992 }
993
994 /**
995 * <!-- begin-user-doc -->
996 * <!-- end-user-doc -->
997 * @generated
998 */
999 public String convertExpense_PurposeToString(EDataType eDataType, Object instanceValue) {
1000 return instanceValue == null ? null : instanceValue.toString();
1001 }
1002
1003 /**
1004 * <!-- begin-user-doc -->
1005 * <!-- end-user-doc -->
1006 * @generated
1007 */
1008 public Dependent_Type createDependent_TypeFromString(EDataType eDataType, String initialValue) {
1009 Dependent_Type result = Dependent_Type.get(initialValue);
1010 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
1011 return result;
1012 }
1013
1014 /**
1015 * <!-- begin-user-doc -->
1016 * <!-- end-user-doc -->
1017 * @generated
1018 */
1019 public String convertDependent_TypeToString(EDataType eDataType, Object instanceValue) {
1020 return instanceValue == null ? null : instanceValue.toString();
1021 }
1022
1023 /**
1024 * <!-- begin-user-doc -->
1025 * <!-- end-user-doc -->
1026 * @generated
1027 */
1028 public Separation_Causes createSeparation_CausesFromString(EDataType eDataType, String initialValue) {
1029 Separation_Causes result = Separation_Causes.get(initialValue);
1030 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
1031 return result;
1032 }
1033
1034 /**
1035 * <!-- begin-user-doc -->
1036 * <!-- end-user-doc -->
1037 * @generated
1038 */
1039 public String convertSeparation_CausesToString(EDataType eDataType, Object instanceValue) {
1040 return instanceValue == null ? null : instanceValue.toString();
1041 }
1042
1043 /**
1044 * <!-- begin-user-doc -->
1045 * <!-- end-user-doc -->
1046 * @generated
1047 */
1048 public Category_of_Permanent_Expense createCategory_of_Permanent_ExpenseFromString(EDataType eDataType, String initialValue) {
1049 Category_of_Permanent_Expense result = Category_of_Permanent_Expense.get(initialValue);
1050 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
1051 return result;
1052 }
1053
1054 /**
1055 * <!-- begin-user-doc -->
1056 * <!-- end-user-doc -->
1057 * @generated
1058 */
1059 public String convertCategory_of_Permanent_ExpenseToString(EDataType eDataType, Object instanceValue) {
1060 return instanceValue == null ? null : instanceValue.toString();
1061 }
1062
1063 /**
1064 * <!-- begin-user-doc -->
1065 * <!-- end-user-doc -->
1066 * @generated
1067 */
1068 public Category_of_Health_and_Pension_Insurances createCategory_of_Health_and_Pension_InsurancesFromString(EDataType eDataType, String initialValue) {
1069 Category_of_Health_and_Pension_Insurances result = Category_of_Health_and_Pension_Insurances.get(initialValue);
1070 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
1071 return result;
1072 }
1073
1074 /**
1075 * <!-- begin-user-doc -->
1076 * <!-- end-user-doc -->
1077 * @generated
1078 */
1079 public String convertCategory_of_Health_and_Pension_InsurancesToString(EDataType eDataType, Object instanceValue) {
1080 return instanceValue == null ? null : instanceValue.toString();
1081 }
1082
1083 /**
1084 * <!-- begin-user-doc -->
1085 * <!-- end-user-doc -->
1086 * @generated
1087 */
1088 public Category_of_Private_Insurance_and_Plan createCategory_of_Private_Insurance_and_PlanFromString(EDataType eDataType, String initialValue) {
1089 Category_of_Private_Insurance_and_Plan result = Category_of_Private_Insurance_and_Plan.get(initialValue);
1090 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
1091 return result;
1092 }
1093
1094 /**
1095 * <!-- begin-user-doc -->
1096 * <!-- end-user-doc -->
1097 * @generated
1098 */
1099 public String convertCategory_of_Private_Insurance_and_PlanToString(EDataType eDataType, Object instanceValue) {
1100 return instanceValue == null ? null : instanceValue.toString();
1101 }
1102
1103 /**
1104 * <!-- begin-user-doc -->
1105 * <!-- end-user-doc -->
1106 * @generated
1107 */
1108 public Legal_Union_Types createLegal_Union_TypesFromString(EDataType eDataType, String initialValue) {
1109 Legal_Union_Types result = Legal_Union_Types.get(initialValue);
1110 if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
1111 return result;
1112 }
1113
1114 /**
1115 * <!-- begin-user-doc -->
1116 * <!-- end-user-doc -->
1117 * @generated
1118 */
1119 public String convertLegal_Union_TypesToString(EDataType eDataType, Object instanceValue) {
1120 return instanceValue == null ? null : instanceValue.toString();
1121 }
1122
1123 /**
1124 * <!-- begin-user-doc -->
1125 * <!-- end-user-doc -->
1126 * @generated
1127 */
1128 @Override
1129 public TaxationPackage getTaxationPackage() {
1130 return (TaxationPackage)getEPackage();
1131 }
1132
1133 /**
1134 * <!-- begin-user-doc -->
1135 * <!-- end-user-doc -->
1136 * @deprecated
1137 * @generated
1138 */
1139 @Deprecated
1140 public static TaxationPackage getPackage() {
1141 return TaxationPackage.eINSTANCE;
1142 }
1143
1144} //TaxationFactoryImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationPackageImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationPackageImpl.java
new file mode 100644
index 00000000..61f42b3e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/TaxationPackageImpl.java
@@ -0,0 +1,4271 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.Address;
6import Taxation.Agriculture_and_Forestry_Income;
7import Taxation.CE_Type;
8import Taxation.Capital_and_Investments_Income;
9import Taxation.Category_of_Health_and_Pension_Insurances;
10import Taxation.Category_of_Permanent_Expense;
11import Taxation.Category_of_Private_Insurance_and_Plan;
12import Taxation.Constants;
13import Taxation.Country;
14import Taxation.DS_for_Donation;
15import Taxation.DS_for_Health_and_Pension_Insurance;
16import Taxation.DS_for_Interest_Expense;
17import Taxation.DS_for_Loss_Carryforward;
18import Taxation.DS_for_Permanent_Expense;
19import Taxation.DS_for_Private_Insurance_and_Plan;
20import Taxation.Dependent;
21import Taxation.Dependent_Type;
22import Taxation.Disability_Types;
23import Taxation.Donation;
24import Taxation.Employment_Income;
25import Taxation.Expense;
26import Taxation.Expense_Purpose;
27import Taxation.External_Allowance;
28import Taxation.Extraordinary_Expense_CE;
29import Taxation.Fiscal_Address;
30import Taxation.Foreign_Income;
31import Taxation.FromAgent;
32import Taxation.FromLaw;
33import Taxation.Grantor;
34import Taxation.Habitual_Address;
35import Taxation.Health_and_Pension_Insurance;
36import Taxation.Household;
37import Taxation.Income;
38import Taxation.Income_Detail;
39import Taxation.Income_Tax;
40import Taxation.Income_Tax_Credit;
41import Taxation.Income_Type;
42import Taxation.Interest_Expense;
43import Taxation.Job_Activity;
44import Taxation.Legal_Union_Record;
45import Taxation.Legal_Union_Types;
46import Taxation.Local_Income;
47import Taxation.Loss_Carryforward;
48import Taxation.Marriage_Record;
49import Taxation.Miscellaneous_Expense_FO;
50import Taxation.Non_Resident_Tax_Payer;
51import Taxation.Partnership_Record;
52import Taxation.Pensions_and_Annuities_Income;
53import Taxation.Permanent_Expense;
54import Taxation.Physical_Person;
55import Taxation.Private_Insurance_and_Plan;
56import Taxation.Professional_Expense;
57import Taxation.Professional_Expenses_Deduction;
58import Taxation.Rentals_and_Leases_Income;
59import Taxation.Resident_Tax_Payer;
60import Taxation.Separation_Causes;
61import Taxation.Special_Expense_DS;
62import Taxation.Spousal_Expense_AC;
63import Taxation.Tax_Card;
64import Taxation.Tax_Card_Type;
65import Taxation.Tax_Case;
66import Taxation.Tax_Class_Category;
67import Taxation.Tax_Office;
68import Taxation.Tax_Payer;
69import Taxation.Tax_Property;
70import Taxation.TaxationFactory;
71import Taxation.TaxationPackage;
72import Taxation.Town;
73import Taxation.Trade_and_Business_Income;
74import Taxation.Travel_Expense_FD;
75import Taxation.Type_of_Rate;
76import org.eclipse.emf.ecore.EAttribute;
77import org.eclipse.emf.ecore.EClass;
78import org.eclipse.emf.ecore.EEnum;
79import org.eclipse.emf.ecore.EPackage;
80import org.eclipse.emf.ecore.EReference;
81
82import org.eclipse.emf.ecore.impl.EPackageImpl;
83
84/**
85 * <!-- begin-user-doc -->
86 * An implementation of the model <b>Package</b>.
87 * <!-- end-user-doc -->
88 * @generated
89 */
90public class TaxationPackageImpl extends EPackageImpl implements TaxationPackage {
91 /**
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @generated
95 */
96 private EClass constantsEClass = null;
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 private EClass income_TaxEClass = null;
104
105 /**
106 * <!-- begin-user-doc -->
107 * <!-- end-user-doc -->
108 * @generated
109 */
110 private EClass tax_PayerEClass = null;
111
112 /**
113 * <!-- begin-user-doc -->
114 * <!-- end-user-doc -->
115 * @generated
116 */
117 private EClass physical_PersonEClass = null;
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 private EClass addressEClass = null;
125
126 /**
127 * <!-- begin-user-doc -->
128 * <!-- end-user-doc -->
129 * @generated
130 */
131 private EClass expenseEClass = null;
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 private EClass dependentEClass = null;
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 private EClass external_AllowanceEClass = null;
146
147 /**
148 * <!-- begin-user-doc -->
149 * <!-- end-user-doc -->
150 * @generated
151 */
152 private EClass householdEClass = null;
153
154 /**
155 * <!-- begin-user-doc -->
156 * <!-- end-user-doc -->
157 * @generated
158 */
159 private EClass legal_Union_RecordEClass = null;
160
161 /**
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 */
166 private EClass tax_PropertyEClass = null;
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 private EClass tax_CaseEClass = null;
174
175 /**
176 * <!-- begin-user-doc -->
177 * <!-- end-user-doc -->
178 * @generated
179 */
180 private EClass fromAgentEClass = null;
181
182 /**
183 * <!-- begin-user-doc -->
184 * <!-- end-user-doc -->
185 * @generated
186 */
187 private EClass incomeEClass = null;
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 private EClass income_TypeEClass = null;
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 private EClass tax_CardEClass = null;
202
203 /**
204 * <!-- begin-user-doc -->
205 * <!-- end-user-doc -->
206 * @generated
207 */
208 private EClass income_Tax_CreditEClass = null;
209
210 /**
211 * <!-- begin-user-doc -->
212 * <!-- end-user-doc -->
213 * @generated
214 */
215 private EClass income_DetailEClass = null;
216
217 /**
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 private EClass fromLawEClass = null;
223
224 /**
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @generated
228 */
229 private EClass fiscal_AddressEClass = null;
230
231 /**
232 * <!-- begin-user-doc -->
233 * <!-- end-user-doc -->
234 * @generated
235 */
236 private EClass habitual_AddressEClass = null;
237
238 /**
239 * <!-- begin-user-doc -->
240 * <!-- end-user-doc -->
241 * @generated
242 */
243 private EClass marriage_RecordEClass = null;
244
245 /**
246 * <!-- begin-user-doc -->
247 * <!-- end-user-doc -->
248 * @generated
249 */
250 private EClass non_Resident_Tax_PayerEClass = null;
251
252 /**
253 * <!-- begin-user-doc -->
254 * <!-- end-user-doc -->
255 * @generated
256 */
257 private EClass partnership_RecordEClass = null;
258
259 /**
260 * <!-- begin-user-doc -->
261 * <!-- end-user-doc -->
262 * @generated
263 */
264 private EClass resident_Tax_PayerEClass = null;
265
266 /**
267 * <!-- begin-user-doc -->
268 * <!-- end-user-doc -->
269 * @generated
270 */
271 private EClass trade_and_Business_IncomeEClass = null;
272
273 /**
274 * <!-- begin-user-doc -->
275 * <!-- end-user-doc -->
276 * @generated
277 */
278 private EClass agriculture_and_Forestry_IncomeEClass = null;
279
280 /**
281 * <!-- begin-user-doc -->
282 * <!-- end-user-doc -->
283 * @generated
284 */
285 private EClass pensions_and_Annuities_IncomeEClass = null;
286
287 /**
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 private EClass capital_and_Investments_IncomeEClass = null;
293
294 /**
295 * <!-- begin-user-doc -->
296 * <!-- end-user-doc -->
297 * @generated
298 */
299 private EClass employment_IncomeEClass = null;
300
301 /**
302 * <!-- begin-user-doc -->
303 * <!-- end-user-doc -->
304 * @generated
305 */
306 private EClass rentals_and_Leases_IncomeEClass = null;
307
308 /**
309 * <!-- begin-user-doc -->
310 * <!-- end-user-doc -->
311 * @generated
312 */
313 private EClass foreign_IncomeEClass = null;
314
315 /**
316 * <!-- begin-user-doc -->
317 * <!-- end-user-doc -->
318 * @generated
319 */
320 private EClass local_IncomeEClass = null;
321
322 /**
323 * <!-- begin-user-doc -->
324 * <!-- end-user-doc -->
325 * @generated
326 */
327 private EClass cimEClass = null;
328
329 /**
330 * <!-- begin-user-doc -->
331 * <!-- end-user-doc -->
332 * @generated
333 */
334 private EClass cipEClass = null;
335
336 /**
337 * <!-- begin-user-doc -->
338 * <!-- end-user-doc -->
339 * @generated
340 */
341 private EClass cisEClass = null;
342
343 /**
344 * <!-- begin-user-doc -->
345 * <!-- end-user-doc -->
346 * @generated
347 */
348 private EClass fdEClass = null;
349
350 /**
351 * <!-- begin-user-doc -->
352 * <!-- end-user-doc -->
353 * @generated
354 */
355 private EClass professional_Expenses_DeductionEClass = null;
356
357 /**
358 * <!-- begin-user-doc -->
359 * <!-- end-user-doc -->
360 * @generated
361 */
362 private EClass foEClass = null;
363
364 /**
365 * <!-- begin-user-doc -->
366 * <!-- end-user-doc -->
367 * @generated
368 */
369 private EClass dS_for_Permanent_ExpenseEClass = null;
370
371 /**
372 * <!-- begin-user-doc -->
373 * <!-- end-user-doc -->
374 * @generated
375 */
376 private EClass dsEClass = null;
377
378 /**
379 * <!-- begin-user-doc -->
380 * <!-- end-user-doc -->
381 * @generated
382 */
383 private EClass dS_for_Interest_ExpenseEClass = null;
384
385 /**
386 * <!-- begin-user-doc -->
387 * <!-- end-user-doc -->
388 * @generated
389 */
390 private EClass dS_for_Health_and_Pension_InsuranceEClass = null;
391
392 /**
393 * <!-- begin-user-doc -->
394 * <!-- end-user-doc -->
395 * @generated
396 */
397 private EClass dS_for_Private_Insurance_and_PlanEClass = null;
398
399 /**
400 * <!-- begin-user-doc -->
401 * <!-- end-user-doc -->
402 * @generated
403 */
404 private EClass dS_for_Loss_CarryforwardEClass = null;
405
406 /**
407 * <!-- begin-user-doc -->
408 * <!-- end-user-doc -->
409 * @generated
410 */
411 private EClass dS_for_DonationEClass = null;
412
413 /**
414 * <!-- begin-user-doc -->
415 * <!-- end-user-doc -->
416 * @generated
417 */
418 private EClass permanent_ExpenseEClass = null;
419
420 /**
421 * <!-- begin-user-doc -->
422 * <!-- end-user-doc -->
423 * @generated
424 */
425 private EClass special_Expense_DSEClass = null;
426
427 /**
428 * <!-- begin-user-doc -->
429 * <!-- end-user-doc -->
430 * @generated
431 */
432 private EClass interest_ExpenseEClass = null;
433
434 /**
435 * <!-- begin-user-doc -->
436 * <!-- end-user-doc -->
437 * @generated
438 */
439 private EClass private_Insurance_and_PlanEClass = null;
440
441 /**
442 * <!-- begin-user-doc -->
443 * <!-- end-user-doc -->
444 * @generated
445 */
446 private EClass health_and_Pension_InsuranceEClass = null;
447
448 /**
449 * <!-- begin-user-doc -->
450 * <!-- end-user-doc -->
451 * @generated
452 */
453 private EClass donationEClass = null;
454
455 /**
456 * <!-- begin-user-doc -->
457 * <!-- end-user-doc -->
458 * @generated
459 */
460 private EClass loss_CarryforwardEClass = null;
461
462 /**
463 * <!-- begin-user-doc -->
464 * <!-- end-user-doc -->
465 * @generated
466 */
467 private EClass spousal_Expense_ACEClass = null;
468
469 /**
470 * <!-- begin-user-doc -->
471 * <!-- end-user-doc -->
472 * @generated
473 */
474 private EClass extraordinary_Expense_CEEClass = null;
475
476 /**
477 * <!-- begin-user-doc -->
478 * <!-- end-user-doc -->
479 * @generated
480 */
481 private EClass travel_Expense_FDEClass = null;
482
483 /**
484 * <!-- begin-user-doc -->
485 * <!-- end-user-doc -->
486 * @generated
487 */
488 private EClass professional_ExpenseEClass = null;
489
490 /**
491 * <!-- begin-user-doc -->
492 * <!-- end-user-doc -->
493 * @generated
494 */
495 private EClass miscellaneous_Expense_FOEClass = null;
496
497 /**
498 * <!-- begin-user-doc -->
499 * <!-- end-user-doc -->
500 * @generated
501 */
502 private EEnum grantorEEnum = null;
503
504 /**
505 * <!-- begin-user-doc -->
506 * <!-- end-user-doc -->
507 * @generated
508 */
509 private EEnum disability_TypesEEnum = null;
510
511 /**
512 * <!-- begin-user-doc -->
513 * <!-- end-user-doc -->
514 * @generated
515 */
516 private EEnum countryEEnum = null;
517
518 /**
519 * <!-- begin-user-doc -->
520 * <!-- end-user-doc -->
521 * @generated
522 */
523 private EEnum tax_Card_TypeEEnum = null;
524
525 /**
526 * <!-- begin-user-doc -->
527 * <!-- end-user-doc -->
528 * @generated
529 */
530 private EEnum tax_OfficeEEnum = null;
531
532 /**
533 * <!-- begin-user-doc -->
534 * <!-- end-user-doc -->
535 * @generated
536 */
537 private EEnum tax_Class_CategoryEEnum = null;
538
539 /**
540 * <!-- begin-user-doc -->
541 * <!-- end-user-doc -->
542 * @generated
543 */
544 private EEnum job_ActivityEEnum = null;
545
546 /**
547 * <!-- begin-user-doc -->
548 * <!-- end-user-doc -->
549 * @generated
550 */
551 private EEnum townEEnum = null;
552
553 /**
554 * <!-- begin-user-doc -->
555 * <!-- end-user-doc -->
556 * @generated
557 */
558 private EEnum type_of_RateEEnum = null;
559
560 /**
561 * <!-- begin-user-doc -->
562 * <!-- end-user-doc -->
563 * @generated
564 */
565 private EEnum cE_TypeEEnum = null;
566
567 /**
568 * <!-- begin-user-doc -->
569 * <!-- end-user-doc -->
570 * @generated
571 */
572 private EEnum expense_PurposeEEnum = null;
573
574 /**
575 * <!-- begin-user-doc -->
576 * <!-- end-user-doc -->
577 * @generated
578 */
579 private EEnum dependent_TypeEEnum = null;
580
581 /**
582 * <!-- begin-user-doc -->
583 * <!-- end-user-doc -->
584 * @generated
585 */
586 private EEnum separation_CausesEEnum = null;
587
588 /**
589 * <!-- begin-user-doc -->
590 * <!-- end-user-doc -->
591 * @generated
592 */
593 private EEnum category_of_Permanent_ExpenseEEnum = null;
594
595 /**
596 * <!-- begin-user-doc -->
597 * <!-- end-user-doc -->
598 * @generated
599 */
600 private EEnum category_of_Health_and_Pension_InsurancesEEnum = null;
601
602 /**
603 * <!-- begin-user-doc -->
604 * <!-- end-user-doc -->
605 * @generated
606 */
607 private EEnum category_of_Private_Insurance_and_PlanEEnum = null;
608
609 /**
610 * <!-- begin-user-doc -->
611 * <!-- end-user-doc -->
612 * @generated
613 */
614 private EEnum legal_Union_TypesEEnum = null;
615
616 /**
617 * Creates an instance of the model <b>Package</b>, registered with
618 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
619 * package URI value.
620 * <p>Note: the correct way to create the package is via the static
621 * factory method {@link #init init()}, which also performs
622 * initialization of the package, or returns the registered package,
623 * if one already exists.
624 * <!-- begin-user-doc -->
625 * <!-- end-user-doc -->
626 * @see org.eclipse.emf.ecore.EPackage.Registry
627 * @see Taxation.TaxationPackage#eNS_URI
628 * @see #init()
629 * @generated
630 */
631 private TaxationPackageImpl() {
632 super(eNS_URI, TaxationFactory.eINSTANCE);
633 }
634
635 /**
636 * <!-- begin-user-doc -->
637 * <!-- end-user-doc -->
638 * @generated
639 */
640 private static boolean isInited = false;
641
642 /**
643 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
644 *
645 * <p>This method is used to initialize {@link TaxationPackage#eINSTANCE} when that field is accessed.
646 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
647 * <!-- begin-user-doc -->
648 * <!-- end-user-doc -->
649 * @see #eNS_URI
650 * @see #createPackageContents()
651 * @see #initializePackageContents()
652 * @generated
653 */
654 public static TaxationPackage init() {
655 if (isInited) return (TaxationPackage)EPackage.Registry.INSTANCE.getEPackage(TaxationPackage.eNS_URI);
656
657 // Obtain or create and register package
658 Object registeredTaxationPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
659 TaxationPackageImpl theTaxationPackage = registeredTaxationPackage instanceof TaxationPackageImpl ? (TaxationPackageImpl)registeredTaxationPackage : new TaxationPackageImpl();
660
661 isInited = true;
662
663 // Create package meta-data objects
664 theTaxationPackage.createPackageContents();
665
666 // Initialize created meta-data
667 theTaxationPackage.initializePackageContents();
668
669 // Mark meta-data to indicate it can't be changed
670 theTaxationPackage.freeze();
671
672 // Update the registry and return the package
673 EPackage.Registry.INSTANCE.put(TaxationPackage.eNS_URI, theTaxationPackage);
674 return theTaxationPackage;
675 }
676
677 /**
678 * <!-- begin-user-doc -->
679 * <!-- end-user-doc -->
680 * @generated
681 */
682 @Override
683 public EClass getConstants() {
684 return constantsEClass;
685 }
686
687 /**
688 * <!-- begin-user-doc -->
689 * <!-- end-user-doc -->
690 * @generated
691 */
692 @Override
693 public EAttribute getConstants_MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD() {
694 return (EAttribute)constantsEClass.getEStructuralFeatures().get(0);
695 }
696
697 /**
698 * <!-- begin-user-doc -->
699 * <!-- end-user-doc -->
700 * @generated
701 */
702 @Override
703 public EAttribute getConstants_MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE() {
704 return (EAttribute)constantsEClass.getEStructuralFeatures().get(1);
705 }
706
707 /**
708 * <!-- begin-user-doc -->
709 * <!-- end-user-doc -->
710 * @generated
711 */
712 @Override
713 public EAttribute getConstants_MINIMUM_SALARY() {
714 return (EAttribute)constantsEClass.getEStructuralFeatures().get(2);
715 }
716
717 /**
718 * <!-- begin-user-doc -->
719 * <!-- end-user-doc -->
720 * @generated
721 */
722 @Override
723 public EAttribute getConstants_FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION() {
724 return (EAttribute)constantsEClass.getEStructuralFeatures().get(3);
725 }
726
727 /**
728 * <!-- begin-user-doc -->
729 * <!-- end-user-doc -->
730 * @generated
731 */
732 @Override
733 public EAttribute getConstants_MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS() {
734 return (EAttribute)constantsEClass.getEStructuralFeatures().get(4);
735 }
736
737 /**
738 * <!-- begin-user-doc -->
739 * <!-- end-user-doc -->
740 * @generated
741 */
742 @Override
743 public EAttribute getConstants_MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS() {
744 return (EAttribute)constantsEClass.getEStructuralFeatures().get(5);
745 }
746
747 /**
748 * <!-- begin-user-doc -->
749 * <!-- end-user-doc -->
750 * @generated
751 */
752 @Override
753 public EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC() {
754 return (EAttribute)constantsEClass.getEStructuralFeatures().get(6);
755 }
756
757 /**
758 * <!-- begin-user-doc -->
759 * <!-- end-user-doc -->
760 * @generated
761 */
762 @Override
763 public EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE() {
764 return (EAttribute)constantsEClass.getEStructuralFeatures().get(7);
765 }
766
767 /**
768 * <!-- begin-user-doc -->
769 * <!-- end-user-doc -->
770 * @generated
771 */
772 @Override
773 public EAttribute getConstants_MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() {
774 return (EAttribute)constantsEClass.getEStructuralFeatures().get(8);
775 }
776
777 /**
778 * <!-- begin-user-doc -->
779 * <!-- end-user-doc -->
780 * @generated
781 */
782 @Override
783 public EAttribute getConstants_MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() {
784 return (EAttribute)constantsEClass.getEStructuralFeatures().get(9);
785 }
786
787 /**
788 * <!-- begin-user-doc -->
789 * <!-- end-user-doc -->
790 * @generated
791 */
792 @Override
793 public EAttribute getConstants_MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION() {
794 return (EAttribute)constantsEClass.getEStructuralFeatures().get(10);
795 }
796
797 /**
798 * <!-- begin-user-doc -->
799 * <!-- end-user-doc -->
800 * @generated
801 */
802 @Override
803 public EAttribute getConstants_FLAT_RATE_CIM_DAILY() {
804 return (EAttribute)constantsEClass.getEStructuralFeatures().get(11);
805 }
806
807 /**
808 * <!-- begin-user-doc -->
809 * <!-- end-user-doc -->
810 * @generated
811 */
812 @Override
813 public EAttribute getConstants_FLAT_RATE_CIM_MONTHLY() {
814 return (EAttribute)constantsEClass.getEStructuralFeatures().get(12);
815 }
816
817 /**
818 * <!-- begin-user-doc -->
819 * <!-- end-user-doc -->
820 * @generated
821 */
822 @Override
823 public EAttribute getConstants_FLAT_RATE_CIM_YEARLY() {
824 return (EAttribute)constantsEClass.getEStructuralFeatures().get(13);
825 }
826
827 /**
828 * <!-- begin-user-doc -->
829 * <!-- end-user-doc -->
830 * @generated
831 */
832 @Override
833 public EAttribute getConstants_FLAT_RATE_CIP_DAILY() {
834 return (EAttribute)constantsEClass.getEStructuralFeatures().get(14);
835 }
836
837 /**
838 * <!-- begin-user-doc -->
839 * <!-- end-user-doc -->
840 * @generated
841 */
842 @Override
843 public EAttribute getConstants_FLAT_RATE_CIP_MONTHLY() {
844 return (EAttribute)constantsEClass.getEStructuralFeatures().get(15);
845 }
846
847 /**
848 * <!-- begin-user-doc -->
849 * <!-- end-user-doc -->
850 * @generated
851 */
852 @Override
853 public EAttribute getConstants_FLAT_RATE_CIP_YEARLY() {
854 return (EAttribute)constantsEClass.getEStructuralFeatures().get(16);
855 }
856
857 /**
858 * <!-- begin-user-doc -->
859 * <!-- end-user-doc -->
860 * @generated
861 */
862 @Override
863 public EAttribute getConstants_FLAT_RATE_CIS_DAILY() {
864 return (EAttribute)constantsEClass.getEStructuralFeatures().get(17);
865 }
866
867 /**
868 * <!-- begin-user-doc -->
869 * <!-- end-user-doc -->
870 * @generated
871 */
872 @Override
873 public EAttribute getConstants_FLAT_RATE_CIS_MONTHLY() {
874 return (EAttribute)constantsEClass.getEStructuralFeatures().get(18);
875 }
876
877 /**
878 * <!-- begin-user-doc -->
879 * <!-- end-user-doc -->
880 * @generated
881 */
882 @Override
883 public EAttribute getConstants_FLAT_RATE_CIS_YEARLY() {
884 return (EAttribute)constantsEClass.getEStructuralFeatures().get(19);
885 }
886
887 /**
888 * <!-- begin-user-doc -->
889 * <!-- end-user-doc -->
890 * @generated
891 */
892 @Override
893 public EAttribute getConstants_FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT() {
894 return (EAttribute)constantsEClass.getEStructuralFeatures().get(20);
895 }
896
897 /**
898 * <!-- begin-user-doc -->
899 * <!-- end-user-doc -->
900 * @generated
901 */
902 @Override
903 public EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS() {
904 return (EAttribute)constantsEClass.getEStructuralFeatures().get(21);
905 }
906
907 /**
908 * <!-- begin-user-doc -->
909 * <!-- end-user-doc -->
910 * @generated
911 */
912 @Override
913 public EAttribute getConstants_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() {
914 return (EAttribute)constantsEClass.getEStructuralFeatures().get(22);
915 }
916
917 /**
918 * <!-- begin-user-doc -->
919 * <!-- end-user-doc -->
920 * @generated
921 */
922 @Override
923 public EAttribute getConstants_DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE() {
924 return (EAttribute)constantsEClass.getEStructuralFeatures().get(23);
925 }
926
927 /**
928 * <!-- begin-user-doc -->
929 * <!-- end-user-doc -->
930 * @generated
931 */
932 @Override
933 public EAttribute getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE() {
934 return (EAttribute)constantsEClass.getEStructuralFeatures().get(24);
935 }
936
937 /**
938 * <!-- begin-user-doc -->
939 * <!-- end-user-doc -->
940 * @generated
941 */
942 @Override
943 public EClass getIncome_Tax() {
944 return income_TaxEClass;
945 }
946
947 /**
948 * <!-- begin-user-doc -->
949 * <!-- end-user-doc -->
950 * @generated
951 */
952 @Override
953 public EReference getIncome_Tax_TaxPayer() {
954 return (EReference)income_TaxEClass.getEStructuralFeatures().get(0);
955 }
956
957 /**
958 * <!-- begin-user-doc -->
959 * <!-- end-user-doc -->
960 * @generated
961 */
962 @Override
963 public EAttribute getIncome_Tax_Tax_amount() {
964 return (EAttribute)income_TaxEClass.getEStructuralFeatures().get(1);
965 }
966
967 /**
968 * <!-- begin-user-doc -->
969 * <!-- end-user-doc -->
970 * @generated
971 */
972 @Override
973 public EAttribute getIncome_Tax_Tax_year() {
974 return (EAttribute)income_TaxEClass.getEStructuralFeatures().get(2);
975 }
976
977 /**
978 * <!-- begin-user-doc -->
979 * <!-- end-user-doc -->
980 * @generated
981 */
982 @Override
983 public EAttribute getIncome_Tax_Id6() {
984 return (EAttribute)income_TaxEClass.getEStructuralFeatures().get(3);
985 }
986
987 /**
988 * <!-- begin-user-doc -->
989 * <!-- end-user-doc -->
990 * @generated
991 */
992 @Override
993 public EClass getTax_Payer() {
994 return tax_PayerEClass;
995 }
996
997 /**
998 * <!-- begin-user-doc -->
999 * <!-- end-user-doc -->
1000 * @generated
1001 */
1002 @Override
1003 public EReference getTax_Payer_Dependents() {
1004 return (EReference)tax_PayerEClass.getEStructuralFeatures().get(0);
1005 }
1006
1007 /**
1008 * <!-- begin-user-doc -->
1009 * <!-- end-user-doc -->
1010 * @generated
1011 */
1012 @Override
1013 public EReference getTax_Payer_From_agent() {
1014 return (EReference)tax_PayerEClass.getEStructuralFeatures().get(1);
1015 }
1016
1017 /**
1018 * <!-- begin-user-doc -->
1019 * <!-- end-user-doc -->
1020 * @generated
1021 */
1022 @Override
1023 public EReference getTax_Payer_Incomes() {
1024 return (EReference)tax_PayerEClass.getEStructuralFeatures().get(2);
1025 }
1026
1027 /**
1028 * <!-- begin-user-doc -->
1029 * <!-- end-user-doc -->
1030 * @generated
1031 */
1032 @Override
1033 public EReference getTax_Payer_From_law() {
1034 return (EReference)tax_PayerEClass.getEStructuralFeatures().get(3);
1035 }
1036
1037 /**
1038 * <!-- begin-user-doc -->
1039 * <!-- end-user-doc -->
1040 * @generated
1041 */
1042 @Override
1043 public EAttribute getTax_Payer_TaxesDue() {
1044 return (EAttribute)tax_PayerEClass.getEStructuralFeatures().get(4);
1045 }
1046
1047 /**
1048 * <!-- begin-user-doc -->
1049 * <!-- end-user-doc -->
1050 * @generated
1051 */
1052 @Override
1053 public EClass getPhysical_Person() {
1054 return physical_PersonEClass;
1055 }
1056
1057 /**
1058 * <!-- begin-user-doc -->
1059 * <!-- end-user-doc -->
1060 * @generated
1061 */
1062 @Override
1063 public EAttribute getPhysical_Person_Is_assisting_spouse() {
1064 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(0);
1065 }
1066
1067 /**
1068 * <!-- begin-user-doc -->
1069 * <!-- end-user-doc -->
1070 * @generated
1071 */
1072 @Override
1073 public EAttribute getPhysical_Person_SSNo() {
1074 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(1);
1075 }
1076
1077 /**
1078 * <!-- begin-user-doc -->
1079 * <!-- end-user-doc -->
1080 * @generated
1081 */
1082 @Override
1083 public EReference getPhysical_Person_Addresses() {
1084 return (EReference)physical_PersonEClass.getEStructuralFeatures().get(2);
1085 }
1086
1087 /**
1088 * <!-- begin-user-doc -->
1089 * <!-- end-user-doc -->
1090 * @generated
1091 */
1092 @Override
1093 public EAttribute getPhysical_Person_Birth_year() {
1094 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(3);
1095 }
1096
1097 /**
1098 * <!-- begin-user-doc -->
1099 * <!-- end-user-doc -->
1100 * @generated
1101 */
1102 @Override
1103 public EAttribute getPhysical_Person_Disability_percentage() {
1104 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(4);
1105 }
1106
1107 /**
1108 * <!-- begin-user-doc -->
1109 * <!-- end-user-doc -->
1110 * @generated
1111 */
1112 @Override
1113 public EAttribute getPhysical_Person_Disability_type() {
1114 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(5);
1115 }
1116
1117 /**
1118 * <!-- begin-user-doc -->
1119 * <!-- end-user-doc -->
1120 * @generated
1121 */
1122 @Override
1123 public EAttribute getPhysical_Person_Is_affiliated_personnaly_to_social_security() {
1124 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(6);
1125 }
1126
1127 /**
1128 * <!-- begin-user-doc -->
1129 * <!-- end-user-doc -->
1130 * @generated
1131 */
1132 @Override
1133 public EAttribute getPhysical_Person_Birth_month() {
1134 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(7);
1135 }
1136
1137 /**
1138 * <!-- begin-user-doc -->
1139 * <!-- end-user-doc -->
1140 * @generated
1141 */
1142 @Override
1143 public EAttribute getPhysical_Person_Birth_day() {
1144 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(8);
1145 }
1146
1147 /**
1148 * <!-- begin-user-doc -->
1149 * <!-- end-user-doc -->
1150 * @generated
1151 */
1152 @Override
1153 public EReference getPhysical_Person_Expenses() {
1154 return (EReference)physical_PersonEClass.getEStructuralFeatures().get(9);
1155 }
1156
1157 /**
1158 * <!-- begin-user-doc -->
1159 * <!-- end-user-doc -->
1160 * @generated
1161 */
1162 @Override
1163 public EAttribute getPhysical_Person_Is_widower() {
1164 return (EAttribute)physical_PersonEClass.getEStructuralFeatures().get(10);
1165 }
1166
1167 /**
1168 * <!-- begin-user-doc -->
1169 * <!-- end-user-doc -->
1170 * @generated
1171 */
1172 @Override
1173 public EReference getPhysical_Person_Owns_Address() {
1174 return (EReference)physical_PersonEClass.getEStructuralFeatures().get(11);
1175 }
1176
1177 /**
1178 * <!-- begin-user-doc -->
1179 * <!-- end-user-doc -->
1180 * @generated
1181 */
1182 @Override
1183 public EClass getAddress() {
1184 return addressEClass;
1185 }
1186
1187 /**
1188 * <!-- begin-user-doc -->
1189 * <!-- end-user-doc -->
1190 * @generated
1191 */
1192 @Override
1193 public EAttribute getAddress_Country() {
1194 return (EAttribute)addressEClass.getEStructuralFeatures().get(0);
1195 }
1196
1197 /**
1198 * <!-- begin-user-doc -->
1199 * <!-- end-user-doc -->
1200 * @generated
1201 */
1202 @Override
1203 public EAttribute getAddress_Street() {
1204 return (EAttribute)addressEClass.getEStructuralFeatures().get(1);
1205 }
1206
1207 /**
1208 * <!-- begin-user-doc -->
1209 * <!-- end-user-doc -->
1210 * @generated
1211 */
1212 @Override
1213 public EAttribute getAddress_ZipCode() {
1214 return (EAttribute)addressEClass.getEStructuralFeatures().get(2);
1215 }
1216
1217 /**
1218 * <!-- begin-user-doc -->
1219 * <!-- end-user-doc -->
1220 * @generated
1221 */
1222 @Override
1223 public EAttribute getAddress_City() {
1224 return (EAttribute)addressEClass.getEStructuralFeatures().get(3);
1225 }
1226
1227 /**
1228 * <!-- begin-user-doc -->
1229 * <!-- end-user-doc -->
1230 * @generated
1231 */
1232 @Override
1233 public EAttribute getAddress_Id2() {
1234 return (EAttribute)addressEClass.getEStructuralFeatures().get(4);
1235 }
1236
1237 /**
1238 * <!-- begin-user-doc -->
1239 * <!-- end-user-doc -->
1240 * @generated
1241 */
1242 @Override
1243 public EReference getAddress_TaxPayer() {
1244 return (EReference)addressEClass.getEStructuralFeatures().get(5);
1245 }
1246
1247 /**
1248 * <!-- begin-user-doc -->
1249 * <!-- end-user-doc -->
1250 * @generated
1251 */
1252 @Override
1253 public EClass getExpense() {
1254 return expenseEClass;
1255 }
1256
1257 /**
1258 * <!-- begin-user-doc -->
1259 * <!-- end-user-doc -->
1260 * @generated
1261 */
1262 @Override
1263 public EAttribute getExpense_Declared_amount() {
1264 return (EAttribute)expenseEClass.getEStructuralFeatures().get(0);
1265 }
1266
1267 /**
1268 * <!-- begin-user-doc -->
1269 * <!-- end-user-doc -->
1270 * @generated
1271 */
1272 @Override
1273 public EAttribute getExpense_Expense_purpose() {
1274 return (EAttribute)expenseEClass.getEStructuralFeatures().get(1);
1275 }
1276
1277 /**
1278 * <!-- begin-user-doc -->
1279 * <!-- end-user-doc -->
1280 * @generated
1281 */
1282 @Override
1283 public EReference getExpense_Dependent() {
1284 return (EReference)expenseEClass.getEStructuralFeatures().get(2);
1285 }
1286
1287 /**
1288 * <!-- begin-user-doc -->
1289 * <!-- end-user-doc -->
1290 * @generated
1291 */
1292 @Override
1293 public EReference getExpense_From_agent() {
1294 return (EReference)expenseEClass.getEStructuralFeatures().get(3);
1295 }
1296
1297 /**
1298 * <!-- begin-user-doc -->
1299 * <!-- end-user-doc -->
1300 * @generated
1301 */
1302 @Override
1303 public EReference getExpense_Income() {
1304 return (EReference)expenseEClass.getEStructuralFeatures().get(4);
1305 }
1306
1307 /**
1308 * <!-- begin-user-doc -->
1309 * <!-- end-user-doc -->
1310 * @generated
1311 */
1312 @Override
1313 public EAttribute getExpense_Id4() {
1314 return (EAttribute)expenseEClass.getEStructuralFeatures().get(5);
1315 }
1316
1317 /**
1318 * <!-- begin-user-doc -->
1319 * <!-- end-user-doc -->
1320 * @generated
1321 */
1322 @Override
1323 public EReference getExpense_Beneficiary() {
1324 return (EReference)expenseEClass.getEStructuralFeatures().get(6);
1325 }
1326
1327 /**
1328 * <!-- begin-user-doc -->
1329 * <!-- end-user-doc -->
1330 * @generated
1331 */
1332 @Override
1333 public EClass getDependent() {
1334 return dependentEClass;
1335 }
1336
1337 /**
1338 * <!-- begin-user-doc -->
1339 * <!-- end-user-doc -->
1340 * @generated
1341 */
1342 @Override
1343 public EAttribute getDependent_Dependent_type() {
1344 return (EAttribute)dependentEClass.getEStructuralFeatures().get(0);
1345 }
1346
1347 /**
1348 * <!-- begin-user-doc -->
1349 * <!-- end-user-doc -->
1350 * @generated
1351 */
1352 @Override
1353 public EReference getDependent_Responsible_person() {
1354 return (EReference)dependentEClass.getEStructuralFeatures().get(1);
1355 }
1356
1357 /**
1358 * <!-- begin-user-doc -->
1359 * <!-- end-user-doc -->
1360 * @generated
1361 */
1362 @Override
1363 public EAttribute getDependent_Continued_studies() {
1364 return (EAttribute)dependentEClass.getEStructuralFeatures().get(2);
1365 }
1366
1367 /**
1368 * <!-- begin-user-doc -->
1369 * <!-- end-user-doc -->
1370 * @generated
1371 */
1372 @Override
1373 public EReference getDependent_Allowances() {
1374 return (EReference)dependentEClass.getEStructuralFeatures().get(3);
1375 }
1376
1377 /**
1378 * <!-- begin-user-doc -->
1379 * <!-- end-user-doc -->
1380 * @generated
1381 */
1382 @Override
1383 public EReference getDependent_Household() {
1384 return (EReference)dependentEClass.getEStructuralFeatures().get(4);
1385 }
1386
1387 /**
1388 * <!-- begin-user-doc -->
1389 * <!-- end-user-doc -->
1390 * @generated
1391 */
1392 @Override
1393 public EReference getDependent_From_agent() {
1394 return (EReference)dependentEClass.getEStructuralFeatures().get(5);
1395 }
1396
1397 /**
1398 * <!-- begin-user-doc -->
1399 * <!-- end-user-doc -->
1400 * @generated
1401 */
1402 @Override
1403 public EReference getDependent_Expense() {
1404 return (EReference)dependentEClass.getEStructuralFeatures().get(6);
1405 }
1406
1407 /**
1408 * <!-- begin-user-doc -->
1409 * <!-- end-user-doc -->
1410 * @generated
1411 */
1412 @Override
1413 public EClass getExternal_Allowance() {
1414 return external_AllowanceEClass;
1415 }
1416
1417 /**
1418 * <!-- begin-user-doc -->
1419 * <!-- end-user-doc -->
1420 * @generated
1421 */
1422 @Override
1423 public EAttribute getExternal_Allowance_Amount() {
1424 return (EAttribute)external_AllowanceEClass.getEStructuralFeatures().get(0);
1425 }
1426
1427 /**
1428 * <!-- begin-user-doc -->
1429 * <!-- end-user-doc -->
1430 * @generated
1431 */
1432 @Override
1433 public EAttribute getExternal_Allowance_Grantor() {
1434 return (EAttribute)external_AllowanceEClass.getEStructuralFeatures().get(1);
1435 }
1436
1437 /**
1438 * <!-- begin-user-doc -->
1439 * <!-- end-user-doc -->
1440 * @generated
1441 */
1442 @Override
1443 public EAttribute getExternal_Allowance_Starting_year() {
1444 return (EAttribute)external_AllowanceEClass.getEStructuralFeatures().get(2);
1445 }
1446
1447 /**
1448 * <!-- begin-user-doc -->
1449 * <!-- end-user-doc -->
1450 * @generated
1451 */
1452 @Override
1453 public EAttribute getExternal_Allowance_Ending_year() {
1454 return (EAttribute)external_AllowanceEClass.getEStructuralFeatures().get(3);
1455 }
1456
1457 /**
1458 * <!-- begin-user-doc -->
1459 * <!-- end-user-doc -->
1460 * @generated
1461 */
1462 @Override
1463 public EReference getExternal_Allowance_Reciver() {
1464 return (EReference)external_AllowanceEClass.getEStructuralFeatures().get(4);
1465 }
1466
1467 /**
1468 * <!-- begin-user-doc -->
1469 * <!-- end-user-doc -->
1470 * @generated
1471 */
1472 @Override
1473 public EAttribute getExternal_Allowance_Id5() {
1474 return (EAttribute)external_AllowanceEClass.getEStructuralFeatures().get(5);
1475 }
1476
1477 /**
1478 * <!-- begin-user-doc -->
1479 * <!-- end-user-doc -->
1480 * @generated
1481 */
1482 @Override
1483 public EReference getExternal_Allowance_Person() {
1484 return (EReference)external_AllowanceEClass.getEStructuralFeatures().get(6);
1485 }
1486
1487 /**
1488 * <!-- begin-user-doc -->
1489 * <!-- end-user-doc -->
1490 * @generated
1491 */
1492 @Override
1493 public EClass getHousehold() {
1494 return householdEClass;
1495 }
1496
1497 /**
1498 * <!-- begin-user-doc -->
1499 * <!-- end-user-doc -->
1500 * @generated
1501 */
1502 @Override
1503 public EReference getHousehold_Parents() {
1504 return (EReference)householdEClass.getEStructuralFeatures().get(0);
1505 }
1506
1507 /**
1508 * <!-- begin-user-doc -->
1509 * <!-- end-user-doc -->
1510 * @generated
1511 */
1512 @Override
1513 public EAttribute getHousehold_Id1() {
1514 return (EAttribute)householdEClass.getEStructuralFeatures().get(1);
1515 }
1516
1517 /**
1518 * <!-- begin-user-doc -->
1519 * <!-- end-user-doc -->
1520 * @generated
1521 */
1522 @Override
1523 public EReference getHousehold_Children() {
1524 return (EReference)householdEClass.getEStructuralFeatures().get(2);
1525 }
1526
1527 /**
1528 * <!-- begin-user-doc -->
1529 * <!-- end-user-doc -->
1530 * @generated
1531 */
1532 @Override
1533 public EClass getLegal_Union_Record() {
1534 return legal_Union_RecordEClass;
1535 }
1536
1537 /**
1538 * <!-- begin-user-doc -->
1539 * <!-- end-user-doc -->
1540 * @generated
1541 */
1542 @Override
1543 public EAttribute getLegal_Union_Record_Start_year() {
1544 return (EAttribute)legal_Union_RecordEClass.getEStructuralFeatures().get(0);
1545 }
1546
1547 /**
1548 * <!-- begin-user-doc -->
1549 * <!-- end-user-doc -->
1550 * @generated
1551 */
1552 @Override
1553 public EAttribute getLegal_Union_Record_End_year() {
1554 return (EAttribute)legal_Union_RecordEClass.getEStructuralFeatures().get(1);
1555 }
1556
1557 /**
1558 * <!-- begin-user-doc -->
1559 * <!-- end-user-doc -->
1560 * @generated
1561 */
1562 @Override
1563 public EAttribute getLegal_Union_Record_Separation_cause() {
1564 return (EAttribute)legal_Union_RecordEClass.getEStructuralFeatures().get(2);
1565 }
1566
1567 /**
1568 * <!-- begin-user-doc -->
1569 * <!-- end-user-doc -->
1570 * @generated
1571 */
1572 @Override
1573 public EReference getLegal_Union_Record_Individual_A() {
1574 return (EReference)legal_Union_RecordEClass.getEStructuralFeatures().get(3);
1575 }
1576
1577 /**
1578 * <!-- begin-user-doc -->
1579 * <!-- end-user-doc -->
1580 * @generated
1581 */
1582 @Override
1583 public EReference getLegal_Union_Record_Individual_B() {
1584 return (EReference)legal_Union_RecordEClass.getEStructuralFeatures().get(4);
1585 }
1586
1587 /**
1588 * <!-- begin-user-doc -->
1589 * <!-- end-user-doc -->
1590 * @generated
1591 */
1592 @Override
1593 public EReference getLegal_Union_Record_Properties() {
1594 return (EReference)legal_Union_RecordEClass.getEStructuralFeatures().get(5);
1595 }
1596
1597 /**
1598 * <!-- begin-user-doc -->
1599 * <!-- end-user-doc -->
1600 * @generated
1601 */
1602 @Override
1603 public EAttribute getLegal_Union_Record_Mutual_agreement() {
1604 return (EAttribute)legal_Union_RecordEClass.getEStructuralFeatures().get(6);
1605 }
1606
1607 /**
1608 * <!-- begin-user-doc -->
1609 * <!-- end-user-doc -->
1610 * @generated
1611 */
1612 @Override
1613 public EAttribute getLegal_Union_Record_Id9() {
1614 return (EAttribute)legal_Union_RecordEClass.getEStructuralFeatures().get(7);
1615 }
1616
1617 /**
1618 * <!-- begin-user-doc -->
1619 * <!-- end-user-doc -->
1620 * @generated
1621 */
1622 @Override
1623 public EReference getLegal_Union_Record_Household() {
1624 return (EReference)legal_Union_RecordEClass.getEStructuralFeatures().get(8);
1625 }
1626
1627 /**
1628 * <!-- begin-user-doc -->
1629 * <!-- end-user-doc -->
1630 * @generated
1631 */
1632 @Override
1633 public EClass getTax_Property() {
1634 return tax_PropertyEClass;
1635 }
1636
1637 /**
1638 * <!-- begin-user-doc -->
1639 * <!-- end-user-doc -->
1640 * @generated
1641 */
1642 @Override
1643 public EAttribute getTax_Property_Starting_year() {
1644 return (EAttribute)tax_PropertyEClass.getEStructuralFeatures().get(0);
1645 }
1646
1647 /**
1648 * <!-- begin-user-doc -->
1649 * <!-- end-user-doc -->
1650 * @generated
1651 */
1652 @Override
1653 public EAttribute getTax_Property_Id10() {
1654 return (EAttribute)tax_PropertyEClass.getEStructuralFeatures().get(1);
1655 }
1656
1657 /**
1658 * <!-- begin-user-doc -->
1659 * <!-- end-user-doc -->
1660 * @generated
1661 */
1662 @Override
1663 public EReference getTax_Property_Union_record() {
1664 return (EReference)tax_PropertyEClass.getEStructuralFeatures().get(2);
1665 }
1666
1667 /**
1668 * <!-- begin-user-doc -->
1669 * <!-- end-user-doc -->
1670 * @generated
1671 */
1672 @Override
1673 public EClass getTax_Case() {
1674 return tax_CaseEClass;
1675 }
1676
1677 /**
1678 * <!-- begin-user-doc -->
1679 * <!-- end-user-doc -->
1680 * @generated
1681 */
1682 @Override
1683 public EClass getFromAgent() {
1684 return fromAgentEClass;
1685 }
1686
1687 /**
1688 * <!-- begin-user-doc -->
1689 * <!-- end-user-doc -->
1690 * @generated
1691 */
1692 @Override
1693 public EReference getFromAgent_TaxPayer() {
1694 return (EReference)fromAgentEClass.getEStructuralFeatures().get(0);
1695 }
1696
1697 /**
1698 * <!-- begin-user-doc -->
1699 * <!-- end-user-doc -->
1700 * @generated
1701 */
1702 @Override
1703 public EAttribute getFromAgent_Is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care() {
1704 return (EAttribute)fromAgentEClass.getEStructuralFeatures().get(1);
1705 }
1706
1707 /**
1708 * <!-- begin-user-doc -->
1709 * <!-- end-user-doc -->
1710 * @generated
1711 */
1712 @Override
1713 public EReference getFromAgent_Expense() {
1714 return (EReference)fromAgentEClass.getEStructuralFeatures().get(2);
1715 }
1716
1717 /**
1718 * <!-- begin-user-doc -->
1719 * <!-- end-user-doc -->
1720 * @generated
1721 */
1722 @Override
1723 public EAttribute getFromAgent_Is_eligible_debt() {
1724 return (EAttribute)fromAgentEClass.getEStructuralFeatures().get(3);
1725 }
1726
1727 /**
1728 * <!-- begin-user-doc -->
1729 * <!-- end-user-doc -->
1730 * @generated
1731 */
1732 @Override
1733 public EReference getFromAgent_Dependent() {
1734 return (EReference)fromAgentEClass.getEStructuralFeatures().get(4);
1735 }
1736
1737 /**
1738 * <!-- begin-user-doc -->
1739 * <!-- end-user-doc -->
1740 * @generated
1741 */
1742 @Override
1743 public EClass getIncome() {
1744 return incomeEClass;
1745 }
1746
1747 /**
1748 * <!-- begin-user-doc -->
1749 * <!-- end-user-doc -->
1750 * @generated
1751 */
1752 @Override
1753 public EAttribute getIncome_Income_amount() {
1754 return (EAttribute)incomeEClass.getEStructuralFeatures().get(0);
1755 }
1756
1757 /**
1758 * <!-- begin-user-doc -->
1759 * <!-- end-user-doc -->
1760 * @generated
1761 */
1762 @Override
1763 public EReference getIncome_Income_type() {
1764 return (EReference)incomeEClass.getEStructuralFeatures().get(1);
1765 }
1766
1767 /**
1768 * <!-- begin-user-doc -->
1769 * <!-- end-user-doc -->
1770 * @generated
1771 */
1772 @Override
1773 public EAttribute getIncome_Start_date_within_taxation_year() {
1774 return (EAttribute)incomeEClass.getEStructuralFeatures().get(2);
1775 }
1776
1777 /**
1778 * <!-- begin-user-doc -->
1779 * <!-- end-user-doc -->
1780 * @generated
1781 */
1782 @Override
1783 public EAttribute getIncome_Start_date_of_contract() {
1784 return (EAttribute)incomeEClass.getEStructuralFeatures().get(3);
1785 }
1786
1787 /**
1788 * <!-- begin-user-doc -->
1789 * <!-- end-user-doc -->
1790 * @generated
1791 */
1792 @Override
1793 public EAttribute getIncome_End_date_within_taxation_year() {
1794 return (EAttribute)incomeEClass.getEStructuralFeatures().get(4);
1795 }
1796
1797 /**
1798 * <!-- begin-user-doc -->
1799 * <!-- end-user-doc -->
1800 * @generated
1801 */
1802 @Override
1803 public EReference getIncome_Tax_card() {
1804 return (EReference)incomeEClass.getEStructuralFeatures().get(5);
1805 }
1806
1807 /**
1808 * <!-- begin-user-doc -->
1809 * <!-- end-user-doc -->
1810 * @generated
1811 */
1812 @Override
1813 public EAttribute getIncome_Tax_liability() {
1814 return (EAttribute)incomeEClass.getEStructuralFeatures().get(6);
1815 }
1816
1817 /**
1818 * <!-- begin-user-doc -->
1819 * <!-- end-user-doc -->
1820 * @generated
1821 */
1822 @Override
1823 public EReference getIncome_TaxPayer() {
1824 return (EReference)incomeEClass.getEStructuralFeatures().get(7);
1825 }
1826
1827 /**
1828 * <!-- begin-user-doc -->
1829 * <!-- end-user-doc -->
1830 * @generated
1831 */
1832 @Override
1833 public EReference getIncome_Details() {
1834 return (EReference)incomeEClass.getEStructuralFeatures().get(8);
1835 }
1836
1837 /**
1838 * <!-- begin-user-doc -->
1839 * <!-- end-user-doc -->
1840 * @generated
1841 */
1842 @Override
1843 public EAttribute getIncome_Num() {
1844 return (EAttribute)incomeEClass.getEStructuralFeatures().get(9);
1845 }
1846
1847 /**
1848 * <!-- begin-user-doc -->
1849 * <!-- end-user-doc -->
1850 * @generated
1851 */
1852 @Override
1853 public EReference getIncome_Expenses() {
1854 return (EReference)incomeEClass.getEStructuralFeatures().get(10);
1855 }
1856
1857 /**
1858 * <!-- begin-user-doc -->
1859 * <!-- end-user-doc -->
1860 * @generated
1861 */
1862 @Override
1863 public EClass getIncome_Type() {
1864 return income_TypeEClass;
1865 }
1866
1867 /**
1868 * <!-- begin-user-doc -->
1869 * <!-- end-user-doc -->
1870 * @generated
1871 */
1872 @Override
1873 public EAttribute getIncome_Type_SubjectToWithholdingTax() {
1874 return (EAttribute)income_TypeEClass.getEStructuralFeatures().get(0);
1875 }
1876
1877 /**
1878 * <!-- begin-user-doc -->
1879 * <!-- end-user-doc -->
1880 * @generated
1881 */
1882 @Override
1883 public EAttribute getIncome_Type_Id8() {
1884 return (EAttribute)income_TypeEClass.getEStructuralFeatures().get(1);
1885 }
1886
1887 /**
1888 * <!-- begin-user-doc -->
1889 * <!-- end-user-doc -->
1890 * @generated
1891 */
1892 @Override
1893 public EReference getIncome_Type_Income() {
1894 return (EReference)income_TypeEClass.getEStructuralFeatures().get(2);
1895 }
1896
1897 /**
1898 * <!-- begin-user-doc -->
1899 * <!-- end-user-doc -->
1900 * @generated
1901 */
1902 @Override
1903 public EClass getTax_Card() {
1904 return tax_CardEClass;
1905 }
1906
1907 /**
1908 * <!-- begin-user-doc -->
1909 * <!-- end-user-doc -->
1910 * @generated
1911 */
1912 @Override
1913 public EAttribute getTax_Card_Card_identifier() {
1914 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(0);
1915 }
1916
1917 /**
1918 * <!-- begin-user-doc -->
1919 * <!-- end-user-doc -->
1920 * @generated
1921 */
1922 @Override
1923 public EAttribute getTax_Card_Tax_card_type() {
1924 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(1);
1925 }
1926
1927 /**
1928 * <!-- begin-user-doc -->
1929 * <!-- end-user-doc -->
1930 * @generated
1931 */
1932 @Override
1933 public EAttribute getTax_Card_Tax_office() {
1934 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(2);
1935 }
1936
1937 /**
1938 * <!-- begin-user-doc -->
1939 * <!-- end-user-doc -->
1940 * @generated
1941 */
1942 @Override
1943 public EAttribute getTax_Card_Valid_from_date() {
1944 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(3);
1945 }
1946
1947 /**
1948 * <!-- begin-user-doc -->
1949 * <!-- end-user-doc -->
1950 * @generated
1951 */
1952 @Override
1953 public EAttribute getTax_Card_Valid_until_date() {
1954 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(4);
1955 }
1956
1957 /**
1958 * <!-- begin-user-doc -->
1959 * <!-- end-user-doc -->
1960 * @generated
1961 */
1962 @Override
1963 public EAttribute getTax_Card_Percentage_of_witholding() {
1964 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(5);
1965 }
1966
1967 /**
1968 * <!-- begin-user-doc -->
1969 * <!-- end-user-doc -->
1970 * @generated
1971 */
1972 @Override
1973 public EAttribute getTax_Card_Tax_payers_name_surname() {
1974 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(6);
1975 }
1976
1977 /**
1978 * <!-- begin-user-doc -->
1979 * <!-- end-user-doc -->
1980 * @generated
1981 */
1982 @Override
1983 public EAttribute getTax_Card_Tax_payers_partner_name_surname() {
1984 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(7);
1985 }
1986
1987 /**
1988 * <!-- begin-user-doc -->
1989 * <!-- end-user-doc -->
1990 * @generated
1991 */
1992 @Override
1993 public EReference getTax_Card_Tax_payers_address() {
1994 return (EReference)tax_CardEClass.getEStructuralFeatures().get(8);
1995 }
1996
1997 /**
1998 * <!-- begin-user-doc -->
1999 * <!-- end-user-doc -->
2000 * @generated
2001 */
2002 @Override
2003 public EAttribute getTax_Card_Jobs_Employer_SSNo() {
2004 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(9);
2005 }
2006
2007 /**
2008 * <!-- begin-user-doc -->
2009 * <!-- end-user-doc -->
2010 * @generated
2011 */
2012 @Override
2013 public EAttribute getTax_Card_Jobs_employers_name() {
2014 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(10);
2015 }
2016
2017 /**
2018 * <!-- begin-user-doc -->
2019 * <!-- end-user-doc -->
2020 * @generated
2021 */
2022 @Override
2023 public EAttribute getTax_Card_Jobs_activity_type() {
2024 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(11);
2025 }
2026
2027 /**
2028 * <!-- begin-user-doc -->
2029 * <!-- end-user-doc -->
2030 * @generated
2031 */
2032 @Override
2033 public EAttribute getTax_Card_Jobs_place_of_work() {
2034 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(12);
2035 }
2036
2037 /**
2038 * <!-- begin-user-doc -->
2039 * <!-- end-user-doc -->
2040 * @generated
2041 */
2042 @Override
2043 public EAttribute getTax_Card_Deduction_FD_daily() {
2044 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(13);
2045 }
2046
2047 /**
2048 * <!-- begin-user-doc -->
2049 * <!-- end-user-doc -->
2050 * @generated
2051 */
2052 @Override
2053 public EAttribute getTax_Card_Deduction_FD_monthly() {
2054 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(14);
2055 }
2056
2057 /**
2058 * <!-- begin-user-doc -->
2059 * <!-- end-user-doc -->
2060 * @generated
2061 */
2062 @Override
2063 public EAttribute getTax_Card_Deduction_AC_daily() {
2064 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(15);
2065 }
2066
2067 /**
2068 * <!-- begin-user-doc -->
2069 * <!-- end-user-doc -->
2070 * @generated
2071 */
2072 @Override
2073 public EAttribute getTax_Card_Deduction_AC_monthly() {
2074 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(16);
2075 }
2076
2077 /**
2078 * <!-- begin-user-doc -->
2079 * <!-- end-user-doc -->
2080 * @generated
2081 */
2082 @Override
2083 public EAttribute getTax_Card_Deduction_AC_yearly() {
2084 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(17);
2085 }
2086
2087 /**
2088 * <!-- begin-user-doc -->
2089 * <!-- end-user-doc -->
2090 * @generated
2091 */
2092 @Override
2093 public EAttribute getTax_Card_Deduction_CE_daily() {
2094 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(18);
2095 }
2096
2097 /**
2098 * <!-- begin-user-doc -->
2099 * <!-- end-user-doc -->
2100 * @generated
2101 */
2102 @Override
2103 public EAttribute getTax_Card_Deduction_CE_monthly() {
2104 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(19);
2105 }
2106
2107 /**
2108 * <!-- begin-user-doc -->
2109 * <!-- end-user-doc -->
2110 * @generated
2111 */
2112 @Override
2113 public EAttribute getTax_Card_Deduction_CE_yearly() {
2114 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(20);
2115 }
2116
2117 /**
2118 * <!-- begin-user-doc -->
2119 * <!-- end-user-doc -->
2120 * @generated
2121 */
2122 @Override
2123 public EAttribute getTax_Card_Deduction_DS_daily() {
2124 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(21);
2125 }
2126
2127 /**
2128 * <!-- begin-user-doc -->
2129 * <!-- end-user-doc -->
2130 * @generated
2131 */
2132 @Override
2133 public EAttribute getTax_Card_Deduction_DS_monthly() {
2134 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(22);
2135 }
2136
2137 /**
2138 * <!-- begin-user-doc -->
2139 * <!-- end-user-doc -->
2140 * @generated
2141 */
2142 @Override
2143 public EAttribute getTax_Card_Deduction_FO_daily() {
2144 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(23);
2145 }
2146
2147 /**
2148 * <!-- begin-user-doc -->
2149 * <!-- end-user-doc -->
2150 * @generated
2151 */
2152 @Override
2153 public EAttribute getTax_Card_Deduction_FO_monthly() {
2154 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(24);
2155 }
2156
2157 /**
2158 * <!-- begin-user-doc -->
2159 * <!-- end-user-doc -->
2160 * @generated
2161 */
2162 @Override
2163 public EAttribute getTax_Card_Deduction_FO_yearly() {
2164 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(25);
2165 }
2166
2167 /**
2168 * <!-- begin-user-doc -->
2169 * <!-- end-user-doc -->
2170 * @generated
2171 */
2172 @Override
2173 public EAttribute getTax_Card_Credit_CIS_daily() {
2174 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(26);
2175 }
2176
2177 /**
2178 * <!-- begin-user-doc -->
2179 * <!-- end-user-doc -->
2180 * @generated
2181 */
2182 @Override
2183 public EAttribute getTax_Card_Credit_CIS_monthly() {
2184 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(27);
2185 }
2186
2187 /**
2188 * <!-- begin-user-doc -->
2189 * <!-- end-user-doc -->
2190 * @generated
2191 */
2192 @Override
2193 public EAttribute getTax_Card_Credit_CIM_daily() {
2194 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(28);
2195 }
2196
2197 /**
2198 * <!-- begin-user-doc -->
2199 * <!-- end-user-doc -->
2200 * @generated
2201 */
2202 @Override
2203 public EAttribute getTax_Card_Validity() {
2204 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(29);
2205 }
2206
2207 /**
2208 * <!-- begin-user-doc -->
2209 * <!-- end-user-doc -->
2210 * @generated
2211 */
2212 @Override
2213 public EReference getTax_Card_Income_Tax_Credit() {
2214 return (EReference)tax_CardEClass.getEStructuralFeatures().get(30);
2215 }
2216
2217 /**
2218 * <!-- begin-user-doc -->
2219 * <!-- end-user-doc -->
2220 * @generated
2221 */
2222 @Override
2223 public EReference getTax_Card_Previous() {
2224 return (EReference)tax_CardEClass.getEStructuralFeatures().get(31);
2225 }
2226
2227 /**
2228 * <!-- begin-user-doc -->
2229 * <!-- end-user-doc -->
2230 * @generated
2231 */
2232 @Override
2233 public EReference getTax_Card_Current_tax_card() {
2234 return (EReference)tax_CardEClass.getEStructuralFeatures().get(32);
2235 }
2236
2237 /**
2238 * <!-- begin-user-doc -->
2239 * <!-- end-user-doc -->
2240 * @generated
2241 */
2242 @Override
2243 public EAttribute getTax_Card_Credit_CIM_yearly() {
2244 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(33);
2245 }
2246
2247 /**
2248 * <!-- begin-user-doc -->
2249 * <!-- end-user-doc -->
2250 * @generated
2251 */
2252 @Override
2253 public EAttribute getTax_Card_Deduction_DS_Alimony_yearly() {
2254 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(34);
2255 }
2256
2257 /**
2258 * <!-- begin-user-doc -->
2259 * <!-- end-user-doc -->
2260 * @generated
2261 */
2262 @Override
2263 public EAttribute getTax_Card_Deduction_DS_Debt_yearly() {
2264 return (EAttribute)tax_CardEClass.getEStructuralFeatures().get(35);
2265 }
2266
2267 /**
2268 * <!-- begin-user-doc -->
2269 * <!-- end-user-doc -->
2270 * @generated
2271 */
2272 @Override
2273 public EReference getTax_Card_Income() {
2274 return (EReference)tax_CardEClass.getEStructuralFeatures().get(36);
2275 }
2276
2277 /**
2278 * <!-- begin-user-doc -->
2279 * <!-- end-user-doc -->
2280 * @generated
2281 */
2282 @Override
2283 public EClass getIncome_Tax_Credit() {
2284 return income_Tax_CreditEClass;
2285 }
2286
2287 /**
2288 * <!-- begin-user-doc -->
2289 * <!-- end-user-doc -->
2290 * @generated
2291 */
2292 @Override
2293 public EAttribute getIncome_Tax_Credit_GrantedBy() {
2294 return (EAttribute)income_Tax_CreditEClass.getEStructuralFeatures().get(0);
2295 }
2296
2297 /**
2298 * <!-- begin-user-doc -->
2299 * <!-- end-user-doc -->
2300 * @generated
2301 */
2302 @Override
2303 public EReference getIncome_Tax_Credit_TaxPayer() {
2304 return (EReference)income_Tax_CreditEClass.getEStructuralFeatures().get(1);
2305 }
2306
2307 /**
2308 * <!-- begin-user-doc -->
2309 * <!-- end-user-doc -->
2310 * @generated
2311 */
2312 @Override
2313 public EAttribute getIncome_Tax_Credit_Tax_year() {
2314 return (EAttribute)income_Tax_CreditEClass.getEStructuralFeatures().get(2);
2315 }
2316
2317 /**
2318 * <!-- begin-user-doc -->
2319 * <!-- end-user-doc -->
2320 * @generated
2321 */
2322 @Override
2323 public EAttribute getIncome_Tax_Credit_Yearly() {
2324 return (EAttribute)income_Tax_CreditEClass.getEStructuralFeatures().get(3);
2325 }
2326
2327 /**
2328 * <!-- begin-user-doc -->
2329 * <!-- end-user-doc -->
2330 * @generated
2331 */
2332 @Override
2333 public EAttribute getIncome_Tax_Credit_Monthly() {
2334 return (EAttribute)income_Tax_CreditEClass.getEStructuralFeatures().get(4);
2335 }
2336
2337 /**
2338 * <!-- begin-user-doc -->
2339 * <!-- end-user-doc -->
2340 * @generated
2341 */
2342 @Override
2343 public EAttribute getIncome_Tax_Credit_Daily() {
2344 return (EAttribute)income_Tax_CreditEClass.getEStructuralFeatures().get(5);
2345 }
2346
2347 /**
2348 * <!-- begin-user-doc -->
2349 * <!-- end-user-doc -->
2350 * @generated
2351 */
2352 @Override
2353 public EAttribute getIncome_Tax_Credit_Id7() {
2354 return (EAttribute)income_Tax_CreditEClass.getEStructuralFeatures().get(6);
2355 }
2356
2357 /**
2358 * <!-- begin-user-doc -->
2359 * <!-- end-user-doc -->
2360 * @generated
2361 */
2362 @Override
2363 public EReference getIncome_Tax_Credit_Taxation_Frame() {
2364 return (EReference)income_Tax_CreditEClass.getEStructuralFeatures().get(7);
2365 }
2366
2367 /**
2368 * <!-- begin-user-doc -->
2369 * <!-- end-user-doc -->
2370 * @generated
2371 */
2372 @Override
2373 public EClass getIncome_Detail() {
2374 return income_DetailEClass;
2375 }
2376
2377 /**
2378 * <!-- begin-user-doc -->
2379 * <!-- end-user-doc -->
2380 * @generated
2381 */
2382 @Override
2383 public EAttribute getIncome_Detail_Amount() {
2384 return (EAttribute)income_DetailEClass.getEStructuralFeatures().get(0);
2385 }
2386
2387 /**
2388 * <!-- begin-user-doc -->
2389 * <!-- end-user-doc -->
2390 * @generated
2391 */
2392 @Override
2393 public EAttribute getIncome_Detail_Is_worked() {
2394 return (EAttribute)income_DetailEClass.getEStructuralFeatures().get(1);
2395 }
2396
2397 /**
2398 * <!-- begin-user-doc -->
2399 * <!-- end-user-doc -->
2400 * @generated
2401 */
2402 @Override
2403 public EAttribute getIncome_Detail_Distance() {
2404 return (EAttribute)income_DetailEClass.getEStructuralFeatures().get(2);
2405 }
2406
2407 /**
2408 * <!-- begin-user-doc -->
2409 * <!-- end-user-doc -->
2410 * @generated
2411 */
2412 @Override
2413 public EAttribute getIncome_Detail_Worked_days() {
2414 return (EAttribute)income_DetailEClass.getEStructuralFeatures().get(3);
2415 }
2416
2417 /**
2418 * <!-- begin-user-doc -->
2419 * <!-- end-user-doc -->
2420 * @generated
2421 */
2422 @Override
2423 public EAttribute getIncome_Detail_Is_contributing_CNS() {
2424 return (EAttribute)income_DetailEClass.getEStructuralFeatures().get(4);
2425 }
2426
2427 /**
2428 * <!-- begin-user-doc -->
2429 * <!-- end-user-doc -->
2430 * @generated
2431 */
2432 @Override
2433 public EAttribute getIncome_Detail_Id5() {
2434 return (EAttribute)income_DetailEClass.getEStructuralFeatures().get(5);
2435 }
2436
2437 /**
2438 * <!-- begin-user-doc -->
2439 * <!-- end-user-doc -->
2440 * @generated
2441 */
2442 @Override
2443 public EReference getIncome_Detail_Income() {
2444 return (EReference)income_DetailEClass.getEStructuralFeatures().get(6);
2445 }
2446
2447 /**
2448 * <!-- begin-user-doc -->
2449 * <!-- end-user-doc -->
2450 * @generated
2451 */
2452 @Override
2453 public EClass getFromLaw() {
2454 return fromLawEClass;
2455 }
2456
2457 /**
2458 * <!-- begin-user-doc -->
2459 * <!-- end-user-doc -->
2460 * @generated
2461 */
2462 @Override
2463 public EAttribute getFromLaw_Id() {
2464 return (EAttribute)fromLawEClass.getEStructuralFeatures().get(0);
2465 }
2466
2467 /**
2468 * <!-- begin-user-doc -->
2469 * <!-- end-user-doc -->
2470 * @generated
2471 */
2472 @Override
2473 public EReference getFromLaw_TaxPayer() {
2474 return (EReference)fromLawEClass.getEStructuralFeatures().get(1);
2475 }
2476
2477 /**
2478 * <!-- begin-user-doc -->
2479 * <!-- end-user-doc -->
2480 * @generated
2481 */
2482 @Override
2483 public EClass getFiscal_Address() {
2484 return fiscal_AddressEClass;
2485 }
2486
2487 /**
2488 * <!-- begin-user-doc -->
2489 * <!-- end-user-doc -->
2490 * @generated
2491 */
2492 @Override
2493 public EClass getHabitual_Address() {
2494 return habitual_AddressEClass;
2495 }
2496
2497 /**
2498 * <!-- begin-user-doc -->
2499 * <!-- end-user-doc -->
2500 * @generated
2501 */
2502 @Override
2503 public EClass getMarriage_Record() {
2504 return marriage_RecordEClass;
2505 }
2506
2507 /**
2508 * <!-- begin-user-doc -->
2509 * <!-- end-user-doc -->
2510 * @generated
2511 */
2512 @Override
2513 public EClass getNon_Resident_Tax_Payer() {
2514 return non_Resident_Tax_PayerEClass;
2515 }
2516
2517 /**
2518 * <!-- begin-user-doc -->
2519 * <!-- end-user-doc -->
2520 * @generated
2521 */
2522 @Override
2523 public EAttribute getNon_Resident_Tax_Payer_Is_assimilated_to_resident() {
2524 return (EAttribute)non_Resident_Tax_PayerEClass.getEStructuralFeatures().get(0);
2525 }
2526
2527 /**
2528 * <!-- begin-user-doc -->
2529 * <!-- end-user-doc -->
2530 * @generated
2531 */
2532 @Override
2533 public EClass getPartnership_Record() {
2534 return partnership_RecordEClass;
2535 }
2536
2537 /**
2538 * <!-- begin-user-doc -->
2539 * <!-- end-user-doc -->
2540 * @generated
2541 */
2542 @Override
2543 public EClass getResident_Tax_Payer() {
2544 return resident_Tax_PayerEClass;
2545 }
2546
2547 /**
2548 * <!-- begin-user-doc -->
2549 * <!-- end-user-doc -->
2550 * @generated
2551 */
2552 @Override
2553 public EClass getTrade_and_Business_Income() {
2554 return trade_and_Business_IncomeEClass;
2555 }
2556
2557 /**
2558 * <!-- begin-user-doc -->
2559 * <!-- end-user-doc -->
2560 * @generated
2561 */
2562 @Override
2563 public EClass getAgriculture_and_Forestry_Income() {
2564 return agriculture_and_Forestry_IncomeEClass;
2565 }
2566
2567 /**
2568 * <!-- begin-user-doc -->
2569 * <!-- end-user-doc -->
2570 * @generated
2571 */
2572 @Override
2573 public EClass getPensions_and_Annuities_Income() {
2574 return pensions_and_Annuities_IncomeEClass;
2575 }
2576
2577 /**
2578 * <!-- begin-user-doc -->
2579 * <!-- end-user-doc -->
2580 * @generated
2581 */
2582 @Override
2583 public EAttribute getPensions_and_Annuities_Income_Occasional_payement() {
2584 return (EAttribute)pensions_and_Annuities_IncomeEClass.getEStructuralFeatures().get(0);
2585 }
2586
2587 /**
2588 * <!-- begin-user-doc -->
2589 * <!-- end-user-doc -->
2590 * @generated
2591 */
2592 @Override
2593 public EClass getCapital_and_Investments_Income() {
2594 return capital_and_Investments_IncomeEClass;
2595 }
2596
2597 /**
2598 * <!-- begin-user-doc -->
2599 * <!-- end-user-doc -->
2600 * @generated
2601 */
2602 @Override
2603 public EClass getEmployment_Income() {
2604 return employment_IncomeEClass;
2605 }
2606
2607 /**
2608 * <!-- begin-user-doc -->
2609 * <!-- end-user-doc -->
2610 * @generated
2611 */
2612 @Override
2613 public EClass getRentals_and_Leases_Income() {
2614 return rentals_and_Leases_IncomeEClass;
2615 }
2616
2617 /**
2618 * <!-- begin-user-doc -->
2619 * <!-- end-user-doc -->
2620 * @generated
2621 */
2622 @Override
2623 public EAttribute getRentals_and_Leases_Income_Is_periodic() {
2624 return (EAttribute)rentals_and_Leases_IncomeEClass.getEStructuralFeatures().get(0);
2625 }
2626
2627 /**
2628 * <!-- begin-user-doc -->
2629 * <!-- end-user-doc -->
2630 * @generated
2631 */
2632 @Override
2633 public EClass getForeign_Income() {
2634 return foreign_IncomeEClass;
2635 }
2636
2637 /**
2638 * <!-- begin-user-doc -->
2639 * <!-- end-user-doc -->
2640 * @generated
2641 */
2642 @Override
2643 public EClass getLocal_Income() {
2644 return local_IncomeEClass;
2645 }
2646
2647 /**
2648 * <!-- begin-user-doc -->
2649 * <!-- end-user-doc -->
2650 * @generated
2651 */
2652 @Override
2653 public EClass getCIM() {
2654 return cimEClass;
2655 }
2656
2657 /**
2658 * <!-- begin-user-doc -->
2659 * <!-- end-user-doc -->
2660 * @generated
2661 */
2662 @Override
2663 public EClass getCIP() {
2664 return cipEClass;
2665 }
2666
2667 /**
2668 * <!-- begin-user-doc -->
2669 * <!-- end-user-doc -->
2670 * @generated
2671 */
2672 @Override
2673 public EClass getCIS() {
2674 return cisEClass;
2675 }
2676
2677 /**
2678 * <!-- begin-user-doc -->
2679 * <!-- end-user-doc -->
2680 * @generated
2681 */
2682 @Override
2683 public EClass getFD() {
2684 return fdEClass;
2685 }
2686
2687 /**
2688 * <!-- begin-user-doc -->
2689 * <!-- end-user-doc -->
2690 * @generated
2691 */
2692 @Override
2693 public EAttribute getFD_Distance_declared_in_january() {
2694 return (EAttribute)fdEClass.getEStructuralFeatures().get(0);
2695 }
2696
2697 /**
2698 * <!-- begin-user-doc -->
2699 * <!-- end-user-doc -->
2700 * @generated
2701 */
2702 @Override
2703 public EAttribute getFD_Calculated_distance() {
2704 return (EAttribute)fdEClass.getEStructuralFeatures().get(1);
2705 }
2706
2707 /**
2708 * <!-- begin-user-doc -->
2709 * <!-- end-user-doc -->
2710 * @generated
2711 */
2712 @Override
2713 public EClass getProfessional_Expenses_Deduction() {
2714 return professional_Expenses_DeductionEClass;
2715 }
2716
2717 /**
2718 * <!-- begin-user-doc -->
2719 * <!-- end-user-doc -->
2720 * @generated
2721 */
2722 @Override
2723 public EClass getFO() {
2724 return foEClass;
2725 }
2726
2727 /**
2728 * <!-- begin-user-doc -->
2729 * <!-- end-user-doc -->
2730 * @generated
2731 */
2732 @Override
2733 public EAttribute getFO_Rate_type_for_FO() {
2734 return (EAttribute)foEClass.getEStructuralFeatures().get(0);
2735 }
2736
2737 /**
2738 * <!-- begin-user-doc -->
2739 * <!-- end-user-doc -->
2740 * @generated
2741 */
2742 @Override
2743 public EClass getDS_for_Permanent_Expense() {
2744 return dS_for_Permanent_ExpenseEClass;
2745 }
2746
2747 /**
2748 * <!-- begin-user-doc -->
2749 * <!-- end-user-doc -->
2750 * @generated
2751 */
2752 @Override
2753 public EAttribute getDS_for_Permanent_Expense_Permanent_expense_category() {
2754 return (EAttribute)dS_for_Permanent_ExpenseEClass.getEStructuralFeatures().get(0);
2755 }
2756
2757 /**
2758 * <!-- begin-user-doc -->
2759 * <!-- end-user-doc -->
2760 * @generated
2761 */
2762 @Override
2763 public EClass getDS() {
2764 return dsEClass;
2765 }
2766
2767 /**
2768 * <!-- begin-user-doc -->
2769 * <!-- end-user-doc -->
2770 * @generated
2771 */
2772 @Override
2773 public EAttribute getDS_Maximum_deductible_amount() {
2774 return (EAttribute)dsEClass.getEStructuralFeatures().get(0);
2775 }
2776
2777 /**
2778 * <!-- begin-user-doc -->
2779 * <!-- end-user-doc -->
2780 * @generated
2781 */
2782 @Override
2783 public EAttribute getDS_Id3() {
2784 return (EAttribute)dsEClass.getEStructuralFeatures().get(1);
2785 }
2786
2787 /**
2788 * <!-- begin-user-doc -->
2789 * <!-- end-user-doc -->
2790 * @generated
2791 */
2792 @Override
2793 public EClass getDS_for_Interest_Expense() {
2794 return dS_for_Interest_ExpenseEClass;
2795 }
2796
2797 /**
2798 * <!-- begin-user-doc -->
2799 * <!-- end-user-doc -->
2800 * @generated
2801 */
2802 @Override
2803 public EClass getDS_for_Health_and_Pension_Insurance() {
2804 return dS_for_Health_and_Pension_InsuranceEClass;
2805 }
2806
2807 /**
2808 * <!-- begin-user-doc -->
2809 * <!-- end-user-doc -->
2810 * @generated
2811 */
2812 @Override
2813 public EAttribute getDS_for_Health_and_Pension_Insurance_Insurance_category() {
2814 return (EAttribute)dS_for_Health_and_Pension_InsuranceEClass.getEStructuralFeatures().get(0);
2815 }
2816
2817 /**
2818 * <!-- begin-user-doc -->
2819 * <!-- end-user-doc -->
2820 * @generated
2821 */
2822 @Override
2823 public EClass getDS_for_Private_Insurance_and_Plan() {
2824 return dS_for_Private_Insurance_and_PlanEClass;
2825 }
2826
2827 /**
2828 * <!-- begin-user-doc -->
2829 * <!-- end-user-doc -->
2830 * @generated
2831 */
2832 @Override
2833 public EAttribute getDS_for_Private_Insurance_and_Plan_Private_insurance_and_plan_category() {
2834 return (EAttribute)dS_for_Private_Insurance_and_PlanEClass.getEStructuralFeatures().get(0);
2835 }
2836
2837 /**
2838 * <!-- begin-user-doc -->
2839 * <!-- end-user-doc -->
2840 * @generated
2841 */
2842 @Override
2843 public EAttribute getDS_for_Private_Insurance_and_Plan_Increase_for_life_insurance() {
2844 return (EAttribute)dS_for_Private_Insurance_and_PlanEClass.getEStructuralFeatures().get(1);
2845 }
2846
2847 /**
2848 * <!-- begin-user-doc -->
2849 * <!-- end-user-doc -->
2850 * @generated
2851 */
2852 @Override
2853 public EAttribute getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_private_insurance() {
2854 return (EAttribute)dS_for_Private_Insurance_and_PlanEClass.getEStructuralFeatures().get(2);
2855 }
2856
2857 /**
2858 * <!-- begin-user-doc -->
2859 * <!-- end-user-doc -->
2860 * @generated
2861 */
2862 @Override
2863 public EAttribute getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_old_age_pension_plan() {
2864 return (EAttribute)dS_for_Private_Insurance_and_PlanEClass.getEStructuralFeatures().get(3);
2865 }
2866
2867 /**
2868 * <!-- begin-user-doc -->
2869 * <!-- end-user-doc -->
2870 * @generated
2871 */
2872 @Override
2873 public EClass getDS_for_Loss_Carryforward() {
2874 return dS_for_Loss_CarryforwardEClass;
2875 }
2876
2877 /**
2878 * <!-- begin-user-doc -->
2879 * <!-- end-user-doc -->
2880 * @generated
2881 */
2882 @Override
2883 public EClass getDS_for_Donation() {
2884 return dS_for_DonationEClass;
2885 }
2886
2887 /**
2888 * <!-- begin-user-doc -->
2889 * <!-- end-user-doc -->
2890 * @generated
2891 */
2892 @Override
2893 public EClass getPermanent_Expense() {
2894 return permanent_ExpenseEClass;
2895 }
2896
2897 /**
2898 * <!-- begin-user-doc -->
2899 * <!-- end-user-doc -->
2900 * @generated
2901 */
2902 @Override
2903 public EAttribute getPermanent_Expense_Category() {
2904 return (EAttribute)permanent_ExpenseEClass.getEStructuralFeatures().get(0);
2905 }
2906
2907 /**
2908 * <!-- begin-user-doc -->
2909 * <!-- end-user-doc -->
2910 * @generated
2911 */
2912 @Override
2913 public EAttribute getPermanent_Expense_Is_eligible_for_deduction() {
2914 return (EAttribute)permanent_ExpenseEClass.getEStructuralFeatures().get(1);
2915 }
2916
2917 /**
2918 * <!-- begin-user-doc -->
2919 * <!-- end-user-doc -->
2920 * @generated
2921 */
2922 @Override
2923 public EClass getSpecial_Expense_DS() {
2924 return special_Expense_DSEClass;
2925 }
2926
2927 /**
2928 * <!-- begin-user-doc -->
2929 * <!-- end-user-doc -->
2930 * @generated
2931 */
2932 @Override
2933 public EClass getInterest_Expense() {
2934 return interest_ExpenseEClass;
2935 }
2936
2937 /**
2938 * <!-- begin-user-doc -->
2939 * <!-- end-user-doc -->
2940 * @generated
2941 */
2942 @Override
2943 public EClass getPrivate_Insurance_and_Plan() {
2944 return private_Insurance_and_PlanEClass;
2945 }
2946
2947 /**
2948 * <!-- begin-user-doc -->
2949 * <!-- end-user-doc -->
2950 * @generated
2951 */
2952 @Override
2953 public EAttribute getPrivate_Insurance_and_Plan_Category() {
2954 return (EAttribute)private_Insurance_and_PlanEClass.getEStructuralFeatures().get(0);
2955 }
2956
2957 /**
2958 * <!-- begin-user-doc -->
2959 * <!-- end-user-doc -->
2960 * @generated
2961 */
2962 @Override
2963 public EAttribute getPrivate_Insurance_and_Plan_Duration_of_contract() {
2964 return (EAttribute)private_Insurance_and_PlanEClass.getEStructuralFeatures().get(1);
2965 }
2966
2967 /**
2968 * <!-- begin-user-doc -->
2969 * <!-- end-user-doc -->
2970 * @generated
2971 */
2972 @Override
2973 public EAttribute getPrivate_Insurance_and_Plan_Is_private_insurance_and_plan_eligible_for_deduction() {
2974 return (EAttribute)private_Insurance_and_PlanEClass.getEStructuralFeatures().get(2);
2975 }
2976
2977 /**
2978 * <!-- begin-user-doc -->
2979 * <!-- end-user-doc -->
2980 * @generated
2981 */
2982 @Override
2983 public EClass getHealth_and_Pension_Insurance() {
2984 return health_and_Pension_InsuranceEClass;
2985 }
2986
2987 /**
2988 * <!-- begin-user-doc -->
2989 * <!-- end-user-doc -->
2990 * @generated
2991 */
2992 @Override
2993 public EAttribute getHealth_and_Pension_Insurance_Category() {
2994 return (EAttribute)health_and_Pension_InsuranceEClass.getEStructuralFeatures().get(0);
2995 }
2996
2997 /**
2998 * <!-- begin-user-doc -->
2999 * <!-- end-user-doc -->
3000 * @generated
3001 */
3002 @Override
3003 public EAttribute getHealth_and_Pension_Insurance_Is_related_to_additional_salary() {
3004 return (EAttribute)health_and_Pension_InsuranceEClass.getEStructuralFeatures().get(1);
3005 }
3006
3007 /**
3008 * <!-- begin-user-doc -->
3009 * <!-- end-user-doc -->
3010 * @generated
3011 */
3012 @Override
3013 public EClass getDonation() {
3014 return donationEClass;
3015 }
3016
3017 /**
3018 * <!-- begin-user-doc -->
3019 * <!-- end-user-doc -->
3020 * @generated
3021 */
3022 @Override
3023 public EAttribute getDonation_Beneficiary1() {
3024 return (EAttribute)donationEClass.getEStructuralFeatures().get(0);
3025 }
3026
3027 /**
3028 * <!-- begin-user-doc -->
3029 * <!-- end-user-doc -->
3030 * @generated
3031 */
3032 @Override
3033 public EAttribute getDonation_Is_beneficiary_eligible() {
3034 return (EAttribute)donationEClass.getEStructuralFeatures().get(1);
3035 }
3036
3037 /**
3038 * <!-- begin-user-doc -->
3039 * <!-- end-user-doc -->
3040 * @generated
3041 */
3042 @Override
3043 public EAttribute getDonation_Is_donation_reported() {
3044 return (EAttribute)donationEClass.getEStructuralFeatures().get(2);
3045 }
3046
3047 /**
3048 * <!-- begin-user-doc -->
3049 * <!-- end-user-doc -->
3050 * @generated
3051 */
3052 @Override
3053 public EClass getLoss_Carryforward() {
3054 return loss_CarryforwardEClass;
3055 }
3056
3057 /**
3058 * <!-- begin-user-doc -->
3059 * <!-- end-user-doc -->
3060 * @generated
3061 */
3062 @Override
3063 public EAttribute getLoss_Carryforward_Regular_accountability() {
3064 return (EAttribute)loss_CarryforwardEClass.getEStructuralFeatures().get(0);
3065 }
3066
3067 /**
3068 * <!-- begin-user-doc -->
3069 * <!-- end-user-doc -->
3070 * @generated
3071 */
3072 @Override
3073 public EAttribute getLoss_Carryforward_Compensation_by_other_means() {
3074 return (EAttribute)loss_CarryforwardEClass.getEStructuralFeatures().get(1);
3075 }
3076
3077 /**
3078 * <!-- begin-user-doc -->
3079 * <!-- end-user-doc -->
3080 * @generated
3081 */
3082 @Override
3083 public EAttribute getLoss_Carryforward_Tax_payer_has_inherited_business_ownership() {
3084 return (EAttribute)loss_CarryforwardEClass.getEStructuralFeatures().get(2);
3085 }
3086
3087 /**
3088 * <!-- begin-user-doc -->
3089 * <!-- end-user-doc -->
3090 * @generated
3091 */
3092 @Override
3093 public EAttribute getLoss_Carryforward_Tax_payer_has_been_partner_in_business() {
3094 return (EAttribute)loss_CarryforwardEClass.getEStructuralFeatures().get(3);
3095 }
3096
3097 /**
3098 * <!-- begin-user-doc -->
3099 * <!-- end-user-doc -->
3100 * @generated
3101 */
3102 @Override
3103 public EClass getSpousal_Expense_AC() {
3104 return spousal_Expense_ACEClass;
3105 }
3106
3107 /**
3108 * <!-- begin-user-doc -->
3109 * <!-- end-user-doc -->
3110 * @generated
3111 */
3112 @Override
3113 public EClass getExtraordinary_Expense_CE() {
3114 return extraordinary_Expense_CEEClass;
3115 }
3116
3117 /**
3118 * <!-- begin-user-doc -->
3119 * <!-- end-user-doc -->
3120 * @generated
3121 */
3122 @Override
3123 public EAttribute getExtraordinary_Expense_CE_Thresholded_deduction_percentage() {
3124 return (EAttribute)extraordinary_Expense_CEEClass.getEStructuralFeatures().get(0);
3125 }
3126
3127 /**
3128 * <!-- begin-user-doc -->
3129 * <!-- end-user-doc -->
3130 * @generated
3131 */
3132 @Override
3133 public EAttribute getExtraordinary_Expense_CE_Ce_type() {
3134 return (EAttribute)extraordinary_Expense_CEEClass.getEStructuralFeatures().get(1);
3135 }
3136
3137 /**
3138 * <!-- begin-user-doc -->
3139 * <!-- end-user-doc -->
3140 * @generated
3141 */
3142 @Override
3143 public EClass getTravel_Expense_FD() {
3144 return travel_Expense_FDEClass;
3145 }
3146
3147 /**
3148 * <!-- begin-user-doc -->
3149 * <!-- end-user-doc -->
3150 * @generated
3151 */
3152 @Override
3153 public EClass getProfessional_Expense() {
3154 return professional_ExpenseEClass;
3155 }
3156
3157 /**
3158 * <!-- begin-user-doc -->
3159 * <!-- end-user-doc -->
3160 * @generated
3161 */
3162 @Override
3163 public EClass getMiscellaneous_Expense_FO() {
3164 return miscellaneous_Expense_FOEClass;
3165 }
3166
3167 /**
3168 * <!-- begin-user-doc -->
3169 * <!-- end-user-doc -->
3170 * @generated
3171 */
3172 @Override
3173 public EEnum getGrantor() {
3174 return grantorEEnum;
3175 }
3176
3177 /**
3178 * <!-- begin-user-doc -->
3179 * <!-- end-user-doc -->
3180 * @generated
3181 */
3182 @Override
3183 public EEnum getDisability_Types() {
3184 return disability_TypesEEnum;
3185 }
3186
3187 /**
3188 * <!-- begin-user-doc -->
3189 * <!-- end-user-doc -->
3190 * @generated
3191 */
3192 @Override
3193 public EEnum getCountry() {
3194 return countryEEnum;
3195 }
3196
3197 /**
3198 * <!-- begin-user-doc -->
3199 * <!-- end-user-doc -->
3200 * @generated
3201 */
3202 @Override
3203 public EEnum getTax_Card_Type() {
3204 return tax_Card_TypeEEnum;
3205 }
3206
3207 /**
3208 * <!-- begin-user-doc -->
3209 * <!-- end-user-doc -->
3210 * @generated
3211 */
3212 @Override
3213 public EEnum getTax_Office() {
3214 return tax_OfficeEEnum;
3215 }
3216
3217 /**
3218 * <!-- begin-user-doc -->
3219 * <!-- end-user-doc -->
3220 * @generated
3221 */
3222 @Override
3223 public EEnum getTax_Class_Category() {
3224 return tax_Class_CategoryEEnum;
3225 }
3226
3227 /**
3228 * <!-- begin-user-doc -->
3229 * <!-- end-user-doc -->
3230 * @generated
3231 */
3232 @Override
3233 public EEnum getJob_Activity() {
3234 return job_ActivityEEnum;
3235 }
3236
3237 /**
3238 * <!-- begin-user-doc -->
3239 * <!-- end-user-doc -->
3240 * @generated
3241 */
3242 @Override
3243 public EEnum getTown() {
3244 return townEEnum;
3245 }
3246
3247 /**
3248 * <!-- begin-user-doc -->
3249 * <!-- end-user-doc -->
3250 * @generated
3251 */
3252 @Override
3253 public EEnum getType_of_Rate() {
3254 return type_of_RateEEnum;
3255 }
3256
3257 /**
3258 * <!-- begin-user-doc -->
3259 * <!-- end-user-doc -->
3260 * @generated
3261 */
3262 @Override
3263 public EEnum getCE_Type() {
3264 return cE_TypeEEnum;
3265 }
3266
3267 /**
3268 * <!-- begin-user-doc -->
3269 * <!-- end-user-doc -->
3270 * @generated
3271 */
3272 @Override
3273 public EEnum getExpense_Purpose() {
3274 return expense_PurposeEEnum;
3275 }
3276
3277 /**
3278 * <!-- begin-user-doc -->
3279 * <!-- end-user-doc -->
3280 * @generated
3281 */
3282 @Override
3283 public EEnum getDependent_Type() {
3284 return dependent_TypeEEnum;
3285 }
3286
3287 /**
3288 * <!-- begin-user-doc -->
3289 * <!-- end-user-doc -->
3290 * @generated
3291 */
3292 @Override
3293 public EEnum getSeparation_Causes() {
3294 return separation_CausesEEnum;
3295 }
3296
3297 /**
3298 * <!-- begin-user-doc -->
3299 * <!-- end-user-doc -->
3300 * @generated
3301 */
3302 @Override
3303 public EEnum getCategory_of_Permanent_Expense() {
3304 return category_of_Permanent_ExpenseEEnum;
3305 }
3306
3307 /**
3308 * <!-- begin-user-doc -->
3309 * <!-- end-user-doc -->
3310 * @generated
3311 */
3312 @Override
3313 public EEnum getCategory_of_Health_and_Pension_Insurances() {
3314 return category_of_Health_and_Pension_InsurancesEEnum;
3315 }
3316
3317 /**
3318 * <!-- begin-user-doc -->
3319 * <!-- end-user-doc -->
3320 * @generated
3321 */
3322 @Override
3323 public EEnum getCategory_of_Private_Insurance_and_Plan() {
3324 return category_of_Private_Insurance_and_PlanEEnum;
3325 }
3326
3327 /**
3328 * <!-- begin-user-doc -->
3329 * <!-- end-user-doc -->
3330 * @generated
3331 */
3332 @Override
3333 public EEnum getLegal_Union_Types() {
3334 return legal_Union_TypesEEnum;
3335 }
3336
3337 /**
3338 * <!-- begin-user-doc -->
3339 * <!-- end-user-doc -->
3340 * @generated
3341 */
3342 @Override
3343 public TaxationFactory getTaxationFactory() {
3344 return (TaxationFactory)getEFactoryInstance();
3345 }
3346
3347 /**
3348 * <!-- begin-user-doc -->
3349 * <!-- end-user-doc -->
3350 * @generated
3351 */
3352 private boolean isCreated = false;
3353
3354 /**
3355 * Creates the meta-model objects for the package. This method is
3356 * guarded to have no affect on any invocation but its first.
3357 * <!-- begin-user-doc -->
3358 * <!-- end-user-doc -->
3359 * @generated
3360 */
3361 public void createPackageContents() {
3362 if (isCreated) return;
3363 isCreated = true;
3364
3365 // Create classes and their features
3366 constantsEClass = createEClass(CONSTANTS);
3367 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD);
3368 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE);
3369 createEAttribute(constantsEClass, CONSTANTS__MINIMUM_SALARY);
3370 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION);
3371 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS);
3372 createEAttribute(constantsEClass, CONSTANTS__MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS);
3373 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC);
3374 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE);
3375 createEAttribute(constantsEClass, CONSTANTS__MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION);
3376 createEAttribute(constantsEClass, CONSTANTS__MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION);
3377 createEAttribute(constantsEClass, CONSTANTS__MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION);
3378 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIM_DAILY);
3379 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIM_MONTHLY);
3380 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIM_YEARLY);
3381 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIP_DAILY);
3382 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIP_MONTHLY);
3383 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIP_YEARLY);
3384 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIS_DAILY);
3385 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIS_MONTHLY);
3386 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_CIS_YEARLY);
3387 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT);
3388 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS);
3389 createEAttribute(constantsEClass, CONSTANTS__FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE);
3390 createEAttribute(constantsEClass, CONSTANTS__DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE);
3391 createEAttribute(constantsEClass, CONSTANTS__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE);
3392
3393 income_TaxEClass = createEClass(INCOME_TAX);
3394 createEReference(income_TaxEClass, INCOME_TAX__TAX_PAYER);
3395 createEAttribute(income_TaxEClass, INCOME_TAX__TAX_AMOUNT);
3396 createEAttribute(income_TaxEClass, INCOME_TAX__TAX_YEAR);
3397 createEAttribute(income_TaxEClass, INCOME_TAX__ID6);
3398
3399 tax_PayerEClass = createEClass(TAX_PAYER);
3400 createEReference(tax_PayerEClass, TAX_PAYER__DEPENDENTS);
3401 createEReference(tax_PayerEClass, TAX_PAYER__FROM_AGENT);
3402 createEReference(tax_PayerEClass, TAX_PAYER__INCOMES);
3403 createEReference(tax_PayerEClass, TAX_PAYER__FROM_LAW);
3404 createEAttribute(tax_PayerEClass, TAX_PAYER__TAXES_DUE);
3405
3406 physical_PersonEClass = createEClass(PHYSICAL_PERSON);
3407 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__IS_ASSISTING_SPOUSE);
3408 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__SS_NO);
3409 createEReference(physical_PersonEClass, PHYSICAL_PERSON__ADDRESSES);
3410 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__BIRTH_YEAR);
3411 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__DISABILITY_PERCENTAGE);
3412 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__DISABILITY_TYPE);
3413 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__IS_AFFILIATED_PERSONNALY_TO_SOCIAL_SECURITY);
3414 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__BIRTH_MONTH);
3415 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__BIRTH_DAY);
3416 createEReference(physical_PersonEClass, PHYSICAL_PERSON__EXPENSES);
3417 createEAttribute(physical_PersonEClass, PHYSICAL_PERSON__IS_WIDOWER);
3418 createEReference(physical_PersonEClass, PHYSICAL_PERSON__OWNS_ADDRESS);
3419
3420 addressEClass = createEClass(ADDRESS);
3421 createEAttribute(addressEClass, ADDRESS__COUNTRY);
3422 createEAttribute(addressEClass, ADDRESS__STREET);
3423 createEAttribute(addressEClass, ADDRESS__ZIP_CODE);
3424 createEAttribute(addressEClass, ADDRESS__CITY);
3425 createEAttribute(addressEClass, ADDRESS__ID2);
3426 createEReference(addressEClass, ADDRESS__TAX_PAYER);
3427
3428 expenseEClass = createEClass(EXPENSE);
3429 createEAttribute(expenseEClass, EXPENSE__DECLARED_AMOUNT);
3430 createEAttribute(expenseEClass, EXPENSE__EXPENSE_PURPOSE);
3431 createEReference(expenseEClass, EXPENSE__DEPENDENT);
3432 createEReference(expenseEClass, EXPENSE__FROM_AGENT);
3433 createEReference(expenseEClass, EXPENSE__INCOME);
3434 createEAttribute(expenseEClass, EXPENSE__ID4);
3435 createEReference(expenseEClass, EXPENSE__BENEFICIARY);
3436
3437 dependentEClass = createEClass(DEPENDENT);
3438 createEAttribute(dependentEClass, DEPENDENT__DEPENDENT_TYPE);
3439 createEReference(dependentEClass, DEPENDENT__RESPONSIBLE_PERSON);
3440 createEAttribute(dependentEClass, DEPENDENT__CONTINUED_STUDIES);
3441 createEReference(dependentEClass, DEPENDENT__ALLOWANCES);
3442 createEReference(dependentEClass, DEPENDENT__HOUSEHOLD);
3443 createEReference(dependentEClass, DEPENDENT__FROM_AGENT);
3444 createEReference(dependentEClass, DEPENDENT__EXPENSE);
3445
3446 external_AllowanceEClass = createEClass(EXTERNAL_ALLOWANCE);
3447 createEAttribute(external_AllowanceEClass, EXTERNAL_ALLOWANCE__AMOUNT);
3448 createEAttribute(external_AllowanceEClass, EXTERNAL_ALLOWANCE__GRANTOR);
3449 createEAttribute(external_AllowanceEClass, EXTERNAL_ALLOWANCE__STARTING_YEAR);
3450 createEAttribute(external_AllowanceEClass, EXTERNAL_ALLOWANCE__ENDING_YEAR);
3451 createEReference(external_AllowanceEClass, EXTERNAL_ALLOWANCE__RECIVER);
3452 createEAttribute(external_AllowanceEClass, EXTERNAL_ALLOWANCE__ID5);
3453 createEReference(external_AllowanceEClass, EXTERNAL_ALLOWANCE__PERSON);
3454
3455 householdEClass = createEClass(HOUSEHOLD);
3456 createEReference(householdEClass, HOUSEHOLD__PARENTS);
3457 createEAttribute(householdEClass, HOUSEHOLD__ID1);
3458 createEReference(householdEClass, HOUSEHOLD__CHILDREN);
3459
3460 legal_Union_RecordEClass = createEClass(LEGAL_UNION_RECORD);
3461 createEAttribute(legal_Union_RecordEClass, LEGAL_UNION_RECORD__START_YEAR);
3462 createEAttribute(legal_Union_RecordEClass, LEGAL_UNION_RECORD__END_YEAR);
3463 createEAttribute(legal_Union_RecordEClass, LEGAL_UNION_RECORD__SEPARATION_CAUSE);
3464 createEReference(legal_Union_RecordEClass, LEGAL_UNION_RECORD__INDIVIDUAL_A);
3465 createEReference(legal_Union_RecordEClass, LEGAL_UNION_RECORD__INDIVIDUAL_B);
3466 createEReference(legal_Union_RecordEClass, LEGAL_UNION_RECORD__PROPERTIES);
3467 createEAttribute(legal_Union_RecordEClass, LEGAL_UNION_RECORD__MUTUAL_AGREEMENT);
3468 createEAttribute(legal_Union_RecordEClass, LEGAL_UNION_RECORD__ID9);
3469 createEReference(legal_Union_RecordEClass, LEGAL_UNION_RECORD__HOUSEHOLD);
3470
3471 tax_PropertyEClass = createEClass(TAX_PROPERTY);
3472 createEAttribute(tax_PropertyEClass, TAX_PROPERTY__STARTING_YEAR);
3473 createEAttribute(tax_PropertyEClass, TAX_PROPERTY__ID10);
3474 createEReference(tax_PropertyEClass, TAX_PROPERTY__UNION_RECORD);
3475
3476 tax_CaseEClass = createEClass(TAX_CASE);
3477
3478 fromAgentEClass = createEClass(FROM_AGENT);
3479 createEReference(fromAgentEClass, FROM_AGENT__TAX_PAYER);
3480 createEAttribute(fromAgentEClass, FROM_AGENT__IS_DEPENDENT_ELIGIBLE_FOR_CE_NOT_IN_HOUSHOLD_CHILDREN_CARE);
3481 createEReference(fromAgentEClass, FROM_AGENT__EXPENSE);
3482 createEAttribute(fromAgentEClass, FROM_AGENT__IS_ELIGIBLE_DEBT);
3483 createEReference(fromAgentEClass, FROM_AGENT__DEPENDENT);
3484
3485 incomeEClass = createEClass(INCOME);
3486 createEAttribute(incomeEClass, INCOME__INCOME_AMOUNT);
3487 createEReference(incomeEClass, INCOME__INCOME_TYPE);
3488 createEAttribute(incomeEClass, INCOME__START_DATE_WITHIN_TAXATION_YEAR);
3489 createEAttribute(incomeEClass, INCOME__START_DATE_OF_CONTRACT);
3490 createEAttribute(incomeEClass, INCOME__END_DATE_WITHIN_TAXATION_YEAR);
3491 createEReference(incomeEClass, INCOME__TAX_CARD);
3492 createEAttribute(incomeEClass, INCOME__TAX_LIABILITY);
3493 createEReference(incomeEClass, INCOME__TAX_PAYER);
3494 createEReference(incomeEClass, INCOME__DETAILS);
3495 createEAttribute(incomeEClass, INCOME__NUM);
3496 createEReference(incomeEClass, INCOME__EXPENSES);
3497
3498 income_TypeEClass = createEClass(INCOME_TYPE);
3499 createEAttribute(income_TypeEClass, INCOME_TYPE__SUBJECT_TO_WITHHOLDING_TAX);
3500 createEAttribute(income_TypeEClass, INCOME_TYPE__ID8);
3501 createEReference(income_TypeEClass, INCOME_TYPE__INCOME);
3502
3503 tax_CardEClass = createEClass(TAX_CARD);
3504 createEAttribute(tax_CardEClass, TAX_CARD__CARD_IDENTIFIER);
3505 createEAttribute(tax_CardEClass, TAX_CARD__TAX_CARD_TYPE);
3506 createEAttribute(tax_CardEClass, TAX_CARD__TAX_OFFICE);
3507 createEAttribute(tax_CardEClass, TAX_CARD__VALID_FROM_DATE);
3508 createEAttribute(tax_CardEClass, TAX_CARD__VALID_UNTIL_DATE);
3509 createEAttribute(tax_CardEClass, TAX_CARD__PERCENTAGE_OF_WITHOLDING);
3510 createEAttribute(tax_CardEClass, TAX_CARD__TAX_PAYERS_NAME_SURNAME);
3511 createEAttribute(tax_CardEClass, TAX_CARD__TAX_PAYERS_PARTNER_NAME_SURNAME);
3512 createEReference(tax_CardEClass, TAX_CARD__TAX_PAYERS_ADDRESS);
3513 createEAttribute(tax_CardEClass, TAX_CARD__JOBS_EMPLOYER_SS_NO);
3514 createEAttribute(tax_CardEClass, TAX_CARD__JOBS_EMPLOYERS_NAME);
3515 createEAttribute(tax_CardEClass, TAX_CARD__JOBS_ACTIVITY_TYPE);
3516 createEAttribute(tax_CardEClass, TAX_CARD__JOBS_PLACE_OF_WORK);
3517 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_FD_DAILY);
3518 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_FD_MONTHLY);
3519 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_AC_DAILY);
3520 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_AC_MONTHLY);
3521 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_AC_YEARLY);
3522 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_CE_DAILY);
3523 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_CE_MONTHLY);
3524 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_CE_YEARLY);
3525 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_DS_DAILY);
3526 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_DS_MONTHLY);
3527 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_FO_DAILY);
3528 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_FO_MONTHLY);
3529 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_FO_YEARLY);
3530 createEAttribute(tax_CardEClass, TAX_CARD__CREDIT_CIS_DAILY);
3531 createEAttribute(tax_CardEClass, TAX_CARD__CREDIT_CIS_MONTHLY);
3532 createEAttribute(tax_CardEClass, TAX_CARD__CREDIT_CIM_DAILY);
3533 createEAttribute(tax_CardEClass, TAX_CARD__VALIDITY);
3534 createEReference(tax_CardEClass, TAX_CARD__INCOME_TAX_CREDIT);
3535 createEReference(tax_CardEClass, TAX_CARD__PREVIOUS);
3536 createEReference(tax_CardEClass, TAX_CARD__CURRENT_TAX_CARD);
3537 createEAttribute(tax_CardEClass, TAX_CARD__CREDIT_CIM_YEARLY);
3538 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_DS_ALIMONY_YEARLY);
3539 createEAttribute(tax_CardEClass, TAX_CARD__DEDUCTION_DS_DEBT_YEARLY);
3540 createEReference(tax_CardEClass, TAX_CARD__INCOME);
3541
3542 income_Tax_CreditEClass = createEClass(INCOME_TAX_CREDIT);
3543 createEAttribute(income_Tax_CreditEClass, INCOME_TAX_CREDIT__GRANTED_BY);
3544 createEReference(income_Tax_CreditEClass, INCOME_TAX_CREDIT__TAX_PAYER);
3545 createEAttribute(income_Tax_CreditEClass, INCOME_TAX_CREDIT__TAX_YEAR);
3546 createEAttribute(income_Tax_CreditEClass, INCOME_TAX_CREDIT__YEARLY);
3547 createEAttribute(income_Tax_CreditEClass, INCOME_TAX_CREDIT__MONTHLY);
3548 createEAttribute(income_Tax_CreditEClass, INCOME_TAX_CREDIT__DAILY);
3549 createEAttribute(income_Tax_CreditEClass, INCOME_TAX_CREDIT__ID7);
3550 createEReference(income_Tax_CreditEClass, INCOME_TAX_CREDIT__TAXATION_FRAME);
3551
3552 income_DetailEClass = createEClass(INCOME_DETAIL);
3553 createEAttribute(income_DetailEClass, INCOME_DETAIL__AMOUNT);
3554 createEAttribute(income_DetailEClass, INCOME_DETAIL__IS_WORKED);
3555 createEAttribute(income_DetailEClass, INCOME_DETAIL__DISTANCE);
3556 createEAttribute(income_DetailEClass, INCOME_DETAIL__WORKED_DAYS);
3557 createEAttribute(income_DetailEClass, INCOME_DETAIL__IS_CONTRIBUTING_CNS);
3558 createEAttribute(income_DetailEClass, INCOME_DETAIL__ID5);
3559 createEReference(income_DetailEClass, INCOME_DETAIL__INCOME);
3560
3561 fromLawEClass = createEClass(FROM_LAW);
3562 createEAttribute(fromLawEClass, FROM_LAW__ID);
3563 createEReference(fromLawEClass, FROM_LAW__TAX_PAYER);
3564
3565 fiscal_AddressEClass = createEClass(FISCAL_ADDRESS);
3566
3567 habitual_AddressEClass = createEClass(HABITUAL_ADDRESS);
3568
3569 marriage_RecordEClass = createEClass(MARRIAGE_RECORD);
3570
3571 non_Resident_Tax_PayerEClass = createEClass(NON_RESIDENT_TAX_PAYER);
3572 createEAttribute(non_Resident_Tax_PayerEClass, NON_RESIDENT_TAX_PAYER__IS_ASSIMILATED_TO_RESIDENT);
3573
3574 partnership_RecordEClass = createEClass(PARTNERSHIP_RECORD);
3575
3576 resident_Tax_PayerEClass = createEClass(RESIDENT_TAX_PAYER);
3577
3578 trade_and_Business_IncomeEClass = createEClass(TRADE_AND_BUSINESS_INCOME);
3579
3580 agriculture_and_Forestry_IncomeEClass = createEClass(AGRICULTURE_AND_FORESTRY_INCOME);
3581
3582 pensions_and_Annuities_IncomeEClass = createEClass(PENSIONS_AND_ANNUITIES_INCOME);
3583 createEAttribute(pensions_and_Annuities_IncomeEClass, PENSIONS_AND_ANNUITIES_INCOME__OCCASIONAL_PAYEMENT);
3584
3585 capital_and_Investments_IncomeEClass = createEClass(CAPITAL_AND_INVESTMENTS_INCOME);
3586
3587 employment_IncomeEClass = createEClass(EMPLOYMENT_INCOME);
3588
3589 rentals_and_Leases_IncomeEClass = createEClass(RENTALS_AND_LEASES_INCOME);
3590 createEAttribute(rentals_and_Leases_IncomeEClass, RENTALS_AND_LEASES_INCOME__IS_PERIODIC);
3591
3592 foreign_IncomeEClass = createEClass(FOREIGN_INCOME);
3593
3594 local_IncomeEClass = createEClass(LOCAL_INCOME);
3595
3596 cimEClass = createEClass(CIM);
3597
3598 cipEClass = createEClass(CIP);
3599
3600 cisEClass = createEClass(CIS);
3601
3602 fdEClass = createEClass(FD);
3603 createEAttribute(fdEClass, FD__DISTANCE_DECLARED_IN_JANUARY);
3604 createEAttribute(fdEClass, FD__CALCULATED_DISTANCE);
3605
3606 professional_Expenses_DeductionEClass = createEClass(PROFESSIONAL_EXPENSES_DEDUCTION);
3607
3608 foEClass = createEClass(FO);
3609 createEAttribute(foEClass, FO__RATE_TYPE_FOR_FO);
3610
3611 dS_for_Permanent_ExpenseEClass = createEClass(DS_FOR_PERMANENT_EXPENSE);
3612 createEAttribute(dS_for_Permanent_ExpenseEClass, DS_FOR_PERMANENT_EXPENSE__PERMANENT_EXPENSE_CATEGORY);
3613
3614 dsEClass = createEClass(DS);
3615 createEAttribute(dsEClass, DS__MAXIMUM_DEDUCTIBLE_AMOUNT);
3616 createEAttribute(dsEClass, DS__ID3);
3617
3618 dS_for_Interest_ExpenseEClass = createEClass(DS_FOR_INTEREST_EXPENSE);
3619
3620 dS_for_Health_and_Pension_InsuranceEClass = createEClass(DS_FOR_HEALTH_AND_PENSION_INSURANCE);
3621 createEAttribute(dS_for_Health_and_Pension_InsuranceEClass, DS_FOR_HEALTH_AND_PENSION_INSURANCE__INSURANCE_CATEGORY);
3622
3623 dS_for_Private_Insurance_and_PlanEClass = createEClass(DS_FOR_PRIVATE_INSURANCE_AND_PLAN);
3624 createEAttribute(dS_for_Private_Insurance_and_PlanEClass, DS_FOR_PRIVATE_INSURANCE_AND_PLAN__PRIVATE_INSURANCE_AND_PLAN_CATEGORY);
3625 createEAttribute(dS_for_Private_Insurance_and_PlanEClass, DS_FOR_PRIVATE_INSURANCE_AND_PLAN__INCREASE_FOR_LIFE_INSURANCE);
3626 createEAttribute(dS_for_Private_Insurance_and_PlanEClass, DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_PRIVATE_INSURANCE);
3627 createEAttribute(dS_for_Private_Insurance_and_PlanEClass, DS_FOR_PRIVATE_INSURANCE_AND_PLAN__MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_OLD_AGE_PENSION_PLAN);
3628
3629 dS_for_Loss_CarryforwardEClass = createEClass(DS_FOR_LOSS_CARRYFORWARD);
3630
3631 dS_for_DonationEClass = createEClass(DS_FOR_DONATION);
3632
3633 permanent_ExpenseEClass = createEClass(PERMANENT_EXPENSE);
3634 createEAttribute(permanent_ExpenseEClass, PERMANENT_EXPENSE__CATEGORY);
3635 createEAttribute(permanent_ExpenseEClass, PERMANENT_EXPENSE__IS_ELIGIBLE_FOR_DEDUCTION);
3636
3637 special_Expense_DSEClass = createEClass(SPECIAL_EXPENSE_DS);
3638
3639 interest_ExpenseEClass = createEClass(INTEREST_EXPENSE);
3640
3641 private_Insurance_and_PlanEClass = createEClass(PRIVATE_INSURANCE_AND_PLAN);
3642 createEAttribute(private_Insurance_and_PlanEClass, PRIVATE_INSURANCE_AND_PLAN__CATEGORY);
3643 createEAttribute(private_Insurance_and_PlanEClass, PRIVATE_INSURANCE_AND_PLAN__DURATION_OF_CONTRACT);
3644 createEAttribute(private_Insurance_and_PlanEClass, PRIVATE_INSURANCE_AND_PLAN__IS_PRIVATE_INSURANCE_AND_PLAN_ELIGIBLE_FOR_DEDUCTION);
3645
3646 health_and_Pension_InsuranceEClass = createEClass(HEALTH_AND_PENSION_INSURANCE);
3647 createEAttribute(health_and_Pension_InsuranceEClass, HEALTH_AND_PENSION_INSURANCE__CATEGORY);
3648 createEAttribute(health_and_Pension_InsuranceEClass, HEALTH_AND_PENSION_INSURANCE__IS_RELATED_TO_ADDITIONAL_SALARY);
3649
3650 donationEClass = createEClass(DONATION);
3651 createEAttribute(donationEClass, DONATION__BENEFICIARY1);
3652 createEAttribute(donationEClass, DONATION__IS_BENEFICIARY_ELIGIBLE);
3653 createEAttribute(donationEClass, DONATION__IS_DONATION_REPORTED);
3654
3655 loss_CarryforwardEClass = createEClass(LOSS_CARRYFORWARD);
3656 createEAttribute(loss_CarryforwardEClass, LOSS_CARRYFORWARD__REGULAR_ACCOUNTABILITY);
3657 createEAttribute(loss_CarryforwardEClass, LOSS_CARRYFORWARD__COMPENSATION_BY_OTHER_MEANS);
3658 createEAttribute(loss_CarryforwardEClass, LOSS_CARRYFORWARD__TAX_PAYER_HAS_INHERITED_BUSINESS_OWNERSHIP);
3659 createEAttribute(loss_CarryforwardEClass, LOSS_CARRYFORWARD__TAX_PAYER_HAS_BEEN_PARTNER_IN_BUSINESS);
3660
3661 spousal_Expense_ACEClass = createEClass(SPOUSAL_EXPENSE_AC);
3662
3663 extraordinary_Expense_CEEClass = createEClass(EXTRAORDINARY_EXPENSE_CE);
3664 createEAttribute(extraordinary_Expense_CEEClass, EXTRAORDINARY_EXPENSE_CE__THRESHOLDED_DEDUCTION_PERCENTAGE);
3665 createEAttribute(extraordinary_Expense_CEEClass, EXTRAORDINARY_EXPENSE_CE__CE_TYPE);
3666
3667 travel_Expense_FDEClass = createEClass(TRAVEL_EXPENSE_FD);
3668
3669 professional_ExpenseEClass = createEClass(PROFESSIONAL_EXPENSE);
3670
3671 miscellaneous_Expense_FOEClass = createEClass(MISCELLANEOUS_EXPENSE_FO);
3672
3673 // Create enums
3674 grantorEEnum = createEEnum(GRANTOR);
3675 disability_TypesEEnum = createEEnum(DISABILITY_TYPES);
3676 countryEEnum = createEEnum(COUNTRY);
3677 tax_Card_TypeEEnum = createEEnum(TAX_CARD_TYPE);
3678 tax_OfficeEEnum = createEEnum(TAX_OFFICE);
3679 tax_Class_CategoryEEnum = createEEnum(TAX_CLASS_CATEGORY);
3680 job_ActivityEEnum = createEEnum(JOB_ACTIVITY);
3681 townEEnum = createEEnum(TOWN);
3682 type_of_RateEEnum = createEEnum(TYPE_OF_RATE);
3683 cE_TypeEEnum = createEEnum(CE_TYPE);
3684 expense_PurposeEEnum = createEEnum(EXPENSE_PURPOSE);
3685 dependent_TypeEEnum = createEEnum(DEPENDENT_TYPE);
3686 separation_CausesEEnum = createEEnum(SEPARATION_CAUSES);
3687 category_of_Permanent_ExpenseEEnum = createEEnum(CATEGORY_OF_PERMANENT_EXPENSE);
3688 category_of_Health_and_Pension_InsurancesEEnum = createEEnum(CATEGORY_OF_HEALTH_AND_PENSION_INSURANCES);
3689 category_of_Private_Insurance_and_PlanEEnum = createEEnum(CATEGORY_OF_PRIVATE_INSURANCE_AND_PLAN);
3690 legal_Union_TypesEEnum = createEEnum(LEGAL_UNION_TYPES);
3691 }
3692
3693 /**
3694 * <!-- begin-user-doc -->
3695 * <!-- end-user-doc -->
3696 * @generated
3697 */
3698 private boolean isInitialized = false;
3699
3700 /**
3701 * Complete the initialization of the package and its meta-model. This
3702 * method is guarded to have no affect on any invocation but its first.
3703 * <!-- begin-user-doc -->
3704 * <!-- end-user-doc -->
3705 * @generated
3706 */
3707 public void initializePackageContents() {
3708 if (isInitialized) return;
3709 isInitialized = true;
3710
3711 // Initialize package
3712 setName(eNAME);
3713 setNsPrefix(eNS_PREFIX);
3714 setNsURI(eNS_URI);
3715
3716 // Create type parameters
3717
3718 // Set bounds for type parameters
3719
3720 // Add supertypes to classes
3721 tax_PayerEClass.getESuperTypes().add(this.getPhysical_Person());
3722 tax_PayerEClass.getESuperTypes().add(this.getTax_Case());
3723 dependentEClass.getESuperTypes().add(this.getPhysical_Person());
3724 householdEClass.getESuperTypes().add(this.getTax_Case());
3725 fiscal_AddressEClass.getESuperTypes().add(this.getAddress());
3726 habitual_AddressEClass.getESuperTypes().add(this.getAddress());
3727 marriage_RecordEClass.getESuperTypes().add(this.getLegal_Union_Record());
3728 non_Resident_Tax_PayerEClass.getESuperTypes().add(this.getTax_Payer());
3729 partnership_RecordEClass.getESuperTypes().add(this.getLegal_Union_Record());
3730 resident_Tax_PayerEClass.getESuperTypes().add(this.getTax_Payer());
3731 trade_and_Business_IncomeEClass.getESuperTypes().add(this.getIncome_Type());
3732 agriculture_and_Forestry_IncomeEClass.getESuperTypes().add(this.getIncome_Type());
3733 pensions_and_Annuities_IncomeEClass.getESuperTypes().add(this.getIncome_Type());
3734 capital_and_Investments_IncomeEClass.getESuperTypes().add(this.getIncome_Type());
3735 employment_IncomeEClass.getESuperTypes().add(this.getIncome_Type());
3736 rentals_and_Leases_IncomeEClass.getESuperTypes().add(this.getIncome_Type());
3737 foreign_IncomeEClass.getESuperTypes().add(this.getIncome());
3738 local_IncomeEClass.getESuperTypes().add(this.getIncome());
3739 cimEClass.getESuperTypes().add(this.getIncome_Tax_Credit());
3740 cipEClass.getESuperTypes().add(this.getIncome_Tax_Credit());
3741 cisEClass.getESuperTypes().add(this.getIncome_Tax_Credit());
3742 fdEClass.getESuperTypes().add(this.getProfessional_Expenses_Deduction());
3743 foEClass.getESuperTypes().add(this.getProfessional_Expenses_Deduction());
3744 dS_for_Permanent_ExpenseEClass.getESuperTypes().add(this.getDS());
3745 dS_for_Interest_ExpenseEClass.getESuperTypes().add(this.getDS());
3746 dS_for_Health_and_Pension_InsuranceEClass.getESuperTypes().add(this.getDS());
3747 dS_for_Private_Insurance_and_PlanEClass.getESuperTypes().add(this.getDS());
3748 dS_for_Loss_CarryforwardEClass.getESuperTypes().add(this.getDS());
3749 dS_for_DonationEClass.getESuperTypes().add(this.getDS());
3750 permanent_ExpenseEClass.getESuperTypes().add(this.getSpecial_Expense_DS());
3751 special_Expense_DSEClass.getESuperTypes().add(this.getExpense());
3752 interest_ExpenseEClass.getESuperTypes().add(this.getSpecial_Expense_DS());
3753 private_Insurance_and_PlanEClass.getESuperTypes().add(this.getSpecial_Expense_DS());
3754 health_and_Pension_InsuranceEClass.getESuperTypes().add(this.getSpecial_Expense_DS());
3755 donationEClass.getESuperTypes().add(this.getSpecial_Expense_DS());
3756 loss_CarryforwardEClass.getESuperTypes().add(this.getSpecial_Expense_DS());
3757 spousal_Expense_ACEClass.getESuperTypes().add(this.getExpense());
3758 extraordinary_Expense_CEEClass.getESuperTypes().add(this.getExpense());
3759 travel_Expense_FDEClass.getESuperTypes().add(this.getProfessional_Expense());
3760 professional_ExpenseEClass.getESuperTypes().add(this.getExpense());
3761 miscellaneous_Expense_FOEClass.getESuperTypes().add(this.getProfessional_Expense());
3762
3763 // Initialize classes, features, and operations; add parameters
3764 initEClass(constantsEClass, Constants.class, "Constants", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3765 initEAttribute(getConstants_MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD(), ecorePackage.getEDouble(), "MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD", "3480.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3766 initEAttribute(getConstants_MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE(), ecorePackage.getEDouble(), "MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE", "3600.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3767 initEAttribute(getConstants_MINIMUM_SALARY(), ecorePackage.getEDouble(), "MINIMUM_SALARY", "1500.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3768 initEAttribute(getConstants_FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION(), ecorePackage.getEDouble(), "FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION", "4500.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3769 initEAttribute(getConstants_MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS(), ecorePackage.getEDouble(), "MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS", "20.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3770 initEAttribute(getConstants_MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS(), ecorePackage.getEDouble(), "MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS", "120.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3771 initEAttribute(getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC(), ecorePackage.getEDouble(), "MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC", "0.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3772 initEAttribute(getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE(), ecorePackage.getEDouble(), "MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE", "24000.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3773 initEAttribute(getConstants_MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(), ecorePackage.getEDouble(), "MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION", "99.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3774 initEAttribute(getConstants_MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(), ecorePackage.getEDouble(), "MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION", "30.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3775 initEAttribute(getConstants_MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION(), ecorePackage.getEDouble(), "MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION", "4.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3776 initEAttribute(getConstants_FLAT_RATE_CIM_DAILY(), ecorePackage.getEDouble(), "FLAT_RATE_CIM_DAILY", "2.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3777 initEAttribute(getConstants_FLAT_RATE_CIM_MONTHLY(), ecorePackage.getEDouble(), "FLAT_RATE_CIM_MONTHLY", "62.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3778 initEAttribute(getConstants_FLAT_RATE_CIM_YEARLY(), ecorePackage.getEDouble(), "FLAT_RATE_CIM_YEARLY", "750.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3779 initEAttribute(getConstants_FLAT_RATE_CIP_DAILY(), ecorePackage.getEDouble(), "FLAT_RATE_CIP_DAILY", "1.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3780 initEAttribute(getConstants_FLAT_RATE_CIP_MONTHLY(), ecorePackage.getEDouble(), "FLAT_RATE_CIP_MONTHLY", "25.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3781 initEAttribute(getConstants_FLAT_RATE_CIP_YEARLY(), ecorePackage.getEDouble(), "FLAT_RATE_CIP_YEARLY", "30.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3782 initEAttribute(getConstants_FLAT_RATE_CIS_DAILY(), ecorePackage.getEDouble(), "FLAT_RATE_CIS_DAILY", "1.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3783 initEAttribute(getConstants_FLAT_RATE_CIS_MONTHLY(), ecorePackage.getEDouble(), "FLAT_RATE_CIS_MONTHLY", "25.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3784 initEAttribute(getConstants_FLAT_RATE_CIS_YEARLY(), ecorePackage.getEDouble(), "FLAT_RATE_CIS_YEARLY", "300.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3785 initEAttribute(getConstants_FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT(), ecorePackage.getEDouble(), "FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT", "99.0", 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3786 initEAttribute(getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS(), ecorePackage.getEDouble(), "MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS", null, 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3787 initEAttribute(getConstants_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(), ecorePackage.getEDouble(), "FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE", null, 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3788 initEAttribute(getConstants_DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE(), ecorePackage.getEDouble(), "DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE", null, 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3789 initEAttribute(getConstants_MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE(), ecorePackage.getEDouble(), "MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE", null, 1, 1, Constants.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3790
3791 initEClass(income_TaxEClass, Income_Tax.class, "Income_Tax", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3792 initEReference(getIncome_Tax_TaxPayer(), this.getTax_Payer(), null, "taxPayer", null, 1, 1, Income_Tax.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3793 initEAttribute(getIncome_Tax_Tax_amount(), ecorePackage.getEDouble(), "tax_amount", null, 1, 1, Income_Tax.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3794 initEAttribute(getIncome_Tax_Tax_year(), ecorePackage.getEInt(), "tax_year", null, 1, 1, Income_Tax.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3795 initEAttribute(getIncome_Tax_Id6(), ecorePackage.getEString(), "id6", null, 1, 1, Income_Tax.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3796
3797 initEClass(tax_PayerEClass, Tax_Payer.class, "Tax_Payer", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3798 initEReference(getTax_Payer_Dependents(), this.getDependent(), this.getDependent_Responsible_person(), "dependents", null, 0, 6, Tax_Payer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3799 initEReference(getTax_Payer_From_agent(), this.getFromAgent(), this.getFromAgent_TaxPayer(), "from_agent", null, 1, 1, Tax_Payer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3800 initEReference(getTax_Payer_Incomes(), this.getIncome(), this.getIncome_TaxPayer(), "incomes", null, 1, -1, Tax_Payer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3801 initEReference(getTax_Payer_From_law(), this.getFromLaw(), this.getFromLaw_TaxPayer(), "from_law", null, 1, 1, Tax_Payer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3802 initEAttribute(getTax_Payer_TaxesDue(), ecorePackage.getEDouble(), "taxesDue", null, 1, 1, Tax_Payer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3803
3804 initEClass(physical_PersonEClass, Physical_Person.class, "Physical_Person", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3805 initEAttribute(getPhysical_Person_Is_assisting_spouse(), ecorePackage.getEBoolean(), "is_assisting_spouse", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
3806 initEAttribute(getPhysical_Person_SSNo(), ecorePackage.getEString(), "SSNo", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3807 initEReference(getPhysical_Person_Addresses(), this.getAddress(), this.getAddress_TaxPayer(), "addresses", null, 0, -1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3808 initEAttribute(getPhysical_Person_Birth_year(), ecorePackage.getEInt(), "birth_year", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3809 initEAttribute(getPhysical_Person_Disability_percentage(), ecorePackage.getEDouble(), "disability_percentage", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3810 initEAttribute(getPhysical_Person_Disability_type(), this.getDisability_Types(), "disability_type", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3811 initEAttribute(getPhysical_Person_Is_affiliated_personnaly_to_social_security(), ecorePackage.getEBoolean(), "is_affiliated_personnaly_to_social_security", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
3812 initEAttribute(getPhysical_Person_Birth_month(), ecorePackage.getEInt(), "birth_month", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3813 initEAttribute(getPhysical_Person_Birth_day(), ecorePackage.getEInt(), "birth_day", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3814 initEReference(getPhysical_Person_Expenses(), this.getExpense(), this.getExpense_Beneficiary(), "expenses", null, 0, -1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3815 initEAttribute(getPhysical_Person_Is_widower(), ecorePackage.getEBoolean(), "is_widower", null, 1, 1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3816 initEReference(getPhysical_Person_Owns_Address(), this.getAddress(), null, "owns_Address", null, 0, -1, Physical_Person.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3817
3818 initEClass(addressEClass, Address.class, "Address", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3819 initEAttribute(getAddress_Country(), this.getCountry(), "country", "ZZ", 1, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3820 initEAttribute(getAddress_Street(), ecorePackage.getEString(), "street", null, 1, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3821 initEAttribute(getAddress_ZipCode(), ecorePackage.getEString(), "zipCode", null, 1, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3822 initEAttribute(getAddress_City(), ecorePackage.getEString(), "city", null, 1, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3823 initEAttribute(getAddress_Id2(), ecorePackage.getEString(), "id2", null, 1, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3824 initEReference(getAddress_TaxPayer(), this.getPhysical_Person(), this.getPhysical_Person_Addresses(), "taxPayer", null, 0, -1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3825
3826 initEClass(expenseEClass, Expense.class, "Expense", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3827 initEAttribute(getExpense_Declared_amount(), ecorePackage.getEDouble(), "declared_amount", null, 1, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3828 initEAttribute(getExpense_Expense_purpose(), this.getExpense_Purpose(), "expense_purpose", "OTHER", 1, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3829 initEReference(getExpense_Dependent(), this.getDependent(), this.getDependent_Expense(), "dependent", null, 0, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3830 initEReference(getExpense_From_agent(), this.getFromAgent(), this.getFromAgent_Expense(), "from_agent", null, 0, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3831 initEReference(getExpense_Income(), this.getIncome(), this.getIncome_Expenses(), "income", null, 1, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3832 initEAttribute(getExpense_Id4(), ecorePackage.getEString(), "id4", null, 1, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3833 initEReference(getExpense_Beneficiary(), this.getPhysical_Person(), this.getPhysical_Person_Expenses(), "beneficiary", null, 0, 1, Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3834
3835 initEClass(dependentEClass, Dependent.class, "Dependent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3836 initEAttribute(getDependent_Dependent_type(), this.getDependent_Type(), "dependent_type", null, 1, 1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3837 initEReference(getDependent_Responsible_person(), this.getTax_Payer(), this.getTax_Payer_Dependents(), "responsible_person", null, 0, 1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3838 initEAttribute(getDependent_Continued_studies(), ecorePackage.getEBoolean(), "continued_studies", "false", 1, 1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3839 initEReference(getDependent_Allowances(), this.getExternal_Allowance(), this.getExternal_Allowance_Person(), "allowances", null, 0, 1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3840 initEReference(getDependent_Household(), this.getHousehold(), this.getHousehold_Children(), "household", null, 0, 1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3841 initEReference(getDependent_From_agent(), this.getFromAgent(), this.getFromAgent_Dependent(), "from_agent", null, 0, 1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3842 initEReference(getDependent_Expense(), this.getExpense(), this.getExpense_Dependent(), "expense", null, 0, -1, Dependent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3843
3844 initEClass(external_AllowanceEClass, External_Allowance.class, "External_Allowance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3845 initEAttribute(getExternal_Allowance_Amount(), ecorePackage.getEDouble(), "amount", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3846 initEAttribute(getExternal_Allowance_Grantor(), this.getGrantor(), "grantor", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3847 initEAttribute(getExternal_Allowance_Starting_year(), ecorePackage.getEInt(), "starting_year", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3848 initEAttribute(getExternal_Allowance_Ending_year(), ecorePackage.getEInt(), "ending_year", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3849 initEReference(getExternal_Allowance_Reciver(), this.getPhysical_Person(), null, "reciver", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3850 initEAttribute(getExternal_Allowance_Id5(), ecorePackage.getEString(), "id5", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3851 initEReference(getExternal_Allowance_Person(), this.getDependent(), this.getDependent_Allowances(), "person", null, 1, 1, External_Allowance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3852
3853 initEClass(householdEClass, Household.class, "Household", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3854 initEReference(getHousehold_Parents(), this.getLegal_Union_Record(), this.getLegal_Union_Record_Household(), "parents", null, 1, 1, Household.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3855 initEAttribute(getHousehold_Id1(), ecorePackage.getEString(), "id1", null, 1, 1, Household.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3856 initEReference(getHousehold_Children(), this.getDependent(), this.getDependent_Household(), "children", null, 0, -1, Household.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3857
3858 initEClass(legal_Union_RecordEClass, Legal_Union_Record.class, "Legal_Union_Record", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3859 initEAttribute(getLegal_Union_Record_Start_year(), ecorePackage.getEInt(), "start_year", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3860 initEAttribute(getLegal_Union_Record_End_year(), ecorePackage.getEInt(), "end_year", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3861 initEAttribute(getLegal_Union_Record_Separation_cause(), this.getSeparation_Causes(), "separation_cause", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3862 initEReference(getLegal_Union_Record_Individual_A(), this.getPhysical_Person(), null, "individual_A", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3863 initEReference(getLegal_Union_Record_Individual_B(), this.getPhysical_Person(), null, "individual_B", null, 1, -1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3864 initEReference(getLegal_Union_Record_Properties(), this.getTax_Property(), this.getTax_Property_Union_record(), "properties", null, 1, -1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3865 initEAttribute(getLegal_Union_Record_Mutual_agreement(), ecorePackage.getEBoolean(), "mutual_agreement", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3866 initEAttribute(getLegal_Union_Record_Id9(), ecorePackage.getEString(), "id9", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3867 initEReference(getLegal_Union_Record_Household(), this.getHousehold(), this.getHousehold_Parents(), "household", null, 1, 1, Legal_Union_Record.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3868
3869 initEClass(tax_PropertyEClass, Tax_Property.class, "Tax_Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3870 initEAttribute(getTax_Property_Starting_year(), ecorePackage.getEInt(), "starting_year", null, 1, 1, Tax_Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3871 initEAttribute(getTax_Property_Id10(), ecorePackage.getEString(), "id10", null, 1, 1, Tax_Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3872 initEReference(getTax_Property_Union_record(), this.getLegal_Union_Record(), this.getLegal_Union_Record_Properties(), "union_record", null, 1, 1, Tax_Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3873
3874 initEClass(tax_CaseEClass, Tax_Case.class, "Tax_Case", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3875
3876 initEClass(fromAgentEClass, FromAgent.class, "FromAgent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3877 initEReference(getFromAgent_TaxPayer(), this.getTax_Payer(), this.getTax_Payer_From_agent(), "taxPayer", null, 1, 1, FromAgent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3878 initEAttribute(getFromAgent_Is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care(), ecorePackage.getEBoolean(), "is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care", null, 1, 1, FromAgent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3879 initEReference(getFromAgent_Expense(), this.getExpense(), this.getExpense_From_agent(), "expense", null, 0, 1, FromAgent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3880 initEAttribute(getFromAgent_Is_eligible_debt(), ecorePackage.getEBoolean(), "is_eligible_debt", null, 1, 1, FromAgent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3881 initEReference(getFromAgent_Dependent(), this.getDependent(), this.getDependent_From_agent(), "dependent", null, 0, 1, FromAgent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3882
3883 initEClass(incomeEClass, Income.class, "Income", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3884 initEAttribute(getIncome_Income_amount(), ecorePackage.getEDouble(), "income_amount", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3885 initEReference(getIncome_Income_type(), this.getIncome_Type(), this.getIncome_Type_Income(), "income_type", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3886 initEAttribute(getIncome_Start_date_within_taxation_year(), ecorePackage.getEDate(), "start_date_within_taxation_year", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3887 initEAttribute(getIncome_Start_date_of_contract(), ecorePackage.getEDate(), "start_date_of_contract", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3888 initEAttribute(getIncome_End_date_within_taxation_year(), ecorePackage.getEDate(), "end_date_within_taxation_year", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3889 initEReference(getIncome_Tax_card(), this.getTax_Card(), this.getTax_Card_Income(), "tax_card", null, 0, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3890 initEAttribute(getIncome_Tax_liability(), ecorePackage.getEDouble(), "tax_liability", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3891 initEReference(getIncome_TaxPayer(), this.getTax_Payer(), this.getTax_Payer_Incomes(), "taxPayer", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3892 initEReference(getIncome_Details(), this.getIncome_Detail(), this.getIncome_Detail_Income(), "details", null, 12, 12, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3893 initEAttribute(getIncome_Num(), ecorePackage.getEInt(), "num", null, 1, 1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3894 initEReference(getIncome_Expenses(), this.getExpense(), this.getExpense_Income(), "expenses", null, 0, -1, Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3895
3896 initEClass(income_TypeEClass, Income_Type.class, "Income_Type", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3897 initEAttribute(getIncome_Type_SubjectToWithholdingTax(), ecorePackage.getEBoolean(), "subjectToWithholdingTax", null, 1, 1, Income_Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
3898 initEAttribute(getIncome_Type_Id8(), ecorePackage.getEString(), "id8", null, 1, 1, Income_Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3899 initEReference(getIncome_Type_Income(), this.getIncome(), this.getIncome_Income_type(), "income", null, 1, 1, Income_Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3900
3901 initEClass(tax_CardEClass, Tax_Card.class, "Tax_Card", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3902 initEAttribute(getTax_Card_Card_identifier(), ecorePackage.getEString(), "card_identifier", null, 0, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3903 initEAttribute(getTax_Card_Tax_card_type(), this.getTax_Card_Type(), "tax_card_type", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
3904 initEAttribute(getTax_Card_Tax_office(), this.getTax_Office(), "tax_office", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3905 initEAttribute(getTax_Card_Valid_from_date(), ecorePackage.getEDate(), "valid_from_date", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3906 initEAttribute(getTax_Card_Valid_until_date(), ecorePackage.getEDate(), "valid_until_date", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3907 initEAttribute(getTax_Card_Percentage_of_witholding(), ecorePackage.getEDouble(), "percentage_of_witholding", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3908 initEAttribute(getTax_Card_Tax_payers_name_surname(), ecorePackage.getEString(), "tax_payers_name_surname", null, 0, -1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3909 initEAttribute(getTax_Card_Tax_payers_partner_name_surname(), ecorePackage.getEString(), "tax_payers_partner_name_surname", null, 0, -1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3910 initEReference(getTax_Card_Tax_payers_address(), this.getAddress(), null, "tax_payers_address", null, 0, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3911 initEAttribute(getTax_Card_Jobs_Employer_SSNo(), ecorePackage.getEString(), "jobs_Employer_SSNo", null, 0, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3912 initEAttribute(getTax_Card_Jobs_employers_name(), ecorePackage.getEString(), "jobs_employers_name", null, 0, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3913 initEAttribute(getTax_Card_Jobs_activity_type(), this.getJob_Activity(), "jobs_activity_type", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3914 initEAttribute(getTax_Card_Jobs_place_of_work(), this.getTown(), "jobs_place_of_work", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3915 initEAttribute(getTax_Card_Deduction_FD_daily(), ecorePackage.getEDouble(), "deduction_FD_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3916 initEAttribute(getTax_Card_Deduction_FD_monthly(), ecorePackage.getEDouble(), "deduction_FD_monthly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3917 initEAttribute(getTax_Card_Deduction_AC_daily(), ecorePackage.getEDouble(), "deduction_AC_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3918 initEAttribute(getTax_Card_Deduction_AC_monthly(), ecorePackage.getEDouble(), "deduction_AC_monthly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3919 initEAttribute(getTax_Card_Deduction_AC_yearly(), ecorePackage.getEDouble(), "deduction_AC_yearly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3920 initEAttribute(getTax_Card_Deduction_CE_daily(), ecorePackage.getEDouble(), "deduction_CE_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3921 initEAttribute(getTax_Card_Deduction_CE_monthly(), ecorePackage.getEDouble(), "deduction_CE_monthly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3922 initEAttribute(getTax_Card_Deduction_CE_yearly(), ecorePackage.getEDouble(), "deduction_CE_yearly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3923 initEAttribute(getTax_Card_Deduction_DS_daily(), ecorePackage.getEDouble(), "deduction_DS_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3924 initEAttribute(getTax_Card_Deduction_DS_monthly(), ecorePackage.getEDouble(), "deduction_DS_monthly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3925 initEAttribute(getTax_Card_Deduction_FO_daily(), ecorePackage.getEDouble(), "deduction_FO_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3926 initEAttribute(getTax_Card_Deduction_FO_monthly(), ecorePackage.getEDouble(), "deduction_FO_monthly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3927 initEAttribute(getTax_Card_Deduction_FO_yearly(), ecorePackage.getEDouble(), "deduction_FO_yearly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3928 initEAttribute(getTax_Card_Credit_CIS_daily(), ecorePackage.getEDouble(), "credit_CIS_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3929 initEAttribute(getTax_Card_Credit_CIS_monthly(), ecorePackage.getEDouble(), "credit_CIS_monthly", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3930 initEAttribute(getTax_Card_Credit_CIM_daily(), ecorePackage.getEDouble(), "credit_CIM_daily", "0.0", 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3931 initEAttribute(getTax_Card_Validity(), ecorePackage.getEBoolean(), "validity", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3932 initEReference(getTax_Card_Income_Tax_Credit(), this.getIncome_Tax_Credit(), this.getIncome_Tax_Credit_Taxation_Frame(), "income_Tax_Credit", null, 0, -1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3933 initEReference(getTax_Card_Previous(), this.getTax_Card(), this.getTax_Card_Current_tax_card(), "previous", null, 0, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3934 initEReference(getTax_Card_Current_tax_card(), this.getTax_Card(), this.getTax_Card_Previous(), "current_tax_card", null, 0, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3935 initEAttribute(getTax_Card_Credit_CIM_yearly(), ecorePackage.getEDouble(), "credit_CIM_yearly", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3936 initEAttribute(getTax_Card_Deduction_DS_Alimony_yearly(), ecorePackage.getEDouble(), "deduction_DS_Alimony_yearly", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3937 initEAttribute(getTax_Card_Deduction_DS_Debt_yearly(), ecorePackage.getEDouble(), "deduction_DS_Debt_yearly", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3938 initEReference(getTax_Card_Income(), this.getIncome(), this.getIncome_Tax_card(), "income", null, 1, 1, Tax_Card.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3939
3940 initEClass(income_Tax_CreditEClass, Income_Tax_Credit.class, "Income_Tax_Credit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3941 initEAttribute(getIncome_Tax_Credit_GrantedBy(), this.getGrantor(), "grantedBy", null, 1, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3942 initEReference(getIncome_Tax_Credit_TaxPayer(), this.getTax_Payer(), null, "taxPayer", null, 0, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3943 initEAttribute(getIncome_Tax_Credit_Tax_year(), ecorePackage.getEInt(), "tax_year", null, 1, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3944 initEAttribute(getIncome_Tax_Credit_Yearly(), ecorePackage.getEDouble(), "yearly", "300.0", 1, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3945 initEAttribute(getIncome_Tax_Credit_Monthly(), ecorePackage.getEDouble(), "monthly", "25.0", 1, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3946 initEAttribute(getIncome_Tax_Credit_Daily(), ecorePackage.getEDouble(), "daily", "1.0", 1, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3947 initEAttribute(getIncome_Tax_Credit_Id7(), ecorePackage.getEString(), "id7", null, 1, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3948 initEReference(getIncome_Tax_Credit_Taxation_Frame(), this.getTax_Card(), this.getTax_Card_Income_Tax_Credit(), "taxation_Frame", null, 0, 1, Income_Tax_Credit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3949
3950 initEClass(income_DetailEClass, Income_Detail.class, "Income_Detail", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3951 initEAttribute(getIncome_Detail_Amount(), ecorePackage.getEDouble(), "amount", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3952 initEAttribute(getIncome_Detail_Is_worked(), ecorePackage.getEBoolean(), "is_worked", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3953 initEAttribute(getIncome_Detail_Distance(), ecorePackage.getEDouble(), "distance", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3954 initEAttribute(getIncome_Detail_Worked_days(), ecorePackage.getEInt(), "worked_days", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3955 initEAttribute(getIncome_Detail_Is_contributing_CNS(), ecorePackage.getEBoolean(), "is_contributing_CNS", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3956 initEAttribute(getIncome_Detail_Id5(), ecorePackage.getEString(), "id5", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3957 initEReference(getIncome_Detail_Income(), this.getIncome(), this.getIncome_Details(), "income", null, 1, 1, Income_Detail.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3958
3959 initEClass(fromLawEClass, FromLaw.class, "FromLaw", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3960 initEAttribute(getFromLaw_Id(), ecorePackage.getEString(), "id", null, 1, 1, FromLaw.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
3961 initEReference(getFromLaw_TaxPayer(), this.getTax_Payer(), this.getTax_Payer_From_law(), "taxPayer", null, 1, 1, FromLaw.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3962
3963 initEClass(fiscal_AddressEClass, Fiscal_Address.class, "Fiscal_Address", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3964
3965 initEClass(habitual_AddressEClass, Habitual_Address.class, "Habitual_Address", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3966
3967 initEClass(marriage_RecordEClass, Marriage_Record.class, "Marriage_Record", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3968
3969 initEClass(non_Resident_Tax_PayerEClass, Non_Resident_Tax_Payer.class, "Non_Resident_Tax_Payer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3970 initEAttribute(getNon_Resident_Tax_Payer_Is_assimilated_to_resident(), ecorePackage.getEBoolean(), "is_assimilated_to_resident", "false", 1, 1, Non_Resident_Tax_Payer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3971
3972 initEClass(partnership_RecordEClass, Partnership_Record.class, "Partnership_Record", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3973
3974 initEClass(resident_Tax_PayerEClass, Resident_Tax_Payer.class, "Resident_Tax_Payer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3975
3976 initEClass(trade_and_Business_IncomeEClass, Trade_and_Business_Income.class, "Trade_and_Business_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3977
3978 initEClass(agriculture_and_Forestry_IncomeEClass, Agriculture_and_Forestry_Income.class, "Agriculture_and_Forestry_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3979
3980 initEClass(pensions_and_Annuities_IncomeEClass, Pensions_and_Annuities_Income.class, "Pensions_and_Annuities_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3981 initEAttribute(getPensions_and_Annuities_Income_Occasional_payement(), ecorePackage.getEBoolean(), "occasional_payement", "false", 0, 1, Pensions_and_Annuities_Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3982
3983 initEClass(capital_and_Investments_IncomeEClass, Capital_and_Investments_Income.class, "Capital_and_Investments_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3984
3985 initEClass(employment_IncomeEClass, Employment_Income.class, "Employment_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3986
3987 initEClass(rentals_and_Leases_IncomeEClass, Rentals_and_Leases_Income.class, "Rentals_and_Leases_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3988 initEAttribute(getRentals_and_Leases_Income_Is_periodic(), ecorePackage.getEBoolean(), "is_periodic", "true", 1, 1, Rentals_and_Leases_Income.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
3989
3990 initEClass(foreign_IncomeEClass, Foreign_Income.class, "Foreign_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3991
3992 initEClass(local_IncomeEClass, Local_Income.class, "Local_Income", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3993
3994 initEClass(cimEClass, Taxation.CIM.class, "CIM", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3995
3996 initEClass(cipEClass, Taxation.CIP.class, "CIP", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3997
3998 initEClass(cisEClass, Taxation.CIS.class, "CIS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
3999
4000 initEClass(fdEClass, Taxation.FD.class, "FD", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4001 initEAttribute(getFD_Distance_declared_in_january(), ecorePackage.getEDouble(), "distance_declared_in_january", null, 1, 1, Taxation.FD.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4002 initEAttribute(getFD_Calculated_distance(), ecorePackage.getEDouble(), "calculated_distance", null, 1, 1, Taxation.FD.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4003
4004 initEClass(professional_Expenses_DeductionEClass, Professional_Expenses_Deduction.class, "Professional_Expenses_Deduction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4005
4006 initEClass(foEClass, Taxation.FO.class, "FO", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4007 initEAttribute(getFO_Rate_type_for_FO(), this.getType_of_Rate(), "rate_type_for_FO", null, 1, 1, Taxation.FO.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4008
4009 initEClass(dS_for_Permanent_ExpenseEClass, DS_for_Permanent_Expense.class, "DS_for_Permanent_Expense", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4010 initEAttribute(getDS_for_Permanent_Expense_Permanent_expense_category(), this.getCategory_of_Permanent_Expense(), "permanent_expense_category", null, 1, 1, DS_for_Permanent_Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4011
4012 initEClass(dsEClass, Taxation.DS.class, "DS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4013 initEAttribute(getDS_Maximum_deductible_amount(), ecorePackage.getEDouble(), "maximum_deductible_amount", null, 1, 1, Taxation.DS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4014 initEAttribute(getDS_Id3(), ecorePackage.getEString(), "id3", null, 1, 1, Taxation.DS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
4015
4016 initEClass(dS_for_Interest_ExpenseEClass, DS_for_Interest_Expense.class, "DS_for_Interest_Expense", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4017
4018 initEClass(dS_for_Health_and_Pension_InsuranceEClass, DS_for_Health_and_Pension_Insurance.class, "DS_for_Health_and_Pension_Insurance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4019 initEAttribute(getDS_for_Health_and_Pension_Insurance_Insurance_category(), this.getCategory_of_Health_and_Pension_Insurances(), "insurance_category", null, 1, 1, DS_for_Health_and_Pension_Insurance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4020
4021 initEClass(dS_for_Private_Insurance_and_PlanEClass, DS_for_Private_Insurance_and_Plan.class, "DS_for_Private_Insurance_and_Plan", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4022 initEAttribute(getDS_for_Private_Insurance_and_Plan_Private_insurance_and_plan_category(), this.getCategory_of_Private_Insurance_and_Plan(), "private_insurance_and_plan_category", null, 1, 1, DS_for_Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4023 initEAttribute(getDS_for_Private_Insurance_and_Plan_Increase_for_life_insurance(), ecorePackage.getEDouble(), "increase_for_life_insurance", null, 1, 1, DS_for_Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4024 initEAttribute(getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_private_insurance(), ecorePackage.getEDouble(), "maximum_deductible_amount_for_private_insurance", null, 1, 1, DS_for_Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4025 initEAttribute(getDS_for_Private_Insurance_and_Plan_Maximum_deductible_amount_for_old_age_pension_plan(), ecorePackage.getEDouble(), "maximum_deductible_amount_for_old_age_pension_plan", null, 1, 1, DS_for_Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4026
4027 initEClass(dS_for_Loss_CarryforwardEClass, DS_for_Loss_Carryforward.class, "DS_for_Loss_Carryforward", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4028
4029 initEClass(dS_for_DonationEClass, DS_for_Donation.class, "DS_for_Donation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4030
4031 initEClass(permanent_ExpenseEClass, Permanent_Expense.class, "Permanent_Expense", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4032 initEAttribute(getPermanent_Expense_Category(), this.getCategory_of_Permanent_Expense(), "category", null, 1, 1, Permanent_Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4033 initEAttribute(getPermanent_Expense_Is_eligible_for_deduction(), ecorePackage.getEBoolean(), "is_eligible_for_deduction", "false", 1, 1, Permanent_Expense.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4034
4035 initEClass(special_Expense_DSEClass, Special_Expense_DS.class, "Special_Expense_DS", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4036
4037 initEClass(interest_ExpenseEClass, Interest_Expense.class, "Interest_Expense", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4038
4039 initEClass(private_Insurance_and_PlanEClass, Private_Insurance_and_Plan.class, "Private_Insurance_and_Plan", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4040 initEAttribute(getPrivate_Insurance_and_Plan_Category(), this.getCategory_of_Private_Insurance_and_Plan(), "category", null, 1, 1, Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4041 initEAttribute(getPrivate_Insurance_and_Plan_Duration_of_contract(), ecorePackage.getEInt(), "duration_of_contract", null, 1, 1, Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4042 initEAttribute(getPrivate_Insurance_and_Plan_Is_private_insurance_and_plan_eligible_for_deduction(), ecorePackage.getEBoolean(), "is_private_insurance_and_plan_eligible_for_deduction", "false", 1, 1, Private_Insurance_and_Plan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4043
4044 initEClass(health_and_Pension_InsuranceEClass, Health_and_Pension_Insurance.class, "Health_and_Pension_Insurance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4045 initEAttribute(getHealth_and_Pension_Insurance_Category(), this.getCategory_of_Health_and_Pension_Insurances(), "category", null, 1, 1, Health_and_Pension_Insurance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4046 initEAttribute(getHealth_and_Pension_Insurance_Is_related_to_additional_salary(), ecorePackage.getEBoolean(), "is_related_to_additional_salary", "false", 1, 1, Health_and_Pension_Insurance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4047
4048 initEClass(donationEClass, Donation.class, "Donation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4049 initEAttribute(getDonation_Beneficiary1(), ecorePackage.getEString(), "beneficiary1", null, 1, 1, Donation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4050 initEAttribute(getDonation_Is_beneficiary_eligible(), ecorePackage.getEBoolean(), "is_beneficiary_eligible", "false", 1, 1, Donation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4051 initEAttribute(getDonation_Is_donation_reported(), ecorePackage.getEBoolean(), "is_donation_reported", null, 1, 1, Donation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4052
4053 initEClass(loss_CarryforwardEClass, Loss_Carryforward.class, "Loss_Carryforward", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4054 initEAttribute(getLoss_Carryforward_Regular_accountability(), ecorePackage.getEBoolean(), "regular_accountability", null, 1, 1, Loss_Carryforward.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4055 initEAttribute(getLoss_Carryforward_Compensation_by_other_means(), ecorePackage.getEBoolean(), "compensation_by_other_means", null, 1, 1, Loss_Carryforward.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4056 initEAttribute(getLoss_Carryforward_Tax_payer_has_inherited_business_ownership(), ecorePackage.getEBoolean(), "tax_payer_has_inherited_business_ownership", "false", 1, 1, Loss_Carryforward.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4057 initEAttribute(getLoss_Carryforward_Tax_payer_has_been_partner_in_business(), ecorePackage.getEBoolean(), "tax_payer_has_been_partner_in_business", "true", 1, 1, Loss_Carryforward.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
4058
4059 initEClass(spousal_Expense_ACEClass, Spousal_Expense_AC.class, "Spousal_Expense_AC", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4060
4061 initEClass(extraordinary_Expense_CEEClass, Extraordinary_Expense_CE.class, "Extraordinary_Expense_CE", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4062 initEAttribute(getExtraordinary_Expense_CE_Thresholded_deduction_percentage(), ecorePackage.getEDouble(), "thresholded_deduction_percentage", null, 1, 1, Extraordinary_Expense_CE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4063 initEAttribute(getExtraordinary_Expense_CE_Ce_type(), this.getCE_Type(), "ce_type", null, 1, 1, Extraordinary_Expense_CE.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
4064
4065 initEClass(travel_Expense_FDEClass, Travel_Expense_FD.class, "Travel_Expense_FD", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4066
4067 initEClass(professional_ExpenseEClass, Professional_Expense.class, "Professional_Expense", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4068
4069 initEClass(miscellaneous_Expense_FOEClass, Miscellaneous_Expense_FO.class, "Miscellaneous_Expense_FO", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
4070
4071 // Initialize enums and add enum literals
4072 initEEnum(grantorEEnum, Grantor.class, "Grantor");
4073 addEEnumLiteral(grantorEEnum, Grantor.WWW);
4074 addEEnumLiteral(grantorEEnum, Grantor.EMPLOYER);
4075 addEEnumLiteral(grantorEEnum, Grantor.MMM);
4076 addEEnumLiteral(grantorEEnum, Grantor.UUU);
4077 addEEnumLiteral(grantorEEnum, Grantor.YYY);
4078 addEEnumLiteral(grantorEEnum, Grantor.OOO);
4079
4080 initEEnum(disability_TypesEEnum, Disability_Types.class, "Disability_Types");
4081 addEEnumLiteral(disability_TypesEEnum, Disability_Types.BEUG);
4082 addEEnumLiteral(disability_TypesEEnum, Disability_Types.NONE);
4083 addEEnumLiteral(disability_TypesEEnum, Disability_Types.A);
4084 addEEnumLiteral(disability_TypesEEnum, Disability_Types.B);
4085 addEEnumLiteral(disability_TypesEEnum, Disability_Types.C);
4086 addEEnumLiteral(disability_TypesEEnum, Disability_Types.D);
4087 addEEnumLiteral(disability_TypesEEnum, Disability_Types.E);
4088 addEEnumLiteral(disability_TypesEEnum, Disability_Types.OTHER);
4089
4090 initEEnum(countryEEnum, Country.class, "Country");
4091 addEEnumLiteral(countryEEnum, Country.ZZ);
4092 addEEnumLiteral(countryEEnum, Country.FF);
4093 addEEnumLiteral(countryEEnum, Country.BB);
4094 addEEnumLiteral(countryEEnum, Country.DD);
4095 addEEnumLiteral(countryEEnum, Country.NN);
4096 addEEnumLiteral(countryEEnum, Country.OTHER);
4097
4098 initEEnum(tax_Card_TypeEEnum, Tax_Card_Type.class, "Tax_Card_Type");
4099 addEEnumLiteral(tax_Card_TypeEEnum, Tax_Card_Type.PRINCIPAL);
4100 addEEnumLiteral(tax_Card_TypeEEnum, Tax_Card_Type.ADDITIONAL);
4101
4102 initEEnum(tax_OfficeEEnum, Tax_Office.class, "Tax_Office");
4103 addEEnumLiteral(tax_OfficeEEnum, Tax_Office.RTS_2);
4104 addEEnumLiteral(tax_OfficeEEnum, Tax_Office.RTS_3);
4105 addEEnumLiteral(tax_OfficeEEnum, Tax_Office.RTS_4);
4106 addEEnumLiteral(tax_OfficeEEnum, Tax_Office.RTS_5);
4107
4108 initEEnum(tax_Class_CategoryEEnum, Tax_Class_Category.class, "Tax_Class_Category");
4109 addEEnumLiteral(tax_Class_CategoryEEnum, Tax_Class_Category.ONE);
4110 addEEnumLiteral(tax_Class_CategoryEEnum, Tax_Class_Category.ONE_A);
4111 addEEnumLiteral(tax_Class_CategoryEEnum, Tax_Class_Category.TWO);
4112
4113 initEEnum(job_ActivityEEnum, Job_Activity.class, "Job_Activity");
4114 addEEnumLiteral(job_ActivityEEnum, Job_Activity.SALARY);
4115 addEEnumLiteral(job_ActivityEEnum, Job_Activity.PENSION);
4116 addEEnumLiteral(job_ActivityEEnum, Job_Activity.ANNUITY);
4117
4118 initEEnum(townEEnum, Town.class, "Town");
4119 addEEnumLiteral(townEEnum, Town.LL);
4120 addEEnumLiteral(townEEnum, Town.BB);
4121 addEEnumLiteral(townEEnum, Town.SS);
4122 addEEnumLiteral(townEEnum, Town.TT);
4123 addEEnumLiteral(townEEnum, Town.OTHER);
4124
4125 initEEnum(type_of_RateEEnum, Type_of_Rate.class, "Type_of_Rate");
4126 addEEnumLiteral(type_of_RateEEnum, Type_of_Rate.REGULAR);
4127 addEEnumLiteral(type_of_RateEEnum, Type_of_Rate.REAL_COST);
4128
4129 initEEnum(cE_TypeEEnum, CE_Type.class, "CE_Type");
4130 addEEnumLiteral(cE_TypeEEnum, CE_Type.INALIDITY_AND_INFIRMITY);
4131 addEEnumLiteral(cE_TypeEEnum, CE_Type.DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD);
4132 addEEnumLiteral(cE_TypeEEnum, CE_Type.CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD);
4133
4134 initEEnum(expense_PurposeEEnum, Expense_Purpose.class, "Expense_Purpose");
4135 addEEnumLiteral(expense_PurposeEEnum, Expense_Purpose.HOUSE_CARE);
4136 addEEnumLiteral(expense_PurposeEEnum, Expense_Purpose.CHILD_CARE);
4137 addEEnumLiteral(expense_PurposeEEnum, Expense_Purpose.DEPENDENCE_CARE);
4138 addEEnumLiteral(expense_PurposeEEnum, Expense_Purpose.OTHER);
4139 addEEnumLiteral(expense_PurposeEEnum, Expense_Purpose.ALIMONY);
4140 addEEnumLiteral(expense_PurposeEEnum, Expense_Purpose.RECURRENT_DEPT);
4141
4142 initEEnum(dependent_TypeEEnum, Dependent_Type.class, "Dependent_Type");
4143 addEEnumLiteral(dependent_TypeEEnum, Dependent_Type.CHILD);
4144 addEEnumLiteral(dependent_TypeEEnum, Dependent_Type.SPOUSE);
4145 addEEnumLiteral(dependent_TypeEEnum, Dependent_Type.RELATIVE);
4146 addEEnumLiteral(dependent_TypeEEnum, Dependent_Type.OTHER_FAMILY_MEMBER);
4147 addEEnumLiteral(dependent_TypeEEnum, Dependent_Type.NOT_OWN_CHILD);
4148
4149 initEEnum(separation_CausesEEnum, Separation_Causes.class, "Separation_Causes");
4150 addEEnumLiteral(separation_CausesEEnum, Separation_Causes.NONE);
4151 addEEnumLiteral(separation_CausesEEnum, Separation_Causes.DIVORCE);
4152 addEEnumLiteral(separation_CausesEEnum, Separation_Causes.SEPARATION_DE_FAIT);
4153 addEEnumLiteral(separation_CausesEEnum, Separation_Causes.SEPARATION_BY_COURT);
4154
4155 initEEnum(category_of_Permanent_ExpenseEEnum, Category_of_Permanent_Expense.class, "Category_of_Permanent_Expense");
4156 addEEnumLiteral(category_of_Permanent_ExpenseEEnum, Category_of_Permanent_Expense.MISCELLANEOUS_DEBT);
4157 addEEnumLiteral(category_of_Permanent_ExpenseEEnum, Category_of_Permanent_Expense.ALIMONY);
4158
4159 initEEnum(category_of_Health_and_Pension_InsurancesEEnum, Category_of_Health_and_Pension_Insurances.class, "Category_of_Health_and_Pension_Insurances");
4160 addEEnumLiteral(category_of_Health_and_Pension_InsurancesEEnum, Category_of_Health_and_Pension_Insurances.MANDATORY_HEALTH_AND_PENSION_INSURANCE);
4161 addEEnumLiteral(category_of_Health_and_Pension_InsurancesEEnum, Category_of_Health_and_Pension_Insurances.ADDITIONAL_EMPLOYERS_PENSION_INSURANCE);
4162 addEEnumLiteral(category_of_Health_and_Pension_InsurancesEEnum, Category_of_Health_and_Pension_Insurances.CONTINUED_HEALTH_AND_PENSION_INSURANCE);
4163
4164 initEEnum(category_of_Private_Insurance_and_PlanEEnum, Category_of_Private_Insurance_and_Plan.class, "Category_of_Private_Insurance_and_Plan");
4165 addEEnumLiteral(category_of_Private_Insurance_and_PlanEEnum, Category_of_Private_Insurance_and_Plan.PRIVATE_INSURANCE);
4166 addEEnumLiteral(category_of_Private_Insurance_and_PlanEEnum, Category_of_Private_Insurance_and_Plan.PRIVATE_LIFE_INSURANCE);
4167 addEEnumLiteral(category_of_Private_Insurance_and_PlanEEnum, Category_of_Private_Insurance_and_Plan.COMPANY_MEMBERS_PRIVATE_INSURANCE);
4168 addEEnumLiteral(category_of_Private_Insurance_and_PlanEEnum, Category_of_Private_Insurance_and_Plan.HOUSING_SAVING_PLAN);
4169 addEEnumLiteral(category_of_Private_Insurance_and_PlanEEnum, Category_of_Private_Insurance_and_Plan.OLD_AGE_PENSION_PLAN);
4170
4171 initEEnum(legal_Union_TypesEEnum, Legal_Union_Types.class, "Legal_Union_Types");
4172 addEEnumLiteral(legal_Union_TypesEEnum, Legal_Union_Types.MARIAGE);
4173 addEEnumLiteral(legal_Union_TypesEEnum, Legal_Union_Types.PARTNERSHIP);
4174 addEEnumLiteral(legal_Union_TypesEEnum, Legal_Union_Types.OTHER);
4175
4176 // Create resource
4177 createResource(eNS_URI);
4178
4179 // Create annotations
4180 // http://www.eclipse.org/OCL/Import
4181 createImportAnnotations();
4182 // duplicates
4183 createDuplicatesAnnotations();
4184 // http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName
4185 createEmofAnnotations();
4186 // http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot
4187 createPivotAnnotations();
4188 }
4189
4190 /**
4191 * Initializes the annotations for <b>http://www.eclipse.org/OCL/Import</b>.
4192 * <!-- begin-user-doc -->
4193 * <!-- end-user-doc -->
4194 * @generated
4195 */
4196 protected void createImportAnnotations() {
4197 String source = "http://www.eclipse.org/OCL/Import";
4198 addAnnotation
4199 (this,
4200 source,
4201 new String[] {
4202 "ecore", "http://www.eclipse.org/emf/2002/Ecore"
4203 });
4204 }
4205
4206 /**
4207 * Initializes the annotations for <b>duplicates</b>.
4208 * <!-- begin-user-doc -->
4209 * <!-- end-user-doc -->
4210 * @generated
4211 */
4212 protected void createDuplicatesAnnotations() {
4213 String source = "duplicates";
4214 addAnnotation
4215 (tax_PayerEClass,
4216 source,
4217 new String[] {
4218 });
4219 }
4220
4221 /**
4222 * Initializes the annotations for <b>http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName</b>.
4223 * <!-- begin-user-doc -->
4224 * <!-- end-user-doc -->
4225 * @generated
4226 */
4227 protected void createEmofAnnotations() {
4228 String source = "http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName";
4229 addAnnotation
4230 (getLegal_Union_Record_Individual_A(),
4231 source,
4232 new String[] {
4233 "body", "legal_union_A"
4234 });
4235 addAnnotation
4236 (getLegal_Union_Record_Individual_B(),
4237 source,
4238 new String[] {
4239 "body", "legal_union_B"
4240 });
4241 }
4242
4243 /**
4244 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot</b>.
4245 * <!-- begin-user-doc -->
4246 * <!-- end-user-doc -->
4247 * @generated
4248 */
4249 protected void createPivotAnnotations() {
4250 String source = "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot";
4251 addAnnotation
4252 (getIncome_Income_amount(),
4253 source,
4254 new String[] {
4255 "derivation", "let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in\nnon_null_amounts->collect(amount)->min()"
4256 });
4257 addAnnotation
4258 (getIncome_Type_SubjectToWithholdingTax(),
4259 source,
4260 new String[] {
4261 "derivation", "\n\t\t\t\tself.income.tax_card->notEmpty()\n\t\t\t\t"
4262 });
4263 addAnnotation
4264 (getTax_Card_Tax_card_type(),
4265 source,
4266 new String[] {
4267 "derivation", "if(self.income.taxPayer.incomes->size()=1) then \nTax_Card_Type::Principal\n\telse\n\t\tlet all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in\n\t\tlet bigest_income:Income= all_incomes->first() in\n\t\t\t if(bigest_income=self.income) then\n\t\t\t \t Tax_Card_Type::Principal\n\t\t\t else\n\t\t\t\t\tTax_Card_Type::Additional\n\t\t\t\tendif\nendif\n\t\t\t\t"
4268 });
4269 }
4270
4271} //TaxationPackageImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Trade_and_Business_IncomeImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Trade_and_Business_IncomeImpl.java
new file mode 100644
index 00000000..f4ce3360
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Trade_and_Business_IncomeImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.TaxationPackage;
6import Taxation.Trade_and_Business_Income;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Trade and Business Income</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Trade_and_Business_IncomeImpl extends Income_TypeImpl implements Trade_and_Business_Income {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Trade_and_Business_IncomeImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.TRADE_AND_BUSINESS_INCOME;
35 }
36
37} //Trade_and_Business_IncomeImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Travel_Expense_FDImpl.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Travel_Expense_FDImpl.java
new file mode 100644
index 00000000..c24e0b2f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/impl/Travel_Expense_FDImpl.java
@@ -0,0 +1,37 @@
1/**
2 */
3package Taxation.impl;
4
5import Taxation.TaxationPackage;
6import Taxation.Travel_Expense_FD;
7
8import org.eclipse.emf.ecore.EClass;
9
10/**
11 * <!-- begin-user-doc -->
12 * An implementation of the model object '<em><b>Travel Expense FD</b></em>'.
13 * <!-- end-user-doc -->
14 *
15 * @generated
16 */
17public class Travel_Expense_FDImpl extends Professional_ExpenseImpl implements Travel_Expense_FD {
18 /**
19 * <!-- begin-user-doc -->
20 * <!-- end-user-doc -->
21 * @generated
22 */
23 protected Travel_Expense_FDImpl() {
24 super();
25 }
26
27 /**
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 @Override
33 protected EClass eStaticClass() {
34 return TaxationPackage.Literals.TRAVEL_EXPENSE_FD;
35 }
36
37} //Travel_Expense_FDImpl
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationAdapterFactory.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationAdapterFactory.java
new file mode 100644
index 00000000..332b42e2
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationAdapterFactory.java
@@ -0,0 +1,1146 @@
1/**
2 */
3package Taxation.util;
4
5import Taxation.*;
6
7import org.eclipse.emf.common.notify.Adapter;
8import org.eclipse.emf.common.notify.Notifier;
9
10import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
11
12import org.eclipse.emf.ecore.EObject;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see Taxation.TaxationPackage
20 * @generated
21 */
22public class TaxationAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static TaxationPackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public TaxationAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = TaxationPackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject)object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected TaxationSwitch<Adapter> modelSwitch =
69 new TaxationSwitch<Adapter>() {
70 @Override
71 public Adapter caseConstants(Constants object) {
72 return createConstantsAdapter();
73 }
74 @Override
75 public Adapter caseIncome_Tax(Income_Tax object) {
76 return createIncome_TaxAdapter();
77 }
78 @Override
79 public Adapter caseTax_Payer(Tax_Payer object) {
80 return createTax_PayerAdapter();
81 }
82 @Override
83 public Adapter casePhysical_Person(Physical_Person object) {
84 return createPhysical_PersonAdapter();
85 }
86 @Override
87 public Adapter caseAddress(Address object) {
88 return createAddressAdapter();
89 }
90 @Override
91 public Adapter caseExpense(Expense object) {
92 return createExpenseAdapter();
93 }
94 @Override
95 public Adapter caseDependent(Dependent object) {
96 return createDependentAdapter();
97 }
98 @Override
99 public Adapter caseExternal_Allowance(External_Allowance object) {
100 return createExternal_AllowanceAdapter();
101 }
102 @Override
103 public Adapter caseHousehold(Household object) {
104 return createHouseholdAdapter();
105 }
106 @Override
107 public Adapter caseLegal_Union_Record(Legal_Union_Record object) {
108 return createLegal_Union_RecordAdapter();
109 }
110 @Override
111 public Adapter caseTax_Property(Tax_Property object) {
112 return createTax_PropertyAdapter();
113 }
114 @Override
115 public Adapter caseTax_Case(Tax_Case object) {
116 return createTax_CaseAdapter();
117 }
118 @Override
119 public Adapter caseFromAgent(FromAgent object) {
120 return createFromAgentAdapter();
121 }
122 @Override
123 public Adapter caseIncome(Income object) {
124 return createIncomeAdapter();
125 }
126 @Override
127 public Adapter caseIncome_Type(Income_Type object) {
128 return createIncome_TypeAdapter();
129 }
130 @Override
131 public Adapter caseTax_Card(Tax_Card object) {
132 return createTax_CardAdapter();
133 }
134 @Override
135 public Adapter caseIncome_Tax_Credit(Income_Tax_Credit object) {
136 return createIncome_Tax_CreditAdapter();
137 }
138 @Override
139 public Adapter caseIncome_Detail(Income_Detail object) {
140 return createIncome_DetailAdapter();
141 }
142 @Override
143 public Adapter caseFromLaw(FromLaw object) {
144 return createFromLawAdapter();
145 }
146 @Override
147 public Adapter caseFiscal_Address(Fiscal_Address object) {
148 return createFiscal_AddressAdapter();
149 }
150 @Override
151 public Adapter caseHabitual_Address(Habitual_Address object) {
152 return createHabitual_AddressAdapter();
153 }
154 @Override
155 public Adapter caseMarriage_Record(Marriage_Record object) {
156 return createMarriage_RecordAdapter();
157 }
158 @Override
159 public Adapter caseNon_Resident_Tax_Payer(Non_Resident_Tax_Payer object) {
160 return createNon_Resident_Tax_PayerAdapter();
161 }
162 @Override
163 public Adapter casePartnership_Record(Partnership_Record object) {
164 return createPartnership_RecordAdapter();
165 }
166 @Override
167 public Adapter caseResident_Tax_Payer(Resident_Tax_Payer object) {
168 return createResident_Tax_PayerAdapter();
169 }
170 @Override
171 public Adapter caseTrade_and_Business_Income(Trade_and_Business_Income object) {
172 return createTrade_and_Business_IncomeAdapter();
173 }
174 @Override
175 public Adapter caseAgriculture_and_Forestry_Income(Agriculture_and_Forestry_Income object) {
176 return createAgriculture_and_Forestry_IncomeAdapter();
177 }
178 @Override
179 public Adapter casePensions_and_Annuities_Income(Pensions_and_Annuities_Income object) {
180 return createPensions_and_Annuities_IncomeAdapter();
181 }
182 @Override
183 public Adapter caseCapital_and_Investments_Income(Capital_and_Investments_Income object) {
184 return createCapital_and_Investments_IncomeAdapter();
185 }
186 @Override
187 public Adapter caseEmployment_Income(Employment_Income object) {
188 return createEmployment_IncomeAdapter();
189 }
190 @Override
191 public Adapter caseRentals_and_Leases_Income(Rentals_and_Leases_Income object) {
192 return createRentals_and_Leases_IncomeAdapter();
193 }
194 @Override
195 public Adapter caseForeign_Income(Foreign_Income object) {
196 return createForeign_IncomeAdapter();
197 }
198 @Override
199 public Adapter caseLocal_Income(Local_Income object) {
200 return createLocal_IncomeAdapter();
201 }
202 @Override
203 public Adapter caseCIM(CIM object) {
204 return createCIMAdapter();
205 }
206 @Override
207 public Adapter caseCIP(CIP object) {
208 return createCIPAdapter();
209 }
210 @Override
211 public Adapter caseCIS(CIS object) {
212 return createCISAdapter();
213 }
214 @Override
215 public Adapter caseFD(FD object) {
216 return createFDAdapter();
217 }
218 @Override
219 public Adapter caseProfessional_Expenses_Deduction(Professional_Expenses_Deduction object) {
220 return createProfessional_Expenses_DeductionAdapter();
221 }
222 @Override
223 public Adapter caseFO(FO object) {
224 return createFOAdapter();
225 }
226 @Override
227 public Adapter caseDS_for_Permanent_Expense(DS_for_Permanent_Expense object) {
228 return createDS_for_Permanent_ExpenseAdapter();
229 }
230 @Override
231 public Adapter caseDS(DS object) {
232 return createDSAdapter();
233 }
234 @Override
235 public Adapter caseDS_for_Interest_Expense(DS_for_Interest_Expense object) {
236 return createDS_for_Interest_ExpenseAdapter();
237 }
238 @Override
239 public Adapter caseDS_for_Health_and_Pension_Insurance(DS_for_Health_and_Pension_Insurance object) {
240 return createDS_for_Health_and_Pension_InsuranceAdapter();
241 }
242 @Override
243 public Adapter caseDS_for_Private_Insurance_and_Plan(DS_for_Private_Insurance_and_Plan object) {
244 return createDS_for_Private_Insurance_and_PlanAdapter();
245 }
246 @Override
247 public Adapter caseDS_for_Loss_Carryforward(DS_for_Loss_Carryforward object) {
248 return createDS_for_Loss_CarryforwardAdapter();
249 }
250 @Override
251 public Adapter caseDS_for_Donation(DS_for_Donation object) {
252 return createDS_for_DonationAdapter();
253 }
254 @Override
255 public Adapter casePermanent_Expense(Permanent_Expense object) {
256 return createPermanent_ExpenseAdapter();
257 }
258 @Override
259 public Adapter caseSpecial_Expense_DS(Special_Expense_DS object) {
260 return createSpecial_Expense_DSAdapter();
261 }
262 @Override
263 public Adapter caseInterest_Expense(Interest_Expense object) {
264 return createInterest_ExpenseAdapter();
265 }
266 @Override
267 public Adapter casePrivate_Insurance_and_Plan(Private_Insurance_and_Plan object) {
268 return createPrivate_Insurance_and_PlanAdapter();
269 }
270 @Override
271 public Adapter caseHealth_and_Pension_Insurance(Health_and_Pension_Insurance object) {
272 return createHealth_and_Pension_InsuranceAdapter();
273 }
274 @Override
275 public Adapter caseDonation(Donation object) {
276 return createDonationAdapter();
277 }
278 @Override
279 public Adapter caseLoss_Carryforward(Loss_Carryforward object) {
280 return createLoss_CarryforwardAdapter();
281 }
282 @Override
283 public Adapter caseSpousal_Expense_AC(Spousal_Expense_AC object) {
284 return createSpousal_Expense_ACAdapter();
285 }
286 @Override
287 public Adapter caseExtraordinary_Expense_CE(Extraordinary_Expense_CE object) {
288 return createExtraordinary_Expense_CEAdapter();
289 }
290 @Override
291 public Adapter caseTravel_Expense_FD(Travel_Expense_FD object) {
292 return createTravel_Expense_FDAdapter();
293 }
294 @Override
295 public Adapter caseProfessional_Expense(Professional_Expense object) {
296 return createProfessional_ExpenseAdapter();
297 }
298 @Override
299 public Adapter caseMiscellaneous_Expense_FO(Miscellaneous_Expense_FO object) {
300 return createMiscellaneous_Expense_FOAdapter();
301 }
302 @Override
303 public Adapter defaultCase(EObject object) {
304 return createEObjectAdapter();
305 }
306 };
307
308 /**
309 * Creates an adapter for the <code>target</code>.
310 * <!-- begin-user-doc -->
311 * <!-- end-user-doc -->
312 * @param target the object to adapt.
313 * @return the adapter for the <code>target</code>.
314 * @generated
315 */
316 @Override
317 public Adapter createAdapter(Notifier target) {
318 return modelSwitch.doSwitch((EObject)target);
319 }
320
321
322 /**
323 * Creates a new adapter for an object of class '{@link Taxation.Constants <em>Constants</em>}'.
324 * <!-- begin-user-doc -->
325 * This default implementation returns null so that we can easily ignore cases;
326 * it's useful to ignore a case when inheritance will catch all the cases anyway.
327 * <!-- end-user-doc -->
328 * @return the new adapter.
329 * @see Taxation.Constants
330 * @generated
331 */
332 public Adapter createConstantsAdapter() {
333 return null;
334 }
335
336 /**
337 * Creates a new adapter for an object of class '{@link Taxation.Income_Tax <em>Income Tax</em>}'.
338 * <!-- begin-user-doc -->
339 * This default implementation returns null so that we can easily ignore cases;
340 * it's useful to ignore a case when inheritance will catch all the cases anyway.
341 * <!-- end-user-doc -->
342 * @return the new adapter.
343 * @see Taxation.Income_Tax
344 * @generated
345 */
346 public Adapter createIncome_TaxAdapter() {
347 return null;
348 }
349
350 /**
351 * Creates a new adapter for an object of class '{@link Taxation.Tax_Payer <em>Tax Payer</em>}'.
352 * <!-- begin-user-doc -->
353 * This default implementation returns null so that we can easily ignore cases;
354 * it's useful to ignore a case when inheritance will catch all the cases anyway.
355 * <!-- end-user-doc -->
356 * @return the new adapter.
357 * @see Taxation.Tax_Payer
358 * @generated
359 */
360 public Adapter createTax_PayerAdapter() {
361 return null;
362 }
363
364 /**
365 * Creates a new adapter for an object of class '{@link Taxation.Physical_Person <em>Physical Person</em>}'.
366 * <!-- begin-user-doc -->
367 * This default implementation returns null so that we can easily ignore cases;
368 * it's useful to ignore a case when inheritance will catch all the cases anyway.
369 * <!-- end-user-doc -->
370 * @return the new adapter.
371 * @see Taxation.Physical_Person
372 * @generated
373 */
374 public Adapter createPhysical_PersonAdapter() {
375 return null;
376 }
377
378 /**
379 * Creates a new adapter for an object of class '{@link Taxation.Address <em>Address</em>}'.
380 * <!-- begin-user-doc -->
381 * This default implementation returns null so that we can easily ignore cases;
382 * it's useful to ignore a case when inheritance will catch all the cases anyway.
383 * <!-- end-user-doc -->
384 * @return the new adapter.
385 * @see Taxation.Address
386 * @generated
387 */
388 public Adapter createAddressAdapter() {
389 return null;
390 }
391
392 /**
393 * Creates a new adapter for an object of class '{@link Taxation.Expense <em>Expense</em>}'.
394 * <!-- begin-user-doc -->
395 * This default implementation returns null so that we can easily ignore cases;
396 * it's useful to ignore a case when inheritance will catch all the cases anyway.
397 * <!-- end-user-doc -->
398 * @return the new adapter.
399 * @see Taxation.Expense
400 * @generated
401 */
402 public Adapter createExpenseAdapter() {
403 return null;
404 }
405
406 /**
407 * Creates a new adapter for an object of class '{@link Taxation.Dependent <em>Dependent</em>}'.
408 * <!-- begin-user-doc -->
409 * This default implementation returns null so that we can easily ignore cases;
410 * it's useful to ignore a case when inheritance will catch all the cases anyway.
411 * <!-- end-user-doc -->
412 * @return the new adapter.
413 * @see Taxation.Dependent
414 * @generated
415 */
416 public Adapter createDependentAdapter() {
417 return null;
418 }
419
420 /**
421 * Creates a new adapter for an object of class '{@link Taxation.External_Allowance <em>External Allowance</em>}'.
422 * <!-- begin-user-doc -->
423 * This default implementation returns null so that we can easily ignore cases;
424 * it's useful to ignore a case when inheritance will catch all the cases anyway.
425 * <!-- end-user-doc -->
426 * @return the new adapter.
427 * @see Taxation.External_Allowance
428 * @generated
429 */
430 public Adapter createExternal_AllowanceAdapter() {
431 return null;
432 }
433
434 /**
435 * Creates a new adapter for an object of class '{@link Taxation.Household <em>Household</em>}'.
436 * <!-- begin-user-doc -->
437 * This default implementation returns null so that we can easily ignore cases;
438 * it's useful to ignore a case when inheritance will catch all the cases anyway.
439 * <!-- end-user-doc -->
440 * @return the new adapter.
441 * @see Taxation.Household
442 * @generated
443 */
444 public Adapter createHouseholdAdapter() {
445 return null;
446 }
447
448 /**
449 * Creates a new adapter for an object of class '{@link Taxation.Legal_Union_Record <em>Legal Union Record</em>}'.
450 * <!-- begin-user-doc -->
451 * This default implementation returns null so that we can easily ignore cases;
452 * it's useful to ignore a case when inheritance will catch all the cases anyway.
453 * <!-- end-user-doc -->
454 * @return the new adapter.
455 * @see Taxation.Legal_Union_Record
456 * @generated
457 */
458 public Adapter createLegal_Union_RecordAdapter() {
459 return null;
460 }
461
462 /**
463 * Creates a new adapter for an object of class '{@link Taxation.Tax_Property <em>Tax Property</em>}'.
464 * <!-- begin-user-doc -->
465 * This default implementation returns null so that we can easily ignore cases;
466 * it's useful to ignore a case when inheritance will catch all the cases anyway.
467 * <!-- end-user-doc -->
468 * @return the new adapter.
469 * @see Taxation.Tax_Property
470 * @generated
471 */
472 public Adapter createTax_PropertyAdapter() {
473 return null;
474 }
475
476 /**
477 * Creates a new adapter for an object of class '{@link Taxation.Tax_Case <em>Tax Case</em>}'.
478 * <!-- begin-user-doc -->
479 * This default implementation returns null so that we can easily ignore cases;
480 * it's useful to ignore a case when inheritance will catch all the cases anyway.
481 * <!-- end-user-doc -->
482 * @return the new adapter.
483 * @see Taxation.Tax_Case
484 * @generated
485 */
486 public Adapter createTax_CaseAdapter() {
487 return null;
488 }
489
490 /**
491 * Creates a new adapter for an object of class '{@link Taxation.FromAgent <em>From Agent</em>}'.
492 * <!-- begin-user-doc -->
493 * This default implementation returns null so that we can easily ignore cases;
494 * it's useful to ignore a case when inheritance will catch all the cases anyway.
495 * <!-- end-user-doc -->
496 * @return the new adapter.
497 * @see Taxation.FromAgent
498 * @generated
499 */
500 public Adapter createFromAgentAdapter() {
501 return null;
502 }
503
504 /**
505 * Creates a new adapter for an object of class '{@link Taxation.Income <em>Income</em>}'.
506 * <!-- begin-user-doc -->
507 * This default implementation returns null so that we can easily ignore cases;
508 * it's useful to ignore a case when inheritance will catch all the cases anyway.
509 * <!-- end-user-doc -->
510 * @return the new adapter.
511 * @see Taxation.Income
512 * @generated
513 */
514 public Adapter createIncomeAdapter() {
515 return null;
516 }
517
518 /**
519 * Creates a new adapter for an object of class '{@link Taxation.Income_Type <em>Income Type</em>}'.
520 * <!-- begin-user-doc -->
521 * This default implementation returns null so that we can easily ignore cases;
522 * it's useful to ignore a case when inheritance will catch all the cases anyway.
523 * <!-- end-user-doc -->
524 * @return the new adapter.
525 * @see Taxation.Income_Type
526 * @generated
527 */
528 public Adapter createIncome_TypeAdapter() {
529 return null;
530 }
531
532 /**
533 * Creates a new adapter for an object of class '{@link Taxation.Tax_Card <em>Tax Card</em>}'.
534 * <!-- begin-user-doc -->
535 * This default implementation returns null so that we can easily ignore cases;
536 * it's useful to ignore a case when inheritance will catch all the cases anyway.
537 * <!-- end-user-doc -->
538 * @return the new adapter.
539 * @see Taxation.Tax_Card
540 * @generated
541 */
542 public Adapter createTax_CardAdapter() {
543 return null;
544 }
545
546 /**
547 * Creates a new adapter for an object of class '{@link Taxation.Income_Tax_Credit <em>Income Tax Credit</em>}'.
548 * <!-- begin-user-doc -->
549 * This default implementation returns null so that we can easily ignore cases;
550 * it's useful to ignore a case when inheritance will catch all the cases anyway.
551 * <!-- end-user-doc -->
552 * @return the new adapter.
553 * @see Taxation.Income_Tax_Credit
554 * @generated
555 */
556 public Adapter createIncome_Tax_CreditAdapter() {
557 return null;
558 }
559
560 /**
561 * Creates a new adapter for an object of class '{@link Taxation.Income_Detail <em>Income Detail</em>}'.
562 * <!-- begin-user-doc -->
563 * This default implementation returns null so that we can easily ignore cases;
564 * it's useful to ignore a case when inheritance will catch all the cases anyway.
565 * <!-- end-user-doc -->
566 * @return the new adapter.
567 * @see Taxation.Income_Detail
568 * @generated
569 */
570 public Adapter createIncome_DetailAdapter() {
571 return null;
572 }
573
574 /**
575 * Creates a new adapter for an object of class '{@link Taxation.FromLaw <em>From Law</em>}'.
576 * <!-- begin-user-doc -->
577 * This default implementation returns null so that we can easily ignore cases;
578 * it's useful to ignore a case when inheritance will catch all the cases anyway.
579 * <!-- end-user-doc -->
580 * @return the new adapter.
581 * @see Taxation.FromLaw
582 * @generated
583 */
584 public Adapter createFromLawAdapter() {
585 return null;
586 }
587
588 /**
589 * Creates a new adapter for an object of class '{@link Taxation.Fiscal_Address <em>Fiscal Address</em>}'.
590 * <!-- begin-user-doc -->
591 * This default implementation returns null so that we can easily ignore cases;
592 * it's useful to ignore a case when inheritance will catch all the cases anyway.
593 * <!-- end-user-doc -->
594 * @return the new adapter.
595 * @see Taxation.Fiscal_Address
596 * @generated
597 */
598 public Adapter createFiscal_AddressAdapter() {
599 return null;
600 }
601
602 /**
603 * Creates a new adapter for an object of class '{@link Taxation.Habitual_Address <em>Habitual Address</em>}'.
604 * <!-- begin-user-doc -->
605 * This default implementation returns null so that we can easily ignore cases;
606 * it's useful to ignore a case when inheritance will catch all the cases anyway.
607 * <!-- end-user-doc -->
608 * @return the new adapter.
609 * @see Taxation.Habitual_Address
610 * @generated
611 */
612 public Adapter createHabitual_AddressAdapter() {
613 return null;
614 }
615
616 /**
617 * Creates a new adapter for an object of class '{@link Taxation.Marriage_Record <em>Marriage Record</em>}'.
618 * <!-- begin-user-doc -->
619 * This default implementation returns null so that we can easily ignore cases;
620 * it's useful to ignore a case when inheritance will catch all the cases anyway.
621 * <!-- end-user-doc -->
622 * @return the new adapter.
623 * @see Taxation.Marriage_Record
624 * @generated
625 */
626 public Adapter createMarriage_RecordAdapter() {
627 return null;
628 }
629
630 /**
631 * Creates a new adapter for an object of class '{@link Taxation.Non_Resident_Tax_Payer <em>Non Resident Tax Payer</em>}'.
632 * <!-- begin-user-doc -->
633 * This default implementation returns null so that we can easily ignore cases;
634 * it's useful to ignore a case when inheritance will catch all the cases anyway.
635 * <!-- end-user-doc -->
636 * @return the new adapter.
637 * @see Taxation.Non_Resident_Tax_Payer
638 * @generated
639 */
640 public Adapter createNon_Resident_Tax_PayerAdapter() {
641 return null;
642 }
643
644 /**
645 * Creates a new adapter for an object of class '{@link Taxation.Partnership_Record <em>Partnership Record</em>}'.
646 * <!-- begin-user-doc -->
647 * This default implementation returns null so that we can easily ignore cases;
648 * it's useful to ignore a case when inheritance will catch all the cases anyway.
649 * <!-- end-user-doc -->
650 * @return the new adapter.
651 * @see Taxation.Partnership_Record
652 * @generated
653 */
654 public Adapter createPartnership_RecordAdapter() {
655 return null;
656 }
657
658 /**
659 * Creates a new adapter for an object of class '{@link Taxation.Resident_Tax_Payer <em>Resident Tax Payer</em>}'.
660 * <!-- begin-user-doc -->
661 * This default implementation returns null so that we can easily ignore cases;
662 * it's useful to ignore a case when inheritance will catch all the cases anyway.
663 * <!-- end-user-doc -->
664 * @return the new adapter.
665 * @see Taxation.Resident_Tax_Payer
666 * @generated
667 */
668 public Adapter createResident_Tax_PayerAdapter() {
669 return null;
670 }
671
672 /**
673 * Creates a new adapter for an object of class '{@link Taxation.Trade_and_Business_Income <em>Trade and Business Income</em>}'.
674 * <!-- begin-user-doc -->
675 * This default implementation returns null so that we can easily ignore cases;
676 * it's useful to ignore a case when inheritance will catch all the cases anyway.
677 * <!-- end-user-doc -->
678 * @return the new adapter.
679 * @see Taxation.Trade_and_Business_Income
680 * @generated
681 */
682 public Adapter createTrade_and_Business_IncomeAdapter() {
683 return null;
684 }
685
686 /**
687 * Creates a new adapter for an object of class '{@link Taxation.Agriculture_and_Forestry_Income <em>Agriculture and Forestry Income</em>}'.
688 * <!-- begin-user-doc -->
689 * This default implementation returns null so that we can easily ignore cases;
690 * it's useful to ignore a case when inheritance will catch all the cases anyway.
691 * <!-- end-user-doc -->
692 * @return the new adapter.
693 * @see Taxation.Agriculture_and_Forestry_Income
694 * @generated
695 */
696 public Adapter createAgriculture_and_Forestry_IncomeAdapter() {
697 return null;
698 }
699
700 /**
701 * Creates a new adapter for an object of class '{@link Taxation.Pensions_and_Annuities_Income <em>Pensions and Annuities Income</em>}'.
702 * <!-- begin-user-doc -->
703 * This default implementation returns null so that we can easily ignore cases;
704 * it's useful to ignore a case when inheritance will catch all the cases anyway.
705 * <!-- end-user-doc -->
706 * @return the new adapter.
707 * @see Taxation.Pensions_and_Annuities_Income
708 * @generated
709 */
710 public Adapter createPensions_and_Annuities_IncomeAdapter() {
711 return null;
712 }
713
714 /**
715 * Creates a new adapter for an object of class '{@link Taxation.Capital_and_Investments_Income <em>Capital and Investments Income</em>}'.
716 * <!-- begin-user-doc -->
717 * This default implementation returns null so that we can easily ignore cases;
718 * it's useful to ignore a case when inheritance will catch all the cases anyway.
719 * <!-- end-user-doc -->
720 * @return the new adapter.
721 * @see Taxation.Capital_and_Investments_Income
722 * @generated
723 */
724 public Adapter createCapital_and_Investments_IncomeAdapter() {
725 return null;
726 }
727
728 /**
729 * Creates a new adapter for an object of class '{@link Taxation.Employment_Income <em>Employment Income</em>}'.
730 * <!-- begin-user-doc -->
731 * This default implementation returns null so that we can easily ignore cases;
732 * it's useful to ignore a case when inheritance will catch all the cases anyway.
733 * <!-- end-user-doc -->
734 * @return the new adapter.
735 * @see Taxation.Employment_Income
736 * @generated
737 */
738 public Adapter createEmployment_IncomeAdapter() {
739 return null;
740 }
741
742 /**
743 * Creates a new adapter for an object of class '{@link Taxation.Rentals_and_Leases_Income <em>Rentals and Leases Income</em>}'.
744 * <!-- begin-user-doc -->
745 * This default implementation returns null so that we can easily ignore cases;
746 * it's useful to ignore a case when inheritance will catch all the cases anyway.
747 * <!-- end-user-doc -->
748 * @return the new adapter.
749 * @see Taxation.Rentals_and_Leases_Income
750 * @generated
751 */
752 public Adapter createRentals_and_Leases_IncomeAdapter() {
753 return null;
754 }
755
756 /**
757 * Creates a new adapter for an object of class '{@link Taxation.Foreign_Income <em>Foreign Income</em>}'.
758 * <!-- begin-user-doc -->
759 * This default implementation returns null so that we can easily ignore cases;
760 * it's useful to ignore a case when inheritance will catch all the cases anyway.
761 * <!-- end-user-doc -->
762 * @return the new adapter.
763 * @see Taxation.Foreign_Income
764 * @generated
765 */
766 public Adapter createForeign_IncomeAdapter() {
767 return null;
768 }
769
770 /**
771 * Creates a new adapter for an object of class '{@link Taxation.Local_Income <em>Local Income</em>}'.
772 * <!-- begin-user-doc -->
773 * This default implementation returns null so that we can easily ignore cases;
774 * it's useful to ignore a case when inheritance will catch all the cases anyway.
775 * <!-- end-user-doc -->
776 * @return the new adapter.
777 * @see Taxation.Local_Income
778 * @generated
779 */
780 public Adapter createLocal_IncomeAdapter() {
781 return null;
782 }
783
784 /**
785 * Creates a new adapter for an object of class '{@link Taxation.CIM <em>CIM</em>}'.
786 * <!-- begin-user-doc -->
787 * This default implementation returns null so that we can easily ignore cases;
788 * it's useful to ignore a case when inheritance will catch all the cases anyway.
789 * <!-- end-user-doc -->
790 * @return the new adapter.
791 * @see Taxation.CIM
792 * @generated
793 */
794 public Adapter createCIMAdapter() {
795 return null;
796 }
797
798 /**
799 * Creates a new adapter for an object of class '{@link Taxation.CIP <em>CIP</em>}'.
800 * <!-- begin-user-doc -->
801 * This default implementation returns null so that we can easily ignore cases;
802 * it's useful to ignore a case when inheritance will catch all the cases anyway.
803 * <!-- end-user-doc -->
804 * @return the new adapter.
805 * @see Taxation.CIP
806 * @generated
807 */
808 public Adapter createCIPAdapter() {
809 return null;
810 }
811
812 /**
813 * Creates a new adapter for an object of class '{@link Taxation.CIS <em>CIS</em>}'.
814 * <!-- begin-user-doc -->
815 * This default implementation returns null so that we can easily ignore cases;
816 * it's useful to ignore a case when inheritance will catch all the cases anyway.
817 * <!-- end-user-doc -->
818 * @return the new adapter.
819 * @see Taxation.CIS
820 * @generated
821 */
822 public Adapter createCISAdapter() {
823 return null;
824 }
825
826 /**
827 * Creates a new adapter for an object of class '{@link Taxation.FD <em>FD</em>}'.
828 * <!-- begin-user-doc -->
829 * This default implementation returns null so that we can easily ignore cases;
830 * it's useful to ignore a case when inheritance will catch all the cases anyway.
831 * <!-- end-user-doc -->
832 * @return the new adapter.
833 * @see Taxation.FD
834 * @generated
835 */
836 public Adapter createFDAdapter() {
837 return null;
838 }
839
840 /**
841 * Creates a new adapter for an object of class '{@link Taxation.Professional_Expenses_Deduction <em>Professional Expenses Deduction</em>}'.
842 * <!-- begin-user-doc -->
843 * This default implementation returns null so that we can easily ignore cases;
844 * it's useful to ignore a case when inheritance will catch all the cases anyway.
845 * <!-- end-user-doc -->
846 * @return the new adapter.
847 * @see Taxation.Professional_Expenses_Deduction
848 * @generated
849 */
850 public Adapter createProfessional_Expenses_DeductionAdapter() {
851 return null;
852 }
853
854 /**
855 * Creates a new adapter for an object of class '{@link Taxation.FO <em>FO</em>}'.
856 * <!-- begin-user-doc -->
857 * This default implementation returns null so that we can easily ignore cases;
858 * it's useful to ignore a case when inheritance will catch all the cases anyway.
859 * <!-- end-user-doc -->
860 * @return the new adapter.
861 * @see Taxation.FO
862 * @generated
863 */
864 public Adapter createFOAdapter() {
865 return null;
866 }
867
868 /**
869 * Creates a new adapter for an object of class '{@link Taxation.DS_for_Permanent_Expense <em>DS for Permanent Expense</em>}'.
870 * <!-- begin-user-doc -->
871 * This default implementation returns null so that we can easily ignore cases;
872 * it's useful to ignore a case when inheritance will catch all the cases anyway.
873 * <!-- end-user-doc -->
874 * @return the new adapter.
875 * @see Taxation.DS_for_Permanent_Expense
876 * @generated
877 */
878 public Adapter createDS_for_Permanent_ExpenseAdapter() {
879 return null;
880 }
881
882 /**
883 * Creates a new adapter for an object of class '{@link Taxation.DS <em>DS</em>}'.
884 * <!-- begin-user-doc -->
885 * This default implementation returns null so that we can easily ignore cases;
886 * it's useful to ignore a case when inheritance will catch all the cases anyway.
887 * <!-- end-user-doc -->
888 * @return the new adapter.
889 * @see Taxation.DS
890 * @generated
891 */
892 public Adapter createDSAdapter() {
893 return null;
894 }
895
896 /**
897 * Creates a new adapter for an object of class '{@link Taxation.DS_for_Interest_Expense <em>DS for Interest Expense</em>}'.
898 * <!-- begin-user-doc -->
899 * This default implementation returns null so that we can easily ignore cases;
900 * it's useful to ignore a case when inheritance will catch all the cases anyway.
901 * <!-- end-user-doc -->
902 * @return the new adapter.
903 * @see Taxation.DS_for_Interest_Expense
904 * @generated
905 */
906 public Adapter createDS_for_Interest_ExpenseAdapter() {
907 return null;
908 }
909
910 /**
911 * Creates a new adapter for an object of class '{@link Taxation.DS_for_Health_and_Pension_Insurance <em>DS for Health and Pension Insurance</em>}'.
912 * <!-- begin-user-doc -->
913 * This default implementation returns null so that we can easily ignore cases;
914 * it's useful to ignore a case when inheritance will catch all the cases anyway.
915 * <!-- end-user-doc -->
916 * @return the new adapter.
917 * @see Taxation.DS_for_Health_and_Pension_Insurance
918 * @generated
919 */
920 public Adapter createDS_for_Health_and_Pension_InsuranceAdapter() {
921 return null;
922 }
923
924 /**
925 * Creates a new adapter for an object of class '{@link Taxation.DS_for_Private_Insurance_and_Plan <em>DS for Private Insurance and Plan</em>}'.
926 * <!-- begin-user-doc -->
927 * This default implementation returns null so that we can easily ignore cases;
928 * it's useful to ignore a case when inheritance will catch all the cases anyway.
929 * <!-- end-user-doc -->
930 * @return the new adapter.
931 * @see Taxation.DS_for_Private_Insurance_and_Plan
932 * @generated
933 */
934 public Adapter createDS_for_Private_Insurance_and_PlanAdapter() {
935 return null;
936 }
937
938 /**
939 * Creates a new adapter for an object of class '{@link Taxation.DS_for_Loss_Carryforward <em>DS for Loss Carryforward</em>}'.
940 * <!-- begin-user-doc -->
941 * This default implementation returns null so that we can easily ignore cases;
942 * it's useful to ignore a case when inheritance will catch all the cases anyway.
943 * <!-- end-user-doc -->
944 * @return the new adapter.
945 * @see Taxation.DS_for_Loss_Carryforward
946 * @generated
947 */
948 public Adapter createDS_for_Loss_CarryforwardAdapter() {
949 return null;
950 }
951
952 /**
953 * Creates a new adapter for an object of class '{@link Taxation.DS_for_Donation <em>DS for Donation</em>}'.
954 * <!-- begin-user-doc -->
955 * This default implementation returns null so that we can easily ignore cases;
956 * it's useful to ignore a case when inheritance will catch all the cases anyway.
957 * <!-- end-user-doc -->
958 * @return the new adapter.
959 * @see Taxation.DS_for_Donation
960 * @generated
961 */
962 public Adapter createDS_for_DonationAdapter() {
963 return null;
964 }
965
966 /**
967 * Creates a new adapter for an object of class '{@link Taxation.Permanent_Expense <em>Permanent Expense</em>}'.
968 * <!-- begin-user-doc -->
969 * This default implementation returns null so that we can easily ignore cases;
970 * it's useful to ignore a case when inheritance will catch all the cases anyway.
971 * <!-- end-user-doc -->
972 * @return the new adapter.
973 * @see Taxation.Permanent_Expense
974 * @generated
975 */
976 public Adapter createPermanent_ExpenseAdapter() {
977 return null;
978 }
979
980 /**
981 * Creates a new adapter for an object of class '{@link Taxation.Special_Expense_DS <em>Special Expense DS</em>}'.
982 * <!-- begin-user-doc -->
983 * This default implementation returns null so that we can easily ignore cases;
984 * it's useful to ignore a case when inheritance will catch all the cases anyway.
985 * <!-- end-user-doc -->
986 * @return the new adapter.
987 * @see Taxation.Special_Expense_DS
988 * @generated
989 */
990 public Adapter createSpecial_Expense_DSAdapter() {
991 return null;
992 }
993
994 /**
995 * Creates a new adapter for an object of class '{@link Taxation.Interest_Expense <em>Interest Expense</em>}'.
996 * <!-- begin-user-doc -->
997 * This default implementation returns null so that we can easily ignore cases;
998 * it's useful to ignore a case when inheritance will catch all the cases anyway.
999 * <!-- end-user-doc -->
1000 * @return the new adapter.
1001 * @see Taxation.Interest_Expense
1002 * @generated
1003 */
1004 public Adapter createInterest_ExpenseAdapter() {
1005 return null;
1006 }
1007
1008 /**
1009 * Creates a new adapter for an object of class '{@link Taxation.Private_Insurance_and_Plan <em>Private Insurance and Plan</em>}'.
1010 * <!-- begin-user-doc -->
1011 * This default implementation returns null so that we can easily ignore cases;
1012 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1013 * <!-- end-user-doc -->
1014 * @return the new adapter.
1015 * @see Taxation.Private_Insurance_and_Plan
1016 * @generated
1017 */
1018 public Adapter createPrivate_Insurance_and_PlanAdapter() {
1019 return null;
1020 }
1021
1022 /**
1023 * Creates a new adapter for an object of class '{@link Taxation.Health_and_Pension_Insurance <em>Health and Pension Insurance</em>}'.
1024 * <!-- begin-user-doc -->
1025 * This default implementation returns null so that we can easily ignore cases;
1026 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1027 * <!-- end-user-doc -->
1028 * @return the new adapter.
1029 * @see Taxation.Health_and_Pension_Insurance
1030 * @generated
1031 */
1032 public Adapter createHealth_and_Pension_InsuranceAdapter() {
1033 return null;
1034 }
1035
1036 /**
1037 * Creates a new adapter for an object of class '{@link Taxation.Donation <em>Donation</em>}'.
1038 * <!-- begin-user-doc -->
1039 * This default implementation returns null so that we can easily ignore cases;
1040 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1041 * <!-- end-user-doc -->
1042 * @return the new adapter.
1043 * @see Taxation.Donation
1044 * @generated
1045 */
1046 public Adapter createDonationAdapter() {
1047 return null;
1048 }
1049
1050 /**
1051 * Creates a new adapter for an object of class '{@link Taxation.Loss_Carryforward <em>Loss Carryforward</em>}'.
1052 * <!-- begin-user-doc -->
1053 * This default implementation returns null so that we can easily ignore cases;
1054 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1055 * <!-- end-user-doc -->
1056 * @return the new adapter.
1057 * @see Taxation.Loss_Carryforward
1058 * @generated
1059 */
1060 public Adapter createLoss_CarryforwardAdapter() {
1061 return null;
1062 }
1063
1064 /**
1065 * Creates a new adapter for an object of class '{@link Taxation.Spousal_Expense_AC <em>Spousal Expense AC</em>}'.
1066 * <!-- begin-user-doc -->
1067 * This default implementation returns null so that we can easily ignore cases;
1068 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1069 * <!-- end-user-doc -->
1070 * @return the new adapter.
1071 * @see Taxation.Spousal_Expense_AC
1072 * @generated
1073 */
1074 public Adapter createSpousal_Expense_ACAdapter() {
1075 return null;
1076 }
1077
1078 /**
1079 * Creates a new adapter for an object of class '{@link Taxation.Extraordinary_Expense_CE <em>Extraordinary Expense CE</em>}'.
1080 * <!-- begin-user-doc -->
1081 * This default implementation returns null so that we can easily ignore cases;
1082 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1083 * <!-- end-user-doc -->
1084 * @return the new adapter.
1085 * @see Taxation.Extraordinary_Expense_CE
1086 * @generated
1087 */
1088 public Adapter createExtraordinary_Expense_CEAdapter() {
1089 return null;
1090 }
1091
1092 /**
1093 * Creates a new adapter for an object of class '{@link Taxation.Travel_Expense_FD <em>Travel Expense FD</em>}'.
1094 * <!-- begin-user-doc -->
1095 * This default implementation returns null so that we can easily ignore cases;
1096 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1097 * <!-- end-user-doc -->
1098 * @return the new adapter.
1099 * @see Taxation.Travel_Expense_FD
1100 * @generated
1101 */
1102 public Adapter createTravel_Expense_FDAdapter() {
1103 return null;
1104 }
1105
1106 /**
1107 * Creates a new adapter for an object of class '{@link Taxation.Professional_Expense <em>Professional Expense</em>}'.
1108 * <!-- begin-user-doc -->
1109 * This default implementation returns null so that we can easily ignore cases;
1110 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1111 * <!-- end-user-doc -->
1112 * @return the new adapter.
1113 * @see Taxation.Professional_Expense
1114 * @generated
1115 */
1116 public Adapter createProfessional_ExpenseAdapter() {
1117 return null;
1118 }
1119
1120 /**
1121 * Creates a new adapter for an object of class '{@link Taxation.Miscellaneous_Expense_FO <em>Miscellaneous Expense FO</em>}'.
1122 * <!-- begin-user-doc -->
1123 * This default implementation returns null so that we can easily ignore cases;
1124 * it's useful to ignore a case when inheritance will catch all the cases anyway.
1125 * <!-- end-user-doc -->
1126 * @return the new adapter.
1127 * @see Taxation.Miscellaneous_Expense_FO
1128 * @generated
1129 */
1130 public Adapter createMiscellaneous_Expense_FOAdapter() {
1131 return null;
1132 }
1133
1134 /**
1135 * Creates a new adapter for the default case.
1136 * <!-- begin-user-doc -->
1137 * This default implementation returns null.
1138 * <!-- end-user-doc -->
1139 * @return the new adapter.
1140 * @generated
1141 */
1142 public Adapter createEObjectAdapter() {
1143 return null;
1144 }
1145
1146} //TaxationAdapterFactory
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationSwitch.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationSwitch.java
new file mode 100644
index 00000000..8e62161d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.model/src/Taxation/util/TaxationSwitch.java
@@ -0,0 +1,1360 @@
1/**
2 */
3package Taxation.util;
4
5import Taxation.*;
6
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.emf.ecore.EPackage;
9
10import org.eclipse.emf.ecore.util.Switch;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see Taxation.TaxationPackage
23 * @generated
24 */
25public class TaxationSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static TaxationPackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public TaxationSwitch() {
41 if (modelPackage == null) {
42 modelPackage = TaxationPackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case TaxationPackage.CONSTANTS: {
70 Constants constants = (Constants)theEObject;
71 T result = caseConstants(constants);
72 if (result == null) result = defaultCase(theEObject);
73 return result;
74 }
75 case TaxationPackage.INCOME_TAX: {
76 Income_Tax income_Tax = (Income_Tax)theEObject;
77 T result = caseIncome_Tax(income_Tax);
78 if (result == null) result = defaultCase(theEObject);
79 return result;
80 }
81 case TaxationPackage.TAX_PAYER: {
82 Tax_Payer tax_Payer = (Tax_Payer)theEObject;
83 T result = caseTax_Payer(tax_Payer);
84 if (result == null) result = casePhysical_Person(tax_Payer);
85 if (result == null) result = caseTax_Case(tax_Payer);
86 if (result == null) result = defaultCase(theEObject);
87 return result;
88 }
89 case TaxationPackage.PHYSICAL_PERSON: {
90 Physical_Person physical_Person = (Physical_Person)theEObject;
91 T result = casePhysical_Person(physical_Person);
92 if (result == null) result = defaultCase(theEObject);
93 return result;
94 }
95 case TaxationPackage.ADDRESS: {
96 Address address = (Address)theEObject;
97 T result = caseAddress(address);
98 if (result == null) result = defaultCase(theEObject);
99 return result;
100 }
101 case TaxationPackage.EXPENSE: {
102 Expense expense = (Expense)theEObject;
103 T result = caseExpense(expense);
104 if (result == null) result = defaultCase(theEObject);
105 return result;
106 }
107 case TaxationPackage.DEPENDENT: {
108 Dependent dependent = (Dependent)theEObject;
109 T result = caseDependent(dependent);
110 if (result == null) result = casePhysical_Person(dependent);
111 if (result == null) result = defaultCase(theEObject);
112 return result;
113 }
114 case TaxationPackage.EXTERNAL_ALLOWANCE: {
115 External_Allowance external_Allowance = (External_Allowance)theEObject;
116 T result = caseExternal_Allowance(external_Allowance);
117 if (result == null) result = defaultCase(theEObject);
118 return result;
119 }
120 case TaxationPackage.HOUSEHOLD: {
121 Household household = (Household)theEObject;
122 T result = caseHousehold(household);
123 if (result == null) result = caseTax_Case(household);
124 if (result == null) result = defaultCase(theEObject);
125 return result;
126 }
127 case TaxationPackage.LEGAL_UNION_RECORD: {
128 Legal_Union_Record legal_Union_Record = (Legal_Union_Record)theEObject;
129 T result = caseLegal_Union_Record(legal_Union_Record);
130 if (result == null) result = defaultCase(theEObject);
131 return result;
132 }
133 case TaxationPackage.TAX_PROPERTY: {
134 Tax_Property tax_Property = (Tax_Property)theEObject;
135 T result = caseTax_Property(tax_Property);
136 if (result == null) result = defaultCase(theEObject);
137 return result;
138 }
139 case TaxationPackage.TAX_CASE: {
140 Tax_Case tax_Case = (Tax_Case)theEObject;
141 T result = caseTax_Case(tax_Case);
142 if (result == null) result = defaultCase(theEObject);
143 return result;
144 }
145 case TaxationPackage.FROM_AGENT: {
146 FromAgent fromAgent = (FromAgent)theEObject;
147 T result = caseFromAgent(fromAgent);
148 if (result == null) result = defaultCase(theEObject);
149 return result;
150 }
151 case TaxationPackage.INCOME: {
152 Income income = (Income)theEObject;
153 T result = caseIncome(income);
154 if (result == null) result = defaultCase(theEObject);
155 return result;
156 }
157 case TaxationPackage.INCOME_TYPE: {
158 Income_Type income_Type = (Income_Type)theEObject;
159 T result = caseIncome_Type(income_Type);
160 if (result == null) result = defaultCase(theEObject);
161 return result;
162 }
163 case TaxationPackage.TAX_CARD: {
164 Tax_Card tax_Card = (Tax_Card)theEObject;
165 T result = caseTax_Card(tax_Card);
166 if (result == null) result = defaultCase(theEObject);
167 return result;
168 }
169 case TaxationPackage.INCOME_TAX_CREDIT: {
170 Income_Tax_Credit income_Tax_Credit = (Income_Tax_Credit)theEObject;
171 T result = caseIncome_Tax_Credit(income_Tax_Credit);
172 if (result == null) result = defaultCase(theEObject);
173 return result;
174 }
175 case TaxationPackage.INCOME_DETAIL: {
176 Income_Detail income_Detail = (Income_Detail)theEObject;
177 T result = caseIncome_Detail(income_Detail);
178 if (result == null) result = defaultCase(theEObject);
179 return result;
180 }
181 case TaxationPackage.FROM_LAW: {
182 FromLaw fromLaw = (FromLaw)theEObject;
183 T result = caseFromLaw(fromLaw);
184 if (result == null) result = defaultCase(theEObject);
185 return result;
186 }
187 case TaxationPackage.FISCAL_ADDRESS: {
188 Fiscal_Address fiscal_Address = (Fiscal_Address)theEObject;
189 T result = caseFiscal_Address(fiscal_Address);
190 if (result == null) result = caseAddress(fiscal_Address);
191 if (result == null) result = defaultCase(theEObject);
192 return result;
193 }
194 case TaxationPackage.HABITUAL_ADDRESS: {
195 Habitual_Address habitual_Address = (Habitual_Address)theEObject;
196 T result = caseHabitual_Address(habitual_Address);
197 if (result == null) result = caseAddress(habitual_Address);
198 if (result == null) result = defaultCase(theEObject);
199 return result;
200 }
201 case TaxationPackage.MARRIAGE_RECORD: {
202 Marriage_Record marriage_Record = (Marriage_Record)theEObject;
203 T result = caseMarriage_Record(marriage_Record);
204 if (result == null) result = caseLegal_Union_Record(marriage_Record);
205 if (result == null) result = defaultCase(theEObject);
206 return result;
207 }
208 case TaxationPackage.NON_RESIDENT_TAX_PAYER: {
209 Non_Resident_Tax_Payer non_Resident_Tax_Payer = (Non_Resident_Tax_Payer)theEObject;
210 T result = caseNon_Resident_Tax_Payer(non_Resident_Tax_Payer);
211 if (result == null) result = caseTax_Payer(non_Resident_Tax_Payer);
212 if (result == null) result = casePhysical_Person(non_Resident_Tax_Payer);
213 if (result == null) result = caseTax_Case(non_Resident_Tax_Payer);
214 if (result == null) result = defaultCase(theEObject);
215 return result;
216 }
217 case TaxationPackage.PARTNERSHIP_RECORD: {
218 Partnership_Record partnership_Record = (Partnership_Record)theEObject;
219 T result = casePartnership_Record(partnership_Record);
220 if (result == null) result = caseLegal_Union_Record(partnership_Record);
221 if (result == null) result = defaultCase(theEObject);
222 return result;
223 }
224 case TaxationPackage.RESIDENT_TAX_PAYER: {
225 Resident_Tax_Payer resident_Tax_Payer = (Resident_Tax_Payer)theEObject;
226 T result = caseResident_Tax_Payer(resident_Tax_Payer);
227 if (result == null) result = caseTax_Payer(resident_Tax_Payer);
228 if (result == null) result = casePhysical_Person(resident_Tax_Payer);
229 if (result == null) result = caseTax_Case(resident_Tax_Payer);
230 if (result == null) result = defaultCase(theEObject);
231 return result;
232 }
233 case TaxationPackage.TRADE_AND_BUSINESS_INCOME: {
234 Trade_and_Business_Income trade_and_Business_Income = (Trade_and_Business_Income)theEObject;
235 T result = caseTrade_and_Business_Income(trade_and_Business_Income);
236 if (result == null) result = caseIncome_Type(trade_and_Business_Income);
237 if (result == null) result = defaultCase(theEObject);
238 return result;
239 }
240 case TaxationPackage.AGRICULTURE_AND_FORESTRY_INCOME: {
241 Agriculture_and_Forestry_Income agriculture_and_Forestry_Income = (Agriculture_and_Forestry_Income)theEObject;
242 T result = caseAgriculture_and_Forestry_Income(agriculture_and_Forestry_Income);
243 if (result == null) result = caseIncome_Type(agriculture_and_Forestry_Income);
244 if (result == null) result = defaultCase(theEObject);
245 return result;
246 }
247 case TaxationPackage.PENSIONS_AND_ANNUITIES_INCOME: {
248 Pensions_and_Annuities_Income pensions_and_Annuities_Income = (Pensions_and_Annuities_Income)theEObject;
249 T result = casePensions_and_Annuities_Income(pensions_and_Annuities_Income);
250 if (result == null) result = caseIncome_Type(pensions_and_Annuities_Income);
251 if (result == null) result = defaultCase(theEObject);
252 return result;
253 }
254 case TaxationPackage.CAPITAL_AND_INVESTMENTS_INCOME: {
255 Capital_and_Investments_Income capital_and_Investments_Income = (Capital_and_Investments_Income)theEObject;
256 T result = caseCapital_and_Investments_Income(capital_and_Investments_Income);
257 if (result == null) result = caseIncome_Type(capital_and_Investments_Income);
258 if (result == null) result = defaultCase(theEObject);
259 return result;
260 }
261 case TaxationPackage.EMPLOYMENT_INCOME: {
262 Employment_Income employment_Income = (Employment_Income)theEObject;
263 T result = caseEmployment_Income(employment_Income);
264 if (result == null) result = caseIncome_Type(employment_Income);
265 if (result == null) result = defaultCase(theEObject);
266 return result;
267 }
268 case TaxationPackage.RENTALS_AND_LEASES_INCOME: {
269 Rentals_and_Leases_Income rentals_and_Leases_Income = (Rentals_and_Leases_Income)theEObject;
270 T result = caseRentals_and_Leases_Income(rentals_and_Leases_Income);
271 if (result == null) result = caseIncome_Type(rentals_and_Leases_Income);
272 if (result == null) result = defaultCase(theEObject);
273 return result;
274 }
275 case TaxationPackage.FOREIGN_INCOME: {
276 Foreign_Income foreign_Income = (Foreign_Income)theEObject;
277 T result = caseForeign_Income(foreign_Income);
278 if (result == null) result = caseIncome(foreign_Income);
279 if (result == null) result = defaultCase(theEObject);
280 return result;
281 }
282 case TaxationPackage.LOCAL_INCOME: {
283 Local_Income local_Income = (Local_Income)theEObject;
284 T result = caseLocal_Income(local_Income);
285 if (result == null) result = caseIncome(local_Income);
286 if (result == null) result = defaultCase(theEObject);
287 return result;
288 }
289 case TaxationPackage.CIM: {
290 CIM cim = (CIM)theEObject;
291 T result = caseCIM(cim);
292 if (result == null) result = caseIncome_Tax_Credit(cim);
293 if (result == null) result = defaultCase(theEObject);
294 return result;
295 }
296 case TaxationPackage.CIP: {
297 CIP cip = (CIP)theEObject;
298 T result = caseCIP(cip);
299 if (result == null) result = caseIncome_Tax_Credit(cip);
300 if (result == null) result = defaultCase(theEObject);
301 return result;
302 }
303 case TaxationPackage.CIS: {
304 CIS cis = (CIS)theEObject;
305 T result = caseCIS(cis);
306 if (result == null) result = caseIncome_Tax_Credit(cis);
307 if (result == null) result = defaultCase(theEObject);
308 return result;
309 }
310 case TaxationPackage.FD: {
311 FD fd = (FD)theEObject;
312 T result = caseFD(fd);
313 if (result == null) result = caseProfessional_Expenses_Deduction(fd);
314 if (result == null) result = defaultCase(theEObject);
315 return result;
316 }
317 case TaxationPackage.PROFESSIONAL_EXPENSES_DEDUCTION: {
318 Professional_Expenses_Deduction professional_Expenses_Deduction = (Professional_Expenses_Deduction)theEObject;
319 T result = caseProfessional_Expenses_Deduction(professional_Expenses_Deduction);
320 if (result == null) result = defaultCase(theEObject);
321 return result;
322 }
323 case TaxationPackage.FO: {
324 FO fo = (FO)theEObject;
325 T result = caseFO(fo);
326 if (result == null) result = caseProfessional_Expenses_Deduction(fo);
327 if (result == null) result = defaultCase(theEObject);
328 return result;
329 }
330 case TaxationPackage.DS_FOR_PERMANENT_EXPENSE: {
331 DS_for_Permanent_Expense dS_for_Permanent_Expense = (DS_for_Permanent_Expense)theEObject;
332 T result = caseDS_for_Permanent_Expense(dS_for_Permanent_Expense);
333 if (result == null) result = caseDS(dS_for_Permanent_Expense);
334 if (result == null) result = defaultCase(theEObject);
335 return result;
336 }
337 case TaxationPackage.DS: {
338 DS ds = (DS)theEObject;
339 T result = caseDS(ds);
340 if (result == null) result = defaultCase(theEObject);
341 return result;
342 }
343 case TaxationPackage.DS_FOR_INTEREST_EXPENSE: {
344 DS_for_Interest_Expense dS_for_Interest_Expense = (DS_for_Interest_Expense)theEObject;
345 T result = caseDS_for_Interest_Expense(dS_for_Interest_Expense);
346 if (result == null) result = caseDS(dS_for_Interest_Expense);
347 if (result == null) result = defaultCase(theEObject);
348 return result;
349 }
350 case TaxationPackage.DS_FOR_HEALTH_AND_PENSION_INSURANCE: {
351 DS_for_Health_and_Pension_Insurance dS_for_Health_and_Pension_Insurance = (DS_for_Health_and_Pension_Insurance)theEObject;
352 T result = caseDS_for_Health_and_Pension_Insurance(dS_for_Health_and_Pension_Insurance);
353 if (result == null) result = caseDS(dS_for_Health_and_Pension_Insurance);
354 if (result == null) result = defaultCase(theEObject);
355 return result;
356 }
357 case TaxationPackage.DS_FOR_PRIVATE_INSURANCE_AND_PLAN: {
358 DS_for_Private_Insurance_and_Plan dS_for_Private_Insurance_and_Plan = (DS_for_Private_Insurance_and_Plan)theEObject;
359 T result = caseDS_for_Private_Insurance_and_Plan(dS_for_Private_Insurance_and_Plan);
360 if (result == null) result = caseDS(dS_for_Private_Insurance_and_Plan);
361 if (result == null) result = defaultCase(theEObject);
362 return result;
363 }
364 case TaxationPackage.DS_FOR_LOSS_CARRYFORWARD: {
365 DS_for_Loss_Carryforward dS_for_Loss_Carryforward = (DS_for_Loss_Carryforward)theEObject;
366 T result = caseDS_for_Loss_Carryforward(dS_for_Loss_Carryforward);
367 if (result == null) result = caseDS(dS_for_Loss_Carryforward);
368 if (result == null) result = defaultCase(theEObject);
369 return result;
370 }
371 case TaxationPackage.DS_FOR_DONATION: {
372 DS_for_Donation dS_for_Donation = (DS_for_Donation)theEObject;
373 T result = caseDS_for_Donation(dS_for_Donation);
374 if (result == null) result = caseDS(dS_for_Donation);
375 if (result == null) result = defaultCase(theEObject);
376 return result;
377 }
378 case TaxationPackage.PERMANENT_EXPENSE: {
379 Permanent_Expense permanent_Expense = (Permanent_Expense)theEObject;
380 T result = casePermanent_Expense(permanent_Expense);
381 if (result == null) result = caseSpecial_Expense_DS(permanent_Expense);
382 if (result == null) result = caseExpense(permanent_Expense);
383 if (result == null) result = defaultCase(theEObject);
384 return result;
385 }
386 case TaxationPackage.SPECIAL_EXPENSE_DS: {
387 Special_Expense_DS special_Expense_DS = (Special_Expense_DS)theEObject;
388 T result = caseSpecial_Expense_DS(special_Expense_DS);
389 if (result == null) result = caseExpense(special_Expense_DS);
390 if (result == null) result = defaultCase(theEObject);
391 return result;
392 }
393 case TaxationPackage.INTEREST_EXPENSE: {
394 Interest_Expense interest_Expense = (Interest_Expense)theEObject;
395 T result = caseInterest_Expense(interest_Expense);
396 if (result == null) result = caseSpecial_Expense_DS(interest_Expense);
397 if (result == null) result = caseExpense(interest_Expense);
398 if (result == null) result = defaultCase(theEObject);
399 return result;
400 }
401 case TaxationPackage.PRIVATE_INSURANCE_AND_PLAN: {
402 Private_Insurance_and_Plan private_Insurance_and_Plan = (Private_Insurance_and_Plan)theEObject;
403 T result = casePrivate_Insurance_and_Plan(private_Insurance_and_Plan);
404 if (result == null) result = caseSpecial_Expense_DS(private_Insurance_and_Plan);
405 if (result == null) result = caseExpense(private_Insurance_and_Plan);
406 if (result == null) result = defaultCase(theEObject);
407 return result;
408 }
409 case TaxationPackage.HEALTH_AND_PENSION_INSURANCE: {
410 Health_and_Pension_Insurance health_and_Pension_Insurance = (Health_and_Pension_Insurance)theEObject;
411 T result = caseHealth_and_Pension_Insurance(health_and_Pension_Insurance);
412 if (result == null) result = caseSpecial_Expense_DS(health_and_Pension_Insurance);
413 if (result == null) result = caseExpense(health_and_Pension_Insurance);
414 if (result == null) result = defaultCase(theEObject);
415 return result;
416 }
417 case TaxationPackage.DONATION: {
418 Donation donation = (Donation)theEObject;
419 T result = caseDonation(donation);
420 if (result == null) result = caseSpecial_Expense_DS(donation);
421 if (result == null) result = caseExpense(donation);
422 if (result == null) result = defaultCase(theEObject);
423 return result;
424 }
425 case TaxationPackage.LOSS_CARRYFORWARD: {
426 Loss_Carryforward loss_Carryforward = (Loss_Carryforward)theEObject;
427 T result = caseLoss_Carryforward(loss_Carryforward);
428 if (result == null) result = caseSpecial_Expense_DS(loss_Carryforward);
429 if (result == null) result = caseExpense(loss_Carryforward);
430 if (result == null) result = defaultCase(theEObject);
431 return result;
432 }
433 case TaxationPackage.SPOUSAL_EXPENSE_AC: {
434 Spousal_Expense_AC spousal_Expense_AC = (Spousal_Expense_AC)theEObject;
435 T result = caseSpousal_Expense_AC(spousal_Expense_AC);
436 if (result == null) result = caseExpense(spousal_Expense_AC);
437 if (result == null) result = defaultCase(theEObject);
438 return result;
439 }
440 case TaxationPackage.EXTRAORDINARY_EXPENSE_CE: {
441 Extraordinary_Expense_CE extraordinary_Expense_CE = (Extraordinary_Expense_CE)theEObject;
442 T result = caseExtraordinary_Expense_CE(extraordinary_Expense_CE);
443 if (result == null) result = caseExpense(extraordinary_Expense_CE);
444 if (result == null) result = defaultCase(theEObject);
445 return result;
446 }
447 case TaxationPackage.TRAVEL_EXPENSE_FD: {
448 Travel_Expense_FD travel_Expense_FD = (Travel_Expense_FD)theEObject;
449 T result = caseTravel_Expense_FD(travel_Expense_FD);
450 if (result == null) result = caseProfessional_Expense(travel_Expense_FD);
451 if (result == null) result = caseExpense(travel_Expense_FD);
452 if (result == null) result = defaultCase(theEObject);
453 return result;
454 }
455 case TaxationPackage.PROFESSIONAL_EXPENSE: {
456 Professional_Expense professional_Expense = (Professional_Expense)theEObject;
457 T result = caseProfessional_Expense(professional_Expense);
458 if (result == null) result = caseExpense(professional_Expense);
459 if (result == null) result = defaultCase(theEObject);
460 return result;
461 }
462 case TaxationPackage.MISCELLANEOUS_EXPENSE_FO: {
463 Miscellaneous_Expense_FO miscellaneous_Expense_FO = (Miscellaneous_Expense_FO)theEObject;
464 T result = caseMiscellaneous_Expense_FO(miscellaneous_Expense_FO);
465 if (result == null) result = caseProfessional_Expense(miscellaneous_Expense_FO);
466 if (result == null) result = caseExpense(miscellaneous_Expense_FO);
467 if (result == null) result = defaultCase(theEObject);
468 return result;
469 }
470 default: return defaultCase(theEObject);
471 }
472 }
473
474 /**
475 * Returns the result of interpreting the object as an instance of '<em>Constants</em>'.
476 * <!-- begin-user-doc -->
477 * This implementation returns null;
478 * returning a non-null result will terminate the switch.
479 * <!-- end-user-doc -->
480 * @param object the target of the switch.
481 * @return the result of interpreting the object as an instance of '<em>Constants</em>'.
482 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
483 * @generated
484 */
485 public T caseConstants(Constants object) {
486 return null;
487 }
488
489 /**
490 * Returns the result of interpreting the object as an instance of '<em>Income Tax</em>'.
491 * <!-- begin-user-doc -->
492 * This implementation returns null;
493 * returning a non-null result will terminate the switch.
494 * <!-- end-user-doc -->
495 * @param object the target of the switch.
496 * @return the result of interpreting the object as an instance of '<em>Income Tax</em>'.
497 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
498 * @generated
499 */
500 public T caseIncome_Tax(Income_Tax object) {
501 return null;
502 }
503
504 /**
505 * Returns the result of interpreting the object as an instance of '<em>Tax Payer</em>'.
506 * <!-- begin-user-doc -->
507 * This implementation returns null;
508 * returning a non-null result will terminate the switch.
509 * <!-- end-user-doc -->
510 * @param object the target of the switch.
511 * @return the result of interpreting the object as an instance of '<em>Tax Payer</em>'.
512 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
513 * @generated
514 */
515 public T caseTax_Payer(Tax_Payer object) {
516 return null;
517 }
518
519 /**
520 * Returns the result of interpreting the object as an instance of '<em>Physical Person</em>'.
521 * <!-- begin-user-doc -->
522 * This implementation returns null;
523 * returning a non-null result will terminate the switch.
524 * <!-- end-user-doc -->
525 * @param object the target of the switch.
526 * @return the result of interpreting the object as an instance of '<em>Physical Person</em>'.
527 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
528 * @generated
529 */
530 public T casePhysical_Person(Physical_Person object) {
531 return null;
532 }
533
534 /**
535 * Returns the result of interpreting the object as an instance of '<em>Address</em>'.
536 * <!-- begin-user-doc -->
537 * This implementation returns null;
538 * returning a non-null result will terminate the switch.
539 * <!-- end-user-doc -->
540 * @param object the target of the switch.
541 * @return the result of interpreting the object as an instance of '<em>Address</em>'.
542 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
543 * @generated
544 */
545 public T caseAddress(Address object) {
546 return null;
547 }
548
549 /**
550 * Returns the result of interpreting the object as an instance of '<em>Expense</em>'.
551 * <!-- begin-user-doc -->
552 * This implementation returns null;
553 * returning a non-null result will terminate the switch.
554 * <!-- end-user-doc -->
555 * @param object the target of the switch.
556 * @return the result of interpreting the object as an instance of '<em>Expense</em>'.
557 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
558 * @generated
559 */
560 public T caseExpense(Expense object) {
561 return null;
562 }
563
564 /**
565 * Returns the result of interpreting the object as an instance of '<em>Dependent</em>'.
566 * <!-- begin-user-doc -->
567 * This implementation returns null;
568 * returning a non-null result will terminate the switch.
569 * <!-- end-user-doc -->
570 * @param object the target of the switch.
571 * @return the result of interpreting the object as an instance of '<em>Dependent</em>'.
572 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
573 * @generated
574 */
575 public T caseDependent(Dependent object) {
576 return null;
577 }
578
579 /**
580 * Returns the result of interpreting the object as an instance of '<em>External Allowance</em>'.
581 * <!-- begin-user-doc -->
582 * This implementation returns null;
583 * returning a non-null result will terminate the switch.
584 * <!-- end-user-doc -->
585 * @param object the target of the switch.
586 * @return the result of interpreting the object as an instance of '<em>External Allowance</em>'.
587 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
588 * @generated
589 */
590 public T caseExternal_Allowance(External_Allowance object) {
591 return null;
592 }
593
594 /**
595 * Returns the result of interpreting the object as an instance of '<em>Household</em>'.
596 * <!-- begin-user-doc -->
597 * This implementation returns null;
598 * returning a non-null result will terminate the switch.
599 * <!-- end-user-doc -->
600 * @param object the target of the switch.
601 * @return the result of interpreting the object as an instance of '<em>Household</em>'.
602 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
603 * @generated
604 */
605 public T caseHousehold(Household object) {
606 return null;
607 }
608
609 /**
610 * Returns the result of interpreting the object as an instance of '<em>Legal Union Record</em>'.
611 * <!-- begin-user-doc -->
612 * This implementation returns null;
613 * returning a non-null result will terminate the switch.
614 * <!-- end-user-doc -->
615 * @param object the target of the switch.
616 * @return the result of interpreting the object as an instance of '<em>Legal Union Record</em>'.
617 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
618 * @generated
619 */
620 public T caseLegal_Union_Record(Legal_Union_Record object) {
621 return null;
622 }
623
624 /**
625 * Returns the result of interpreting the object as an instance of '<em>Tax Property</em>'.
626 * <!-- begin-user-doc -->
627 * This implementation returns null;
628 * returning a non-null result will terminate the switch.
629 * <!-- end-user-doc -->
630 * @param object the target of the switch.
631 * @return the result of interpreting the object as an instance of '<em>Tax Property</em>'.
632 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
633 * @generated
634 */
635 public T caseTax_Property(Tax_Property object) {
636 return null;
637 }
638
639 /**
640 * Returns the result of interpreting the object as an instance of '<em>Tax Case</em>'.
641 * <!-- begin-user-doc -->
642 * This implementation returns null;
643 * returning a non-null result will terminate the switch.
644 * <!-- end-user-doc -->
645 * @param object the target of the switch.
646 * @return the result of interpreting the object as an instance of '<em>Tax Case</em>'.
647 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
648 * @generated
649 */
650 public T caseTax_Case(Tax_Case object) {
651 return null;
652 }
653
654 /**
655 * Returns the result of interpreting the object as an instance of '<em>From Agent</em>'.
656 * <!-- begin-user-doc -->
657 * This implementation returns null;
658 * returning a non-null result will terminate the switch.
659 * <!-- end-user-doc -->
660 * @param object the target of the switch.
661 * @return the result of interpreting the object as an instance of '<em>From Agent</em>'.
662 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
663 * @generated
664 */
665 public T caseFromAgent(FromAgent object) {
666 return null;
667 }
668
669 /**
670 * Returns the result of interpreting the object as an instance of '<em>Income</em>'.
671 * <!-- begin-user-doc -->
672 * This implementation returns null;
673 * returning a non-null result will terminate the switch.
674 * <!-- end-user-doc -->
675 * @param object the target of the switch.
676 * @return the result of interpreting the object as an instance of '<em>Income</em>'.
677 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
678 * @generated
679 */
680 public T caseIncome(Income object) {
681 return null;
682 }
683
684 /**
685 * Returns the result of interpreting the object as an instance of '<em>Income Type</em>'.
686 * <!-- begin-user-doc -->
687 * This implementation returns null;
688 * returning a non-null result will terminate the switch.
689 * <!-- end-user-doc -->
690 * @param object the target of the switch.
691 * @return the result of interpreting the object as an instance of '<em>Income Type</em>'.
692 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
693 * @generated
694 */
695 public T caseIncome_Type(Income_Type object) {
696 return null;
697 }
698
699 /**
700 * Returns the result of interpreting the object as an instance of '<em>Tax Card</em>'.
701 * <!-- begin-user-doc -->
702 * This implementation returns null;
703 * returning a non-null result will terminate the switch.
704 * <!-- end-user-doc -->
705 * @param object the target of the switch.
706 * @return the result of interpreting the object as an instance of '<em>Tax Card</em>'.
707 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
708 * @generated
709 */
710 public T caseTax_Card(Tax_Card object) {
711 return null;
712 }
713
714 /**
715 * Returns the result of interpreting the object as an instance of '<em>Income Tax Credit</em>'.
716 * <!-- begin-user-doc -->
717 * This implementation returns null;
718 * returning a non-null result will terminate the switch.
719 * <!-- end-user-doc -->
720 * @param object the target of the switch.
721 * @return the result of interpreting the object as an instance of '<em>Income Tax Credit</em>'.
722 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
723 * @generated
724 */
725 public T caseIncome_Tax_Credit(Income_Tax_Credit object) {
726 return null;
727 }
728
729 /**
730 * Returns the result of interpreting the object as an instance of '<em>Income Detail</em>'.
731 * <!-- begin-user-doc -->
732 * This implementation returns null;
733 * returning a non-null result will terminate the switch.
734 * <!-- end-user-doc -->
735 * @param object the target of the switch.
736 * @return the result of interpreting the object as an instance of '<em>Income Detail</em>'.
737 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
738 * @generated
739 */
740 public T caseIncome_Detail(Income_Detail object) {
741 return null;
742 }
743
744 /**
745 * Returns the result of interpreting the object as an instance of '<em>From Law</em>'.
746 * <!-- begin-user-doc -->
747 * This implementation returns null;
748 * returning a non-null result will terminate the switch.
749 * <!-- end-user-doc -->
750 * @param object the target of the switch.
751 * @return the result of interpreting the object as an instance of '<em>From Law</em>'.
752 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
753 * @generated
754 */
755 public T caseFromLaw(FromLaw object) {
756 return null;
757 }
758
759 /**
760 * Returns the result of interpreting the object as an instance of '<em>Fiscal Address</em>'.
761 * <!-- begin-user-doc -->
762 * This implementation returns null;
763 * returning a non-null result will terminate the switch.
764 * <!-- end-user-doc -->
765 * @param object the target of the switch.
766 * @return the result of interpreting the object as an instance of '<em>Fiscal Address</em>'.
767 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
768 * @generated
769 */
770 public T caseFiscal_Address(Fiscal_Address object) {
771 return null;
772 }
773
774 /**
775 * Returns the result of interpreting the object as an instance of '<em>Habitual Address</em>'.
776 * <!-- begin-user-doc -->
777 * This implementation returns null;
778 * returning a non-null result will terminate the switch.
779 * <!-- end-user-doc -->
780 * @param object the target of the switch.
781 * @return the result of interpreting the object as an instance of '<em>Habitual Address</em>'.
782 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
783 * @generated
784 */
785 public T caseHabitual_Address(Habitual_Address object) {
786 return null;
787 }
788
789 /**
790 * Returns the result of interpreting the object as an instance of '<em>Marriage Record</em>'.
791 * <!-- begin-user-doc -->
792 * This implementation returns null;
793 * returning a non-null result will terminate the switch.
794 * <!-- end-user-doc -->
795 * @param object the target of the switch.
796 * @return the result of interpreting the object as an instance of '<em>Marriage Record</em>'.
797 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
798 * @generated
799 */
800 public T caseMarriage_Record(Marriage_Record object) {
801 return null;
802 }
803
804 /**
805 * Returns the result of interpreting the object as an instance of '<em>Non Resident Tax Payer</em>'.
806 * <!-- begin-user-doc -->
807 * This implementation returns null;
808 * returning a non-null result will terminate the switch.
809 * <!-- end-user-doc -->
810 * @param object the target of the switch.
811 * @return the result of interpreting the object as an instance of '<em>Non Resident Tax Payer</em>'.
812 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
813 * @generated
814 */
815 public T caseNon_Resident_Tax_Payer(Non_Resident_Tax_Payer object) {
816 return null;
817 }
818
819 /**
820 * Returns the result of interpreting the object as an instance of '<em>Partnership Record</em>'.
821 * <!-- begin-user-doc -->
822 * This implementation returns null;
823 * returning a non-null result will terminate the switch.
824 * <!-- end-user-doc -->
825 * @param object the target of the switch.
826 * @return the result of interpreting the object as an instance of '<em>Partnership Record</em>'.
827 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
828 * @generated
829 */
830 public T casePartnership_Record(Partnership_Record object) {
831 return null;
832 }
833
834 /**
835 * Returns the result of interpreting the object as an instance of '<em>Resident Tax Payer</em>'.
836 * <!-- begin-user-doc -->
837 * This implementation returns null;
838 * returning a non-null result will terminate the switch.
839 * <!-- end-user-doc -->
840 * @param object the target of the switch.
841 * @return the result of interpreting the object as an instance of '<em>Resident Tax Payer</em>'.
842 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
843 * @generated
844 */
845 public T caseResident_Tax_Payer(Resident_Tax_Payer object) {
846 return null;
847 }
848
849 /**
850 * Returns the result of interpreting the object as an instance of '<em>Trade and Business Income</em>'.
851 * <!-- begin-user-doc -->
852 * This implementation returns null;
853 * returning a non-null result will terminate the switch.
854 * <!-- end-user-doc -->
855 * @param object the target of the switch.
856 * @return the result of interpreting the object as an instance of '<em>Trade and Business Income</em>'.
857 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
858 * @generated
859 */
860 public T caseTrade_and_Business_Income(Trade_and_Business_Income object) {
861 return null;
862 }
863
864 /**
865 * Returns the result of interpreting the object as an instance of '<em>Agriculture and Forestry Income</em>'.
866 * <!-- begin-user-doc -->
867 * This implementation returns null;
868 * returning a non-null result will terminate the switch.
869 * <!-- end-user-doc -->
870 * @param object the target of the switch.
871 * @return the result of interpreting the object as an instance of '<em>Agriculture and Forestry Income</em>'.
872 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
873 * @generated
874 */
875 public T caseAgriculture_and_Forestry_Income(Agriculture_and_Forestry_Income object) {
876 return null;
877 }
878
879 /**
880 * Returns the result of interpreting the object as an instance of '<em>Pensions and Annuities Income</em>'.
881 * <!-- begin-user-doc -->
882 * This implementation returns null;
883 * returning a non-null result will terminate the switch.
884 * <!-- end-user-doc -->
885 * @param object the target of the switch.
886 * @return the result of interpreting the object as an instance of '<em>Pensions and Annuities Income</em>'.
887 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
888 * @generated
889 */
890 public T casePensions_and_Annuities_Income(Pensions_and_Annuities_Income object) {
891 return null;
892 }
893
894 /**
895 * Returns the result of interpreting the object as an instance of '<em>Capital and Investments Income</em>'.
896 * <!-- begin-user-doc -->
897 * This implementation returns null;
898 * returning a non-null result will terminate the switch.
899 * <!-- end-user-doc -->
900 * @param object the target of the switch.
901 * @return the result of interpreting the object as an instance of '<em>Capital and Investments Income</em>'.
902 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
903 * @generated
904 */
905 public T caseCapital_and_Investments_Income(Capital_and_Investments_Income object) {
906 return null;
907 }
908
909 /**
910 * Returns the result of interpreting the object as an instance of '<em>Employment Income</em>'.
911 * <!-- begin-user-doc -->
912 * This implementation returns null;
913 * returning a non-null result will terminate the switch.
914 * <!-- end-user-doc -->
915 * @param object the target of the switch.
916 * @return the result of interpreting the object as an instance of '<em>Employment Income</em>'.
917 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
918 * @generated
919 */
920 public T caseEmployment_Income(Employment_Income object) {
921 return null;
922 }
923
924 /**
925 * Returns the result of interpreting the object as an instance of '<em>Rentals and Leases Income</em>'.
926 * <!-- begin-user-doc -->
927 * This implementation returns null;
928 * returning a non-null result will terminate the switch.
929 * <!-- end-user-doc -->
930 * @param object the target of the switch.
931 * @return the result of interpreting the object as an instance of '<em>Rentals and Leases Income</em>'.
932 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
933 * @generated
934 */
935 public T caseRentals_and_Leases_Income(Rentals_and_Leases_Income object) {
936 return null;
937 }
938
939 /**
940 * Returns the result of interpreting the object as an instance of '<em>Foreign Income</em>'.
941 * <!-- begin-user-doc -->
942 * This implementation returns null;
943 * returning a non-null result will terminate the switch.
944 * <!-- end-user-doc -->
945 * @param object the target of the switch.
946 * @return the result of interpreting the object as an instance of '<em>Foreign Income</em>'.
947 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
948 * @generated
949 */
950 public T caseForeign_Income(Foreign_Income object) {
951 return null;
952 }
953
954 /**
955 * Returns the result of interpreting the object as an instance of '<em>Local Income</em>'.
956 * <!-- begin-user-doc -->
957 * This implementation returns null;
958 * returning a non-null result will terminate the switch.
959 * <!-- end-user-doc -->
960 * @param object the target of the switch.
961 * @return the result of interpreting the object as an instance of '<em>Local Income</em>'.
962 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
963 * @generated
964 */
965 public T caseLocal_Income(Local_Income object) {
966 return null;
967 }
968
969 /**
970 * Returns the result of interpreting the object as an instance of '<em>CIM</em>'.
971 * <!-- begin-user-doc -->
972 * This implementation returns null;
973 * returning a non-null result will terminate the switch.
974 * <!-- end-user-doc -->
975 * @param object the target of the switch.
976 * @return the result of interpreting the object as an instance of '<em>CIM</em>'.
977 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
978 * @generated
979 */
980 public T caseCIM(CIM object) {
981 return null;
982 }
983
984 /**
985 * Returns the result of interpreting the object as an instance of '<em>CIP</em>'.
986 * <!-- begin-user-doc -->
987 * This implementation returns null;
988 * returning a non-null result will terminate the switch.
989 * <!-- end-user-doc -->
990 * @param object the target of the switch.
991 * @return the result of interpreting the object as an instance of '<em>CIP</em>'.
992 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
993 * @generated
994 */
995 public T caseCIP(CIP object) {
996 return null;
997 }
998
999 /**
1000 * Returns the result of interpreting the object as an instance of '<em>CIS</em>'.
1001 * <!-- begin-user-doc -->
1002 * This implementation returns null;
1003 * returning a non-null result will terminate the switch.
1004 * <!-- end-user-doc -->
1005 * @param object the target of the switch.
1006 * @return the result of interpreting the object as an instance of '<em>CIS</em>'.
1007 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1008 * @generated
1009 */
1010 public T caseCIS(CIS object) {
1011 return null;
1012 }
1013
1014 /**
1015 * Returns the result of interpreting the object as an instance of '<em>FD</em>'.
1016 * <!-- begin-user-doc -->
1017 * This implementation returns null;
1018 * returning a non-null result will terminate the switch.
1019 * <!-- end-user-doc -->
1020 * @param object the target of the switch.
1021 * @return the result of interpreting the object as an instance of '<em>FD</em>'.
1022 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1023 * @generated
1024 */
1025 public T caseFD(FD object) {
1026 return null;
1027 }
1028
1029 /**
1030 * Returns the result of interpreting the object as an instance of '<em>Professional Expenses Deduction</em>'.
1031 * <!-- begin-user-doc -->
1032 * This implementation returns null;
1033 * returning a non-null result will terminate the switch.
1034 * <!-- end-user-doc -->
1035 * @param object the target of the switch.
1036 * @return the result of interpreting the object as an instance of '<em>Professional Expenses Deduction</em>'.
1037 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1038 * @generated
1039 */
1040 public T caseProfessional_Expenses_Deduction(Professional_Expenses_Deduction object) {
1041 return null;
1042 }
1043
1044 /**
1045 * Returns the result of interpreting the object as an instance of '<em>FO</em>'.
1046 * <!-- begin-user-doc -->
1047 * This implementation returns null;
1048 * returning a non-null result will terminate the switch.
1049 * <!-- end-user-doc -->
1050 * @param object the target of the switch.
1051 * @return the result of interpreting the object as an instance of '<em>FO</em>'.
1052 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1053 * @generated
1054 */
1055 public T caseFO(FO object) {
1056 return null;
1057 }
1058
1059 /**
1060 * Returns the result of interpreting the object as an instance of '<em>DS for Permanent Expense</em>'.
1061 * <!-- begin-user-doc -->
1062 * This implementation returns null;
1063 * returning a non-null result will terminate the switch.
1064 * <!-- end-user-doc -->
1065 * @param object the target of the switch.
1066 * @return the result of interpreting the object as an instance of '<em>DS for Permanent Expense</em>'.
1067 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1068 * @generated
1069 */
1070 public T caseDS_for_Permanent_Expense(DS_for_Permanent_Expense object) {
1071 return null;
1072 }
1073
1074 /**
1075 * Returns the result of interpreting the object as an instance of '<em>DS</em>'.
1076 * <!-- begin-user-doc -->
1077 * This implementation returns null;
1078 * returning a non-null result will terminate the switch.
1079 * <!-- end-user-doc -->
1080 * @param object the target of the switch.
1081 * @return the result of interpreting the object as an instance of '<em>DS</em>'.
1082 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1083 * @generated
1084 */
1085 public T caseDS(DS object) {
1086 return null;
1087 }
1088
1089 /**
1090 * Returns the result of interpreting the object as an instance of '<em>DS for Interest Expense</em>'.
1091 * <!-- begin-user-doc -->
1092 * This implementation returns null;
1093 * returning a non-null result will terminate the switch.
1094 * <!-- end-user-doc -->
1095 * @param object the target of the switch.
1096 * @return the result of interpreting the object as an instance of '<em>DS for Interest Expense</em>'.
1097 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1098 * @generated
1099 */
1100 public T caseDS_for_Interest_Expense(DS_for_Interest_Expense object) {
1101 return null;
1102 }
1103
1104 /**
1105 * Returns the result of interpreting the object as an instance of '<em>DS for Health and Pension Insurance</em>'.
1106 * <!-- begin-user-doc -->
1107 * This implementation returns null;
1108 * returning a non-null result will terminate the switch.
1109 * <!-- end-user-doc -->
1110 * @param object the target of the switch.
1111 * @return the result of interpreting the object as an instance of '<em>DS for Health and Pension Insurance</em>'.
1112 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1113 * @generated
1114 */
1115 public T caseDS_for_Health_and_Pension_Insurance(DS_for_Health_and_Pension_Insurance object) {
1116 return null;
1117 }
1118
1119 /**
1120 * Returns the result of interpreting the object as an instance of '<em>DS for Private Insurance and Plan</em>'.
1121 * <!-- begin-user-doc -->
1122 * This implementation returns null;
1123 * returning a non-null result will terminate the switch.
1124 * <!-- end-user-doc -->
1125 * @param object the target of the switch.
1126 * @return the result of interpreting the object as an instance of '<em>DS for Private Insurance and Plan</em>'.
1127 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1128 * @generated
1129 */
1130 public T caseDS_for_Private_Insurance_and_Plan(DS_for_Private_Insurance_and_Plan object) {
1131 return null;
1132 }
1133
1134 /**
1135 * Returns the result of interpreting the object as an instance of '<em>DS for Loss Carryforward</em>'.
1136 * <!-- begin-user-doc -->
1137 * This implementation returns null;
1138 * returning a non-null result will terminate the switch.
1139 * <!-- end-user-doc -->
1140 * @param object the target of the switch.
1141 * @return the result of interpreting the object as an instance of '<em>DS for Loss Carryforward</em>'.
1142 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1143 * @generated
1144 */
1145 public T caseDS_for_Loss_Carryforward(DS_for_Loss_Carryforward object) {
1146 return null;
1147 }
1148
1149 /**
1150 * Returns the result of interpreting the object as an instance of '<em>DS for Donation</em>'.
1151 * <!-- begin-user-doc -->
1152 * This implementation returns null;
1153 * returning a non-null result will terminate the switch.
1154 * <!-- end-user-doc -->
1155 * @param object the target of the switch.
1156 * @return the result of interpreting the object as an instance of '<em>DS for Donation</em>'.
1157 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1158 * @generated
1159 */
1160 public T caseDS_for_Donation(DS_for_Donation object) {
1161 return null;
1162 }
1163
1164 /**
1165 * Returns the result of interpreting the object as an instance of '<em>Permanent Expense</em>'.
1166 * <!-- begin-user-doc -->
1167 * This implementation returns null;
1168 * returning a non-null result will terminate the switch.
1169 * <!-- end-user-doc -->
1170 * @param object the target of the switch.
1171 * @return the result of interpreting the object as an instance of '<em>Permanent Expense</em>'.
1172 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1173 * @generated
1174 */
1175 public T casePermanent_Expense(Permanent_Expense object) {
1176 return null;
1177 }
1178
1179 /**
1180 * Returns the result of interpreting the object as an instance of '<em>Special Expense DS</em>'.
1181 * <!-- begin-user-doc -->
1182 * This implementation returns null;
1183 * returning a non-null result will terminate the switch.
1184 * <!-- end-user-doc -->
1185 * @param object the target of the switch.
1186 * @return the result of interpreting the object as an instance of '<em>Special Expense DS</em>'.
1187 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1188 * @generated
1189 */
1190 public T caseSpecial_Expense_DS(Special_Expense_DS object) {
1191 return null;
1192 }
1193
1194 /**
1195 * Returns the result of interpreting the object as an instance of '<em>Interest Expense</em>'.
1196 * <!-- begin-user-doc -->
1197 * This implementation returns null;
1198 * returning a non-null result will terminate the switch.
1199 * <!-- end-user-doc -->
1200 * @param object the target of the switch.
1201 * @return the result of interpreting the object as an instance of '<em>Interest Expense</em>'.
1202 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1203 * @generated
1204 */
1205 public T caseInterest_Expense(Interest_Expense object) {
1206 return null;
1207 }
1208
1209 /**
1210 * Returns the result of interpreting the object as an instance of '<em>Private Insurance and Plan</em>'.
1211 * <!-- begin-user-doc -->
1212 * This implementation returns null;
1213 * returning a non-null result will terminate the switch.
1214 * <!-- end-user-doc -->
1215 * @param object the target of the switch.
1216 * @return the result of interpreting the object as an instance of '<em>Private Insurance and Plan</em>'.
1217 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1218 * @generated
1219 */
1220 public T casePrivate_Insurance_and_Plan(Private_Insurance_and_Plan object) {
1221 return null;
1222 }
1223
1224 /**
1225 * Returns the result of interpreting the object as an instance of '<em>Health and Pension Insurance</em>'.
1226 * <!-- begin-user-doc -->
1227 * This implementation returns null;
1228 * returning a non-null result will terminate the switch.
1229 * <!-- end-user-doc -->
1230 * @param object the target of the switch.
1231 * @return the result of interpreting the object as an instance of '<em>Health and Pension Insurance</em>'.
1232 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1233 * @generated
1234 */
1235 public T caseHealth_and_Pension_Insurance(Health_and_Pension_Insurance object) {
1236 return null;
1237 }
1238
1239 /**
1240 * Returns the result of interpreting the object as an instance of '<em>Donation</em>'.
1241 * <!-- begin-user-doc -->
1242 * This implementation returns null;
1243 * returning a non-null result will terminate the switch.
1244 * <!-- end-user-doc -->
1245 * @param object the target of the switch.
1246 * @return the result of interpreting the object as an instance of '<em>Donation</em>'.
1247 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1248 * @generated
1249 */
1250 public T caseDonation(Donation object) {
1251 return null;
1252 }
1253
1254 /**
1255 * Returns the result of interpreting the object as an instance of '<em>Loss Carryforward</em>'.
1256 * <!-- begin-user-doc -->
1257 * This implementation returns null;
1258 * returning a non-null result will terminate the switch.
1259 * <!-- end-user-doc -->
1260 * @param object the target of the switch.
1261 * @return the result of interpreting the object as an instance of '<em>Loss Carryforward</em>'.
1262 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1263 * @generated
1264 */
1265 public T caseLoss_Carryforward(Loss_Carryforward object) {
1266 return null;
1267 }
1268
1269 /**
1270 * Returns the result of interpreting the object as an instance of '<em>Spousal Expense AC</em>'.
1271 * <!-- begin-user-doc -->
1272 * This implementation returns null;
1273 * returning a non-null result will terminate the switch.
1274 * <!-- end-user-doc -->
1275 * @param object the target of the switch.
1276 * @return the result of interpreting the object as an instance of '<em>Spousal Expense AC</em>'.
1277 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1278 * @generated
1279 */
1280 public T caseSpousal_Expense_AC(Spousal_Expense_AC object) {
1281 return null;
1282 }
1283
1284 /**
1285 * Returns the result of interpreting the object as an instance of '<em>Extraordinary Expense CE</em>'.
1286 * <!-- begin-user-doc -->
1287 * This implementation returns null;
1288 * returning a non-null result will terminate the switch.
1289 * <!-- end-user-doc -->
1290 * @param object the target of the switch.
1291 * @return the result of interpreting the object as an instance of '<em>Extraordinary Expense CE</em>'.
1292 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1293 * @generated
1294 */
1295 public T caseExtraordinary_Expense_CE(Extraordinary_Expense_CE object) {
1296 return null;
1297 }
1298
1299 /**
1300 * Returns the result of interpreting the object as an instance of '<em>Travel Expense FD</em>'.
1301 * <!-- begin-user-doc -->
1302 * This implementation returns null;
1303 * returning a non-null result will terminate the switch.
1304 * <!-- end-user-doc -->
1305 * @param object the target of the switch.
1306 * @return the result of interpreting the object as an instance of '<em>Travel Expense FD</em>'.
1307 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1308 * @generated
1309 */
1310 public T caseTravel_Expense_FD(Travel_Expense_FD object) {
1311 return null;
1312 }
1313
1314 /**
1315 * Returns the result of interpreting the object as an instance of '<em>Professional Expense</em>'.
1316 * <!-- begin-user-doc -->
1317 * This implementation returns null;
1318 * returning a non-null result will terminate the switch.
1319 * <!-- end-user-doc -->
1320 * @param object the target of the switch.
1321 * @return the result of interpreting the object as an instance of '<em>Professional Expense</em>'.
1322 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1323 * @generated
1324 */
1325 public T caseProfessional_Expense(Professional_Expense object) {
1326 return null;
1327 }
1328
1329 /**
1330 * Returns the result of interpreting the object as an instance of '<em>Miscellaneous Expense FO</em>'.
1331 * <!-- begin-user-doc -->
1332 * This implementation returns null;
1333 * returning a non-null result will terminate the switch.
1334 * <!-- end-user-doc -->
1335 * @param object the target of the switch.
1336 * @return the result of interpreting the object as an instance of '<em>Miscellaneous Expense FO</em>'.
1337 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
1338 * @generated
1339 */
1340 public T caseMiscellaneous_Expense_FO(Miscellaneous_Expense_FO object) {
1341 return null;
1342 }
1343
1344 /**
1345 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
1346 * <!-- begin-user-doc -->
1347 * This implementation returns null;
1348 * returning a non-null result will terminate the switch, but this is the last case anyway.
1349 * <!-- end-user-doc -->
1350 * @param object the target of the switch.
1351 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
1352 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
1353 * @generated
1354 */
1355 @Override
1356 public T defaultCase(EObject object) {
1357 return null;
1358 }
1359
1360} //TaxationSwitch
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project
new file mode 100644
index 00000000..35f74f1f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.project
@@ -0,0 +1,33 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>original.PLEDGE.case.studies</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.ocl.pivot.ui.oclbuilder</name>
10 <arguments>
11 <dictionary>
12 <key>disabledExtensions</key>
13 <value>*,essentialocl</value>
14 </dictionary>
15 <dictionary>
16 <key>disabledPaths</key>
17 <value>bin/**,target/**</value>
18 </dictionary>
19 <dictionary>
20 <key>enabledExtensions</key>
21 <value>ecore,ocl,oclinecore,oclstdlib,uml</value>
22 </dictionary>
23 <dictionary>
24 <key>enabledPaths</key>
25 <value>**</value>
26 </dictionary>
27 </arguments>
28 </buildCommand>
29 </buildSpec>
30 <natures>
31 <nature>org.eclipse.ocl.pivot.ui.oclnature</nature>
32 </natures>
33</projectDescription>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.resources.prefs b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..99f26c02
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
1eclipse.preferences.version=1
2encoding/<project>=UTF-8
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.runtime.prefs b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000..5a0ad22d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
1eclipse.preferences.version=1
2line.separator=\n
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseA_1.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseA_1.ocl
new file mode 100644
index 00000000..0dd083b5
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseA_1.ocl
@@ -0,0 +1,281 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/original.PLEDGE.case.studies/model/CD_Case_A.uml'
2--e.g., import 'file:/Users/User_X/CD_Case_A.uml'
3
4package Taxation
5
6
7context External_Allowance inv inv1:
8let currentYear: Integer = 2018 in
9let origin: Physical_Person = self.reciver in
10let union:Legal_Union_Record=origin.getLegalUnionRecord(currentYear) in
11let house: Household = if(not union.oclIsUndefined()) then union.household else invalid endif in
12let children:Set(Dependent)= house.children->select(d:Dependent| d.allowances->select(ext| ext.reciver=origin)->size()>0) in
13let eligible_children:Set(Dependent) = children->select( birth_year >=currentYear - 6) in
14let is_disabled:Boolean = self.person.disability_type<>Disability_Types::NONE and self.person.disability_percentage>0.5 in
15let age5:Integer = currentYear - self.person.birth_year in
16let base:Real = if(age5>6 and eligible_children->size()<=1) then 185.60 else if(age5>6 and eligible_children->size()=2) then 220.36 else if(age5>6 and eligible_children->size()=2) then 267.59 else 361.83 endif endif endif in
17
18if(age5<=6) then self.amount = 580
19else
20if(age5>=6 and age5<=11)then
21self.amount = ((base.toString().toReal() + 16.17).round())
22 else
23 self.amount = base.round()
24 endif endif
25
26context Tax_Card inv inv2:
27let classe: Tax_Class_Category = self.income.taxPayer.getTaxClass(2018) in
28let amount:Real = self.income.income_per_year() in
29
30if(income.income_type.oclIsTypeOf(Employment_Income)) then
31let a:Real = if(classe=Tax_Class_Category::One_A) then self.income.taxPayer.from_law.get_A_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then self.income.taxPayer.from_law.get_A_for_salary_class_2(amount) else self.income.taxPayer.from_law.get_A_for_salary_class_1(amount) endif endif in
32let b:Real = if(classe=Tax_Class_Category::One_A) then self.income.taxPayer.from_law.get_B_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then self.income.taxPayer.from_law.get_B_for_salary_class_2(amount) else self.income.taxPayer.from_law.get_B_for_salary_class_1(amount) endif endif in
33 let res:Real = self.income.taxPayer.from_law.round_ten_cent(a * amount - b) in
34 let max:Real = if(classe=Tax_Class_Category::Two) then 25085 else 12585 endif in
35
36 if(amount<max) then
37 let final_res:Real= self.income.taxPayer.from_law.round_ten_cent(res*1.07) in
38 self.income.taxPayer.taxesDue = final_res.max(100000)
39 else
40 let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in
41 let final_res:Real= self.income.taxPayer.from_law.round_ten_cent(res + (res*0.09-adjustement)) in
42 self.income.taxPayer.taxesDue = final_res.max(100000)
43 endif
44
45else
46if(income.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
47let a:Real = if(classe=Tax_Class_Category::One_A) then self.income.taxPayer.from_law.get_A_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then self.income.taxPayer.from_law.get_A_for_pension_class_2(amount) else self.income.taxPayer.from_law.get_A_for_pension_class_1(amount) endif endif in
48let b:Real = if(classe=Tax_Class_Category::One_A) then self.income.taxPayer.from_law.get_B_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then self.income.taxPayer.from_law.get_B_for_pension_class_2(amount) else self.income.taxPayer.from_law.get_B_for_pension_class_1(amount) endif endif in
49 let res:Real = self.income.taxPayer.from_law.round_ten_cent(a * amount - b) in
50 let max:Real = if(classe=Tax_Class_Category::Two) then 25065 else 12565 endif in
51
52 if(amount<max) then
53 let final_res:Real= self.income.taxPayer.from_law.round_ten_cent(res*1.07) in
54 self.income.taxPayer.taxesDue = final_res.max(100000)
55 else
56 let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in
57 let final_res:Real= self.income.taxPayer.from_law.round_ten_cent(res + (res*0.09-adjustement)) in
58 self.income.taxPayer.taxesDue = final_res.max(100000)
59 endif
60else
61self.income.taxPayer.taxesDue = -1
62endif
63endif
64
65
66context Dependent inv inv3:
67if((self.getAge(2018) <=21) or (self.continued_studies = true)) then
68self.allowances->size()=1
69else
70self.allowances->size()=0
71endif
72
73context Income inv inv5:
74if(not self.income_type.oclIsTypeOf(Employment_Income)) then
75self.details->forAll(d|d.worked_days = 0)
76else
77self.details->forAll(d|d.worked_days >= 1 and d.worked_days<=25)
78endif
79
80context Tax_Payer inv inv6:
81let val:Integer = self.getAge(2018) - 16 in
82self.dependents->forAll( d:Dependent| d.getAge(2018) > val)
83
84context Income inv inv7:
85let val:Real =self.details->asOrderedSet()->first().distance in
86self.details->forAll(d: Income_Detail|d.distance = val)
87
88--context Income inv user_complete_details:
89--self.details->forAll(d: Income_Detail|d.month = self.details->asOrderedSet()->indexOf(d))
90
91context Income inv inv8:
92if(not self.income_type.oclIsTypeOf(Employment_Income)) then
93self.details->forAll(d| d.distance = 0)
94else
95self.details->forAll(d| d.distance >= 0.0 and d.distance <= 100)
96endif
97
98--context Income inv inv9:
99--if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then
100--self.details->forAll(d| not d.is_contributing_pension)
101--else
102--self.details->forAll(d| d.is_contributing_pension)
103--endif
104
105context Income inv inv10:
106let val:Real =self.details->asOrderedSet()->first().amount in
107self.details->forAll(d: Income_Detail|d.amount = val)
108
109
110
111context Expense inv inv11:
112let max:Real = if((self.income.income_amount / 2)>50) then self.income.income_amount / 2 else 50 endif in
113self.declared_amount >= 50 and self.declared_amount <= max
114
115context Tax_Payer inv inv12:
116 self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country<>Country::ZZ) and
117 self.incomes->exists(inc | inc.oclIsTypeOf(Local_Income) = true)
118 implies
119 self.oclIsTypeOf(Non_Resident_Tax_Payer)
120
121context Tax_Payer inv inv13:
122 self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country=Country::ZZ)
123implies
124 self.oclIsTypeOf(Resident_Tax_Payer)
125
126--context Tax_Payer inv inv14:
127--self.dependents->size() >= 0 and self.dependents->size()<= 6
128
129context External_Allowance inv inv15:
130let child:Dependent = self.person in
131let h:Household = Household.allInstances()->select(children->includes(child))->asOrderedSet()->first() in
132let t1:Set(Physical_Person) = Set{h.parents.individual_A,h.parents.individual_B}->select(oclIsKindOf(Tax_Payer)) in
133if(t1->size()=1) then
134self.reciver = t1->asOrderedSet()->first()
135else
136self.reciver = t1->asOrderedSet()->at(2) or self.reciver = t1->asOrderedSet()->at(1)
137endif
138
139context Tax_Card inv inv16:
140if(self.income.taxPayer.incomes->size()=1) then
141self.tax_card_type=Tax_Card_Type::Principal
142else
143let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in
144let bigest_income:Income= all_incomes->first() in
145if(bigest_income=self.income) then
146self.tax_card_type=Tax_Card_Type::Principal
147else
148self.tax_card_type=Tax_Card_Type::Additional
149endif
150endif
151
152
153context Legal_Union_Record inv inv17:
154self.start_year <=2018 and self.start_year >=1950
155
156
157--context Household inv inv18:
158--not self.parents.oclIsUndefined()
159
160--context Legal_Union_Record inv inv19:
161--not self.household.oclIsUndefined()
162
163context Legal_Union_Record inv inv20:
164self.individual_B <> self.individual_A
165and
166not self.individual_A.oclIsUndefined()
167and
168not self.individual_B.oclIsUndefined()
169
170--context Legal_Union_Record inv inv21:
171--self.properties->size() >= 1
172
173--context Tax_Payer inv inv22:
174--self.incomes->size() >= 1
175
176--context Tax_Payer inv inv23:
177--not self.from_law.oclIsUndefined()
178
179--context Tax_Payer inv inv24:
180--not self.from_agent.oclIsUndefined()
181
182--context Income inv inv25:
183--not self.income_type.oclIsUndefined()
184
185--context Income inv inv26:
186--self.details->size() = 12
187
188
189--context Tax_Payer inv inv27:
190--not self.from_agent.oclIsUndefined()
191
192
193--context Tax_Payer inv inv28:
194--not self.from_law.oclIsUndefined()
195
196--context Legal_Union_Record inv inv29:
197--self.properties->size()=1
198
199--context Tax_Payer inv inv30:
200--self.AEP_deduction = 0
201
202--context Physical_Person inv inv31:
203--self.last_start_year_widower = -1
204
205--context Physical_Person inv inv32:
206--self.name = 'Not important'
207
208context Physical_Person inv inv33:
209self.getAge(2018) >= 0 and self.getAge(2018) <= 100
210
211context Physical_Person inv inv34:
212self.birth_month >= 1 and self.birth_month <= 12
213
214context Physical_Person inv inv35:
215self.birth_day >= 1 and self.birth_day <= 28
216
217--context FromAgent inv inv36:
218--self.taxation_year = 2018
219
220--context Income inv inv37:
221--self.year = 2018
222
223--context Income inv inv38:
224--self.start_year = 2018
225
226--context Tax_Card inv inv39:
227--self.deduction_FD_yearly = 0
228
229--context Tax_Card inv inv40:
230--self.credit_CIS_yearly = 0
231
232--context Tax_Card inv inv40:
233--self.credit_CIS_monthly = 0
234
235--context Tax_Card inv inv41:
236--self.credit_CIP_yearly = 0
237
238--context Tax_Card inv inv42:
239--self.credit_CIP_monthly = 0
240
241--context Tax_Card inv inv43:
242--self.deduction_CE_invalidity_yearly = 0
243
244--context Tax_Card inv inv44:
245--self.deduction_DS_Debt_yearly = 0
246
247
248--context Expense inv inv45:
249--self.year_expense_was_incurred_in = 2018
250
251--context Tax_Property inv inv46:
252--self.taxed_jointly = true
253
254context Legal_Union_Record inv inv47:
255(self.separation_cause=Separation_Causes::NONE and self.end_year = -1)
256or(self.end_year>self.start_year)
257
258
259context Physical_Person inv inv48:
260(self.disability_type = Disability_Types::NONE and self.disability_percentage = 0) or
261(self.disability_type <> Disability_Types::NONE and self.disability_percentage > 0 and self.disability_percentage <= 1)
262
263context Legal_Union_Record inv inv49:
264self.individual_A.oclIsKindOf(Tax_Payer) and
265self.individual_B.oclIsKindOf(Physical_Person) and
266not self.individual_B.oclIsTypeOf(Dependent) and
267self.individual_A <> self.individual_B
268
269--context Income inv inv50:
270--not self.income_type.oclIsUndefined()
271
272--context Income inv inv51:
273--not self.taxPayer.oclIsUndefined()
274
275--context Tax_Card inv inv52:
276--not self.income.oclIsUndefined()
277
278--context Legal_Union_Record inv inv53:
279--not self.household.oclIsUndefined()
280
281endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseB_1.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseB_1.ocl
new file mode 100644
index 00000000..e81c675f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseB_1.ocl
@@ -0,0 +1,144 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/original.PLEDGE.case.studies/model/CD_Case_B.uml'
2--e.g., import 'file:/Users/User_X/CD_Case_B.uml'
3
4package DomainModel
5
6 context BodySenseSystem inv: Set{self.itsTimer}->size()>=1
7
8 context BodySenseSystem inv: Set{self.itsNVM}->size()>=1
9
10 context BodySenseSystem inv: Set{self.itsWatchdog}->size()>=1
11
12 context BodySenseSystem inv: Set{self.itsTemperatureSensor}->size()>=1
13
14 context BodySenseSystem inv: Set{self.itsPreviousOccupancyStatus}->size()>=1
15
16 context BodySenseSystem inv: Set{self.itsALU}->size()>=1
17
18 context BodySenseSystem inv: Set{self.itsOccupancyStatus}->size()>=1
19
20 context BodySenseSystem inv: Set{self.itsBodySenseElectronics}->size()>=1
21
22 context BodySenseSystem inv: Set{self.itsROM}->size()>=1
23
24 context BodySenseSystem inv: Set{self.itsMeasurementValue}->size()>=1
25
26 context BodySenseSystem inv: Set{self.itsRAM}->size()>=1
27
28 context BodySenseSystem inv: Set{self.itsIgnitionResetButton}->size()>=1
29
30 context BodySenseSystem inv: Set{self.itsSFR}->size()>=1
31
32 context BodySenseSystem inv: Set{self.itsBodySenseSensor}->size()>=1
33
34 context BodySenseSystem inv: Set{self.itsVoltageSensor}->size()>=1
35
36 context BodySenseSystem inv: Set{self.itsDefaultCalibrationData}->size()>=1
37
38 context BodySenseSystem inv: Set{self.itsAirbagControlUnit}->size()>=1
39
40 context BodySenseSystem inv: BodySenseSystem.allInstances()->forAll(b|b.itsOccupancyStatus.OccupantClassForAirbagControl = OccupantClassAirbag::Init)
41
42 context BodySenseSystem inv: BodySenseSystem.allInstances()->forAll(b|b.itsOccupancyStatus.OccupantClassForSeatBeltReminder = OccupantClassSbr::Init)
43
44 context BodySenseSystem inv: BodySenseSystem.allInstances()->forAll(b|b.discardFlag = true)
45
46 context NVM inv: Set{self.itsCalibrationData}->size()>=1
47
48 context Thermistor inv: Set{self.itsTemperatureSensor}->size()>=1
49
50 context OccupancyStatus inv: Set{self.itsAirbagControlUnit}->size()>=1
51
52 context AirbagControlUnit inv: Set{self.itsOccupancyStatus}->size()>=1
53
54 context TemperatureSensor inv: self.itsThermistor->size() = 2
55
56 context RAM inv RAMIsValid: RAM.allInstances()->forAll(r|r.isValid = true)
57
58 context SFR inv SFRIsValid: SFR.allInstances()->forAll(s|s.isValid = true)
59
60 context ALU inv ALUIsValid: ALU.allInstances()->forAll(a|a.isValid = true)
61
62 context ROM inv ROMIsValid: ROM.allInstances()->forAll(r|r.isValid = true)
63
64 context Error inv e1: Error.allInstances()->select(e|e.oclIsTypeOf(SeatHeaterCircuitIntegrityError))->forAll(e| e.qualificationCounter = 0)
65
66 context Error inv e2: Error.allInstances()->select(e|(not e.oclIsKindOf(CommunicationError)) and (not e.oclIsKindOf(VoltageError)))->forAll(r| r.isQualified = false)
67
68 context Error inv e6: Error.allInstances()->select(e|e.oclIsKindOf(VoltageError))->forAll(v|v.isQualified = true)
69
70 context Error inv e7: Error.allInstances()->select(e|e.oclIsKindOf(VoltageError))->forAll(v|v.isDetected = false)
71
72 context Error inv e8: Error.allInstances()->select(e|e.oclIsTypeOf(TemperatureRangeLimitError))->forAll(e|e.isDetected = true)
73
74 context Error inv e9: Error.allInstances()->select(e|e.oclIsTypeOf(NVMAccessError))->forAll(e|e.isDetected = true)
75
76 context Error inv e10: Error.allInstances()->select(e|e.oclIsTypeOf(VoltageHighError))->forAll(e|e.isDetected = true)
77
78 context Error inv e11: Error.allInstances()->select(e|e.oclIsTypeOf(DiscardError))->forAll(e|e.isDetected = true)
79
80 context Error inv e12: Error.allInstances()->select(e|e.oclIsTypeOf(MeasurementRangeError))->forAll(e|e.isDetected = true)
81
82 context Error inv e13: Error.allInstances()->select(e|e.oclIsTypeOf(CableShieldIntegrityError))->forAll(e|e.isDetected = true)
83
84 context Error inv e14: Error.allInstances()->select(e|e.oclIsTypeOf(CalibrationNotLearnedError))->forAll(e|e.isDetected = true)
85
86 context Error inv e15: Error.allInstances()->select(e|e.oclIsTypeOf(BuildCheckFailedError))->forAll(e|e.isDetected = true)
87
88 context Error inv e16: Error.allInstances()->select(e|e.oclIsTypeOf(SFRError))->forAll(e|e.isDetected = true)
89
90 context Error inv e17: Error.allInstances()->select(e|e.oclIsTypeOf(MeasurementSensePathError))->forAll(e|e.isDetected = true)
91
92 context Error inv e18: Error.allInstances()->select(e|e.oclIsTypeOf(ROMError))->forAll(e|e.isDetected = true)
93
94 context Error inv e19: Error.allInstances()->select(e|e.oclIsTypeOf(BuildCheckNotRunError))->forAll(e|e.isDetected = true)
95
96 context Error inv e20: Error.allInstances()->select(e|e.oclIsTypeOf(SeatFrameConnectionError))->forAll(e|e.isDetected = true)
97
98 context Error inv e21: Error.allInstances()->select(e|e.oclIsTypeOf(TemperatureSensorError))->forAll(e|e.isDetected = true)
99
100 context Error inv e22: Error.allInstances()->select(e|e.oclIsTypeOf(TemperatureRangeError))->forAll(e|e.isDetected = true)
101
102 context Error inv e23: Error.allInstances()->select(e|e.oclIsTypeOf(NVMCRCError))->forAll(e|e.isDetected = true)
103
104 context Error inv e24: Error.allInstances()->select(e|e.oclIsTypeOf(WatchdogError))->forAll(e|e.isDetected = true)
105
106 context Error inv e25: Error.allInstances()->select(e|e.oclIsTypeOf(VoltageLowError))->forAll(e|e.isDetected = true)
107
108 context Error inv e26: Error.allInstances()->select(e|e.oclIsTypeOf(SeatHeaterCircuitIntegrityError))->forAll(e|e.isDetected = true)
109
110 context Error inv e27: Error.allInstances()->select(e|e.oclIsTypeOf(ShortSenseUbatGndError))->forAll(e|e.isDetected = true)
111
112 context Error inv e28: Error.allInstances()->select(e|e.oclIsTypeOf(InternalMeasurementPathError))->forAll(e|e.isDetected = true)
113
114 context Error inv e29: Error.allInstances()->select(e|e.oclIsTypeOf(RAMError))->forAll(e|e.isDetected = true)
115
116 context Error inv e30: Error.allInstances()->select(e|e.oclIsTypeOf(ALUError))->forAll(e|e.isDetected = true)
117
118 context Error inv e31: Error.allInstances()->select(e|e.oclIsTypeOf(CalibrationDataError))->forAll(e|e.isDetected = true)
119
120 context Error inv e32: Error.allInstances()->select(e|e.oclIsTypeOf(MeasurementRangeError))->forAll(e|e.isDetected = true)
121
122 context Error inv e33: Error.allInstances()->select(e|e.oclIsTypeOf(VoltageHighError))->forAll(e|e.isDetected = false)
123
124 context Error inv e34: Error.allInstances()->select(e|e.oclIsTypeOf(VoltageLowError))->forAll(e|e.isDetected = false)
125
126 context Error inv e35: Error.allInstances()->select(e|e.oclIsKindOf(InternalMeasurementDeviceError))->forAll(e|e.isDetected = false)
127
128 context Error inv e36: Error.allInstances()->select(e|e.oclIsKindOf(ExternalMeasurementDeviceError))->forAll(e|e.isDetected = false)
129
130 context Error inv e37: Error.allInstances()->select(e|e.oclIsKindOf(TemperatureError))->forAll(e|e.isDetected = false)
131
132 context Error inv e38: Error.allInstances()->select(e|e.oclIsTypeOf(RAMError) or e.oclIsTypeOf(SFRError) or e.oclIsTypeOf(ALUError) or e.oclIsTypeOf(ROMError))->forAll(e|e.isDetected = false)
133
134 context Error inv e39: Error.allInstances()->select(e|e.oclIsTypeOf(SeatHeaterCircuitIntegrityError))->forAll(e|e.isQualified = true)
135
136 context Error inv e40: Error.allInstances()->select(e|e.oclIsTypeOf(DiscardError))->forAll(e|e.isQualified = true)
137
138 context Error inv e41: Error.allInstances()->select(e|e.oclIsTypeOf(VoltageLowError))->forAll(e|e.isQualified = true)
139
140 context Error inv e43: Error.allInstances()->select(e|e.oclIsTypeOf(VoltageHighError))->forAll(e|e.isQualified = true)
141
142
143
144endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseC_1.ocl_ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseC_1.ocl_
new file mode 100644
index 00000000..1bfe720b
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/Constraints/CaseC_1.ocl_
@@ -0,0 +1,629 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/original.PLEDGE.case.studies/model/CD_Case_C.uml'
2--e.g., import 'file:/Users/User_X/CD_Case_C.uml'
3
4package inputData
5
6
7 context Vcdu inv invextracted108:
8let transmissionData : TransmissionData = self.cadu.channelData.transmissionData in
9let rtStpsConfig : XsveRtStps = transmissionData.configuration.rtStpsConfig.xsveRtStps
10in self.vcduHeader.virtualChannelId.value.intValue = rtStpsConfig.idleVcid.value.intValue
11
12 context Vcdu inv invGenMult1:
13not self.mpduPacketZone.oclIsUndefined()
14
15 context Vcdu inv invGenMult2:
16not self.vcduHeader.oclIsUndefined()
17
18 context Vcdu inv invGenMult3:
19not self.cadu.oclIsUndefined()
20
21 context Vcdu inv invGenMult4:
22not self.mpduHeader.oclIsUndefined()
23
24
25 context MpduIdlePacketZone inv invGenMult6:
26not self.value.oclIsUndefined()
27
28 context MpduActivePacketZone inv invGenMult7:
29self.isp->size() >= 1
30
31 context MpduActivePacketZone inv invGenMult8:
32not self.value.oclIsUndefined()
33
34 context Isp inv invGenMult9:
35not self.packetDataField.oclIsUndefined()
36
37 context Isp inv invGenMult10:
38self.mpduActivePacketZone->size() >= 1
39
40 context Isp inv invGenMult11:
41not self.channelDataPerVcid.oclIsUndefined()
42
43 context PacketPrimaryHeader inv invGenMult12:
44not self.versionNumber.oclIsUndefined()
45
46 context PacketPrimaryHeader inv invGenMult13:
47not self.type.oclIsUndefined()
48
49 context PacketPrimaryHeader inv invGenMult14:
50not self.shf.oclIsUndefined()
51
52 context PacketPrimaryHeader inv invGenMult15:
53not self.apidPid.oclIsUndefined()
54
55 context PacketPrimaryHeader inv invGenMult16:
56not self.apidPcat.oclIsUndefined()
57
58 context PacketPrimaryHeader inv invGenMult17:
59not self.sequenceFlags.oclIsUndefined()
60
61 context PacketPrimaryHeader inv invGenMult18:
62not self.sequenceCount.oclIsUndefined()
63
64 context PacketPrimaryHeader inv invGenMult19:
65not self.dataLength.oclIsUndefined()
66
67 context PacketPrimaryHeader inv invGenMult20:
68not self.isp.oclIsUndefined()
69
70 context PacketDataField inv invGenMult21:
71not self.isp.oclIsUndefined()
72
73 context IdlePacketDataField inv invGenMult22:
74not self.idleDataArray.oclIsUndefined()
75
76 context ActivePacketDataField inv invGenMult23:
77not self.packetData.oclIsUndefined()
78
79 context ActivePacketDataField inv invGenMult24:
80not self.packetErrorControl.oclIsUndefined()
81
82 context PacketSecondaryHeader inv invGenMult25:
83not self.activePacketDataField.oclIsUndefined()
84
85 context TmGpsrS1DataFieldHeader inv invGenMult26:
86not self.fillerA.oclIsUndefined()
87
88 context TmGpsrS1DataFieldHeader inv invGenMult27:
89not self.version.oclIsUndefined()
90
91 context TmGpsrS1DataFieldHeader inv invGenMult28:
92not self.fillerB.oclIsUndefined()
93
94 context TmGpsrS1DataFieldHeader inv invGenMult29:
95not self.type.oclIsUndefined()
96
97 context TmGpsrS1DataFieldHeader inv invGenMult30:
98not self.subtype.oclIsUndefined()
99
100 context TmGpsrS1DataFieldHeader inv invGenMult31:
101not self.destinationId.oclIsUndefined()
102
103 context TmGpsrS1DataFieldHeader inv invGenMult32:
104not self.tfUndefinedA.oclIsUndefined()
105
106 context TmGpsrS1DataFieldHeader inv invGenMult33:
107not self.tfSeconds.oclIsUndefined()
108
109 context TmGpsrS1DataFieldHeader inv invGenMult34:
110not self.tfSubSeconds.oclIsUndefined()
111
112 context TmGpsrS1DataFieldHeader inv invGenMult35:
113not self.tfUndefinedB.oclIsUndefined()
114
115 context SarS1DataFieldHeader inv invGenMult36:
116not self.tcCoarseTime.oclIsUndefined()
117
118 context SarS1DataFieldHeader inv invGenMult37:
119not self.tcFineTime.oclIsUndefined()
120
121 context SarS1DataFieldHeader inv invGenMult38:
122not self.ancillaryData.oclIsUndefined()
123
124 context MsiS2DataFieldHeader inv invGenMult39:
125not self.startTimeCoarse.oclIsUndefined()
126
127 context MsiS2DataFieldHeader inv invGenMult40:
128not self.startTimeFine.oclIsUndefined()
129
130 context MsiS2DataFieldHeader inv invGenMult41:
131not self.timeCorrectionValue.oclIsUndefined()
132
133 context MsiS2DataFieldHeader inv invGenMult42:
134not self.syncStatusValidity.oclIsUndefined()
135
136 context MsiS2DataFieldHeader inv invGenMult43:
137not self.syncStatusFlag.oclIsUndefined()
138
139 context MsiS2DataFieldHeader inv invGenMult44:
140not self.systemOperationMode.oclIsUndefined()
141
142 context MsiS2DataFieldHeader inv invGenMult45:
143not self.compressionStatus.oclIsUndefined()
144
145 context TmGpsrS2DataFieldHeader inv invGenMult46:
146not self.fillerA.oclIsUndefined()
147
148 context TmGpsrS2DataFieldHeader inv invGenMult47:
149not self.version.oclIsUndefined()
150
151 context TmGpsrS2DataFieldHeader inv invGenMult48:
152not self.fillerB.oclIsUndefined()
153
154 context TmGpsrS2DataFieldHeader inv invGenMult49:
155not self.type.oclIsUndefined()
156
157 context TmGpsrS2DataFieldHeader inv invGenMult50:
158not self.subtype.oclIsUndefined()
159
160 context TmGpsrS2DataFieldHeader inv invGenMult51:
161not self.destinationId.oclIsUndefined()
162
163 context TmGpsrS2DataFieldHeader inv invGenMult52:
164not self.tfSeconds.oclIsUndefined()
165
166 context TmGpsrS2DataFieldHeader inv invGenMult53:
167not self.tfSubSeconds.oclIsUndefined()
168
169 context TmGpsrS2DataFieldHeader inv invGenMult54:
170not self.tfUndefinedA.oclIsUndefined()
171
172 context TmStrS2DataFieldHeader inv invGenMult55:
173not self.fillerA.oclIsUndefined()
174
175 context TmStrS2DataFieldHeader inv invGenMult56:
176not self.version.oclIsUndefined()
177
178 context TmStrS2DataFieldHeader inv invGenMult57:
179not self.fillerB.oclIsUndefined()
180
181 context TmStrS2DataFieldHeader inv invGenMult58:
182not self.type.oclIsUndefined()
183
184 context TmStrS2DataFieldHeader inv invGenMult59:
185not self.subtype.oclIsUndefined()
186
187 context TmStrS2DataFieldHeader inv invGenMult60:
188not self.destinationId.oclIsUndefined()
189
190 context TmStrS2DataFieldHeader inv invGenMult61:
191not self.tfSeconds.oclIsUndefined()
192
193 context TmStrS2DataFieldHeader inv invGenMult62:
194not self.tfSubSeconds.oclIsUndefined()
195
196 context TmStrS2DataFieldHeader inv invGenMult63:
197not self.syncA.oclIsUndefined()
198
199 context TmStrS2DataFieldHeader inv invGenMult64:
200not self.syncB.oclIsUndefined()
201
202 context TmCswS2DataFieldHeader inv invGenMult65:
203not self.fillerA.oclIsUndefined()
204
205 context TmCswS2DataFieldHeader inv invGenMult66:
206not self.version.oclIsUndefined()
207
208 context TmCswS2DataFieldHeader inv invGenMult67:
209not self.fillerB.oclIsUndefined()
210
211 context TmCswS2DataFieldHeader inv invGenMult68:
212not self.type.oclIsUndefined()
213
214 context TmCswS2DataFieldHeader inv invGenMult69:
215not self.subtype.oclIsUndefined()
216
217 context TmCswS2DataFieldHeader inv invGenMult70:
218not self.destinationId.oclIsUndefined()
219
220 context TmCswS2DataFieldHeader inv invGenMult71:
221not self.tfSeconds.oclIsUndefined()
222
223 context TmCswS2DataFieldHeader inv invGenMult72:
224not self.tfSubSeconds.oclIsUndefined()
225
226 context TmCswS2DataFieldHeader inv invGenMult73:
227not self.syncA.oclIsUndefined()
228
229 context TmCswS2DataFieldHeader inv invGenMult74:
230not self.syncB.oclIsUndefined()
231
232 context OlciS3DataFieldHeader inv invGenMult75:
233not self.fillerA.oclIsUndefined()
234
235 context OlciS3DataFieldHeader inv invGenMult76:
236not self.version.oclIsUndefined()
237
238 context OlciS3DataFieldHeader inv invGenMult77:
239not self.fillerB.oclIsUndefined()
240
241 context OlciS3DataFieldHeader inv invGenMult78:
242not self.type.oclIsUndefined()
243
244 context OlciS3DataFieldHeader inv invGenMult79:
245not self.subtype.oclIsUndefined()
246
247 context OlciS3DataFieldHeader inv invGenMult80:
248not self.destinationId.oclIsUndefined()
249
250 context OlciS3DataFieldHeader inv invGenMult81:
251not self.tfScienceTimeMsp.oclIsUndefined()
252
253 context OlciS3DataFieldHeader inv invGenMult82:
254not self.tfScienceTimeLsp.oclIsUndefined()
255
256 context OlciS3DataFieldHeader inv invGenMult83:
257not self.tfStat.oclIsUndefined()
258
259 context SlstrS3DataFieldHeader inv invGenMult84:
260not self.fillerA.oclIsUndefined()
261
262 context SlstrS3DataFieldHeader inv invGenMult85:
263not self.version.oclIsUndefined()
264
265 context SlstrS3DataFieldHeader inv invGenMult86:
266not self.fillerB.oclIsUndefined()
267
268 context SlstrS3DataFieldHeader inv invGenMult87:
269not self.type.oclIsUndefined()
270
271 context SlstrS3DataFieldHeader inv invGenMult88:
272not self.subtype.oclIsUndefined()
273
274 context SlstrS3DataFieldHeader inv invGenMult89:
275not self.destinationId.oclIsUndefined()
276
277 context SlstrS3DataFieldHeader inv invGenMult90:
278not self.tfTime.oclIsUndefined()
279
280 context SlstrS3DataFieldHeader inv invGenMult91:
281not self.tfStat.oclIsUndefined()
282
283 context DorisS3DateFieldHeader inv invGenMult92:
284not self.fillerA.oclIsUndefined()
285
286 context DorisS3DateFieldHeader inv invGenMult93:
287not self.version.oclIsUndefined()
288
289 context DorisS3DateFieldHeader inv invGenMult94:
290not self.fillerB.oclIsUndefined()
291
292 context DorisS3DateFieldHeader inv invGenMult95:
293not self.type.oclIsUndefined()
294
295 context DorisS3DateFieldHeader inv invGenMult96:
296not self.subtype.oclIsUndefined()
297
298 context DorisS3DateFieldHeader inv invGenMult97:
299not self.destinationId.oclIsUndefined()
300
301 context DorisS3DateFieldHeader inv invGenMult98:
302not self.tfTime.oclIsUndefined()
303
304 context DorisS3DateFieldHeader inv invGenMult99:
305not self.spare.oclIsUndefined()
306
307 context TmNavattS3DataFieldHeader inv invGenMult100:
308not self.fillerA.oclIsUndefined()
309
310 context TmNavattS3DataFieldHeader inv invGenMult101:
311not self.version.oclIsUndefined()
312
313 context TmNavattS3DataFieldHeader inv invGenMult102:
314not self.fillerB.oclIsUndefined()
315
316 context TmNavattS3DataFieldHeader inv invGenMult103:
317not self.type.oclIsUndefined()
318
319 context TmNavattS3DataFieldHeader inv invGenMult104:
320not self.subtype.oclIsUndefined()
321
322 context TmNavattS3DataFieldHeader inv invGenMult105:
323not self.destinationId.oclIsUndefined()
324
325 context TmNavattS3DataFieldHeader inv invGenMult106:
326not self.tfCoarse.oclIsUndefined()
327
328 context TmNavattS3DataFieldHeader inv invGenMult107:
329not self.tfFine.oclIsUndefined()
330
331 context TmNavattS3DataFieldHeader inv invGenMult108:
332not self.tfStat.oclIsUndefined()
333
334 context MwrS3DataFieldHeader inv invGenMult109:
335not self.fillerA.oclIsUndefined()
336
337 context MwrS3DataFieldHeader inv invGenMult110:
338not self.version.oclIsUndefined()
339
340 context MwrS3DataFieldHeader inv invGenMult111:
341not self.fillerB.oclIsUndefined()
342
343 context MwrS3DataFieldHeader inv invGenMult112:
344not self.type.oclIsUndefined()
345
346 context MwrS3DataFieldHeader inv invGenMult113:
347not self.subtype.oclIsUndefined()
348
349 context MwrS3DataFieldHeader inv invGenMult114:
350not self.destinationId.oclIsUndefined()
351
352 context MwrS3DataFieldHeader inv invGenMult115:
353not self.tfOverSecond.oclIsUndefined()
354
355 context MwrS3DataFieldHeader inv invGenMult116:
356not self.tfSubSecond.oclIsUndefined()
357
358 context MwrS3DataFieldHeader inv invGenMult117:
359not self.tfStat.oclIsUndefined()
360
361 context SralS3DataFieldHeader inv invGenMult118:
362not self.fillerA.oclIsUndefined()
363
364 context SralS3DataFieldHeader inv invGenMult119:
365not self.version.oclIsUndefined()
366
367 context SralS3DataFieldHeader inv invGenMult120:
368not self.fillerB.oclIsUndefined()
369
370 context SralS3DataFieldHeader inv invGenMult121:
371not self.type.oclIsUndefined()
372
373 context SralS3DataFieldHeader inv invGenMult122:
374not self.subtype.oclIsUndefined()
375
376 context SralS3DataFieldHeader inv invGenMult123:
377not self.destinationId.oclIsUndefined()
378
379 context SralS3DataFieldHeader inv invGenMult124:
380not self.tfCoarse.oclIsUndefined()
381
382 context SralS3DataFieldHeader inv invGenMult125:
383not self.tfFine.oclIsUndefined()
384
385 context SralS3DataFieldHeader inv invGenMult126:
386not self.tfStat.oclIsUndefined()
387
388 context TmGpsrS3DataFieldHeader inv invGenMult127:
389not self.fillerA.oclIsUndefined()
390
391 context TmGpsrS3DataFieldHeader inv invGenMult128:
392not self.version.oclIsUndefined()
393
394 context TmGpsrS3DataFieldHeader inv invGenMult129:
395not self.fillerB.oclIsUndefined()
396
397 context TmGpsrS3DataFieldHeader inv invGenMult130:
398not self.type.oclIsUndefined()
399
400 context TmGpsrS3DataFieldHeader inv invGenMult131:
401not self.subtype.oclIsUndefined()
402
403 context TmGpsrS3DataFieldHeader inv invGenMult132:
404not self.destinationId.oclIsUndefined()
405
406 context TmGpsrS3DataFieldHeader inv invGenMult133:
407not self.tfSeconds.oclIsUndefined()
408
409 context TmGpsrS3DataFieldHeader inv invGenMult134:
410not self.tfSubSeconds.oclIsUndefined()
411
412 context TmGpsrS3DataFieldHeader inv invGenMult135:
413not self.tfBlank.oclIsUndefined()
414
415 context PacketData inv invGenMult136:
416not self.dataArray.oclIsUndefined()
417
418 context PacketData inv invGenMult137:
419not self.activePacketDataField.oclIsUndefined()
420
421 context PacketErrorControl inv invGenMult138:
422not self.actualValue.oclIsUndefined()
423
424 context PacketErrorControl inv invGenMult139:
425not self.calculatedValue.oclIsUndefined()
426
427 context PacketErrorControl inv invGenMult140:
428not self.activePacketDataField.oclIsUndefined()
429
430 context FragmentPacketDataField inv invGenMult141:
431not self.dataArray.oclIsUndefined()
432
433 context ChannelDataPerVcid inv invGenMult142:
434not self.virtualChannelId.oclIsUndefined()
435
436 context ChannelDataPerVcid inv invGenMult143:
437self.channelData->size() >= 1
438
439 context ChannelDataPerVcid inv invGenMult144:
440self.isp->size() >= 1
441
442 context ChannelData inv invGenMult145:
443not self.transmissionData.oclIsUndefined()
444
445 context ChannelData inv invGenMult146:
446not self.channelDataPerVcid.oclIsUndefined()
447
448 context Cadu inv invGenMult147:
449not self.sync.oclIsUndefined()
450
451 context Cadu inv invGenMult148:
452not self.reedSolomonCoding.oclIsUndefined()
453
454
455 context Cadu inv invGenMult150:
456not self.channelData.oclIsUndefined()
457
458 context Sync inv invGenMult151:
459not self.value.oclIsUndefined()
460
461 context Sync inv invGenMult152:
462not self.cadu.oclIsUndefined()
463
464 context ReedSolomonCoding inv invGenMult153:
465not self.rsActualCheckSymbols.oclIsUndefined()
466
467 context ReedSolomonCoding inv invGenMult154:
468not self.rsCalculatedCheckSymbols.oclIsUndefined()
469
470 context ReedSolomonCoding inv invGenMult155:
471not self.cadu.oclIsUndefined()
472
473 context ExtendedCaduInfo inv invGenMult156:
474not self.value.oclIsUndefined()
475
476 context ExtendedCaduInfo inv invGenMult157:
477not self.cadu.oclIsUndefined()
478
479 context TransmissionData inv invGenMult158:
480not self.configuration.oclIsUndefined()
481
482 context Configuration inv invGenMult159:
483not self.transmission.oclIsUndefined()
484
485 context Configuration inv invGenMult160:
486not self.maxCounterPerApidSuffixConfig.oclIsUndefined()
487
488 context Configuration inv invGenMult161:
489not self.validApidsConfig.oclIsUndefined()
490
491 context Configuration inv invGenMult162:
492not self.rtStpsConfig.oclIsUndefined()
493
494 context MaxCounterPerApidSuffixConfig inv invGenMult163:
495self.apidSuffixAndMaxCounter->size() >= 1
496
497 context MaxCounterPerApidSuffixConfig inv invGenMult164:
498not self.configuration.oclIsUndefined()
499
500 context ApidSuffixAndMaxCounter inv invGenMult165:
501not self.apidSuffix.oclIsUndefined()
502
503 context ApidSuffixAndMaxCounter inv invGenMult166:
504not self.maxCounterPerApidSuffixConfig.oclIsUndefined()
505
506 context ValidApidsConfig inv invGenMult167:
507not self.configuration.oclIsUndefined()
508
509 context ValidApidsConfig inv invGenMult168:
510self.ispInfo->size() >= 1
511
512 context IspInfo inv invGenMult169:
513not self.validApidsConfig.oclIsUndefined()
514
515 context RtStpsConfig inv invGenMult170:
516not self.configuration.oclIsUndefined()
517
518 context RtStpsConfig inv invGenMult171:
519not self.xsveRtStps.oclIsUndefined()
520
521 context XsveRtStps inv invGenMult172:
522not self.frameLength.oclIsUndefined()
523
524 context XsveRtStps inv invGenMult173:
525not self.rsCorrectSize.oclIsUndefined()
526
527 context XsveRtStps inv invGenMult174:
528not self.idleVcid.oclIsUndefined()
529
530 context XsveRtStps inv invGenMult175:
531not self.idleApid.oclIsUndefined()
532
533 context XsveRtStps inv invGenMult176:
534not self.vcdusConfig.oclIsUndefined()
535
536 context XsveRtStps inv invGenMult177:
537not self.rtStpsConfig.oclIsUndefined()
538
539 context VcdusConfig inv invGenMult178:
540not self.xsveRtStps.oclIsUndefined()
541
542 context VcdusConfig inv invGenMult179:
543self.vcduConfig->size() >= 1
544
545 context VcduConfig inv invGenMult180:
546not self.vcdusConfig.oclIsUndefined()
547
548 context VcduConfig inv invGenMult181:
549not self.vcid.oclIsUndefined()
550
551 context VcduConfig inv invGenMult182:
552not self.minPacketSize.oclIsUndefined()
553
554 context VcduConfig inv invGenMult183:
555not self.maxPacketSize.oclIsUndefined()
556
557 context VcduConfig inv invGenMult184:
558not self.ispsConfig.oclIsUndefined()
559
560 context IspsConfig inv invGenMult185:
561not self.vcduConfig.oclIsUndefined()
562
563 context IspsConfig inv invGenMult186:
564self.ispConfig->size() >= 1
565
566 context IspConfig inv invGenMult187:
567not self.ispsConfig.oclIsUndefined()
568
569 context IspConfig inv invGenMult188:
570not self.apid.oclIsUndefined()
571
572 context VcduHeader inv invGenMult189:
573not self.mcidTfVersionNumber.oclIsUndefined()
574
575 context VcduHeader inv invGenMult190:
576not self.mcidSpacecraftId.oclIsUndefined()
577
578 context VcduHeader inv invGenMult191:
579not self.virtualChannelId.oclIsUndefined()
580
581 context VcduHeader inv invGenMult192:
582not self.virtualChannelFrameCount.oclIsUndefined()
583
584 context VcduHeader inv invGenMult193:
585not self.signFieldReplayFlag.oclIsUndefined()
586
587 context VcduHeader inv invGenMult194:
588not self.signFieldRsvdSpare.oclIsUndefined()
589
590 context VcduHeader inv invGenMult195:
591not self.frameHeaderErrorControl.oclIsUndefined()
592
593 context MpduIdleHeader inv invGenMult198:
594not self.value.oclIsUndefined()
595
596 context MpduActiveHeader inv invGenMult199:
597not self.rsvdSpare.oclIsUndefined()
598
599 context MpduActiveHeader inv invGenMult200:
600not self.firstHeaderPointer.oclIsUndefined()
601
602context ByteSequence inv invGenMult201:
603self.byte->size()>=1
604
605context Vcid inv invGenMult202:
606not self.value.oclIsUndefined()
607
608context ApidPcat inv invGenMult203:
609not self.value.oclIsUndefined()
610
611context Apid inv invGenMult204:
612not self.value.oclIsUndefined()
613
614context Apid inv invGenMult205:
615not self.apidPid.oclIsUndefined()
616
617context Apid inv invGenMult206:
618not self.apidPcat.oclIsUndefined()
619
620context ApidPid inv invGenMult207:
621not self.value.oclIsUndefined()
622
623context ChannelData inv invextracted1:
624self.cadu->size() > 0
625
626
627
628
629endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_A.uml b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_A.uml
new file mode 100644
index 00000000..6f3a2633
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_A.uml
@@ -0,0 +1,2416 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
3 <uml:Model xmi:id="_0" name="Taxation" URI="http:///TaxCarduml.ecore">
4 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_http2F2Fwww.eclipse.org2FOCL2FImport" source="http://www.eclipse.org/OCL/Import">
5 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_http2F2Fwww.eclipse.org2FOCL2FImport-_details.0" key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
6 </eAnnotations>
7 <packageImport xmi:type="uml:PackageImport" xmi:id="_vijrgFa6Eeqi7JkG9Y-7EA">
8 <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
9 </packageImport>
10 <packagedElement xmi:type="uml:Enumeration" xmi:id="Grantor" name="Grantor">
11 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Grantor-ACD" name="WWW"/>
12 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Grantor-Employer" name="Employer"/>
13 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Grantor-CNPF" name="MMM"/>
14 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Grantor-CEDIES" name="UUU"/>
15 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Grantor-SNJ" name="YYY"/>
16 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Grantor-CNAP" name="OOO"/>
17 </packagedElement>
18 <packagedElement xmi:type="uml:Class" xmi:id="Constants" name="Constants" isAbstract="true">
19 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD" name="MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD" visibility="public" isOrdered="true">
20 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
21 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMUM_CE_RATE_FOR_CHILD_NOT_BEING_PART_OF_HOUSEHOLD-_defaultValue" value="3480.0">
22 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
23 </defaultValue>
24 </ownedAttribute>
25 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE" name="MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE" visibility="public" isOrdered="true">
26 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
27 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMUM_CE_RATE_FOR_HOUSE_CARE_AND_CHILD_PART_OF_THE_HOUSEHOLD_CARE-_defaultValue" value="3600.0">
28 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
29 </defaultValue>
30 </ownedAttribute>
31 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MINIMUM_SALARY" name="MINIMUM_SALARY" visibility="public" isOrdered="true">
32 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
33 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MINIMUM_SALARY-_defaultValue" value="1500.0">
34 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
35 </defaultValue>
36 </ownedAttribute>
37 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION" name="FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION" visibility="public" isOrdered="true">
38 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
39 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_FOR_EXTRA_PROFESSIONAL_DEDUCTION-_defaultValue" value="4500.0">
40 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
41 </defaultValue>
42 </ownedAttribute>
43 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS" name="MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS" visibility="public" isOrdered="true">
44 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
45 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_PERCENTAGE_FOR_DONATIONS-_defaultValue" value="20.0">
46 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
47 </defaultValue>
48 </ownedAttribute>
49 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS" name="MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS" visibility="public" isOrdered="true">
50 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
51 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MINIMUM_DEDUCTIBLE_AMOUNT_FOR_DONATIONS-_defaultValue" value="120.0">
52 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
53 </defaultValue>
54 </ownedAttribute>
55 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC" visibility="public" isOrdered="true">
56 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
57 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANC-_defaultValue">
58 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
59 </defaultValue>
60 </ownedAttribute>
61 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE" visibility="public" isOrdered="true">
62 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
63 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ALIMONY_EXPENSE-_defaultValue" value="24000.0">
64 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
65 </defaultValue>
66 </ownedAttribute>
67 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION" name="MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION" visibility="public" isOrdered="true">
68 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
69 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION-_defaultValue" value="99.0">
70 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
71 </defaultValue>
72 </ownedAttribute>
73 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION" name="MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION" visibility="public" isOrdered="true">
74 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
75 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MAXIMAL_FLAT_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION-_defaultValue" value="30.0">
76 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
77 </defaultValue>
78 </ownedAttribute>
79 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION" name="MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION" visibility="public" isOrdered="true">
80 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
81 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-MINIMAL_DISTANCE_FOR_TRAVEL_EXPENSE_DEDUCTION-_defaultValue" value="4.0">
82 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
83 </defaultValue>
84 </ownedAttribute>
85 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIM_DAILY" name="FLAT_RATE_CIM_DAILY" visibility="public" isOrdered="true">
86 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
87 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIM_DAILY-_defaultValue" value="2.0">
88 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
89 </defaultValue>
90 </ownedAttribute>
91 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIM_MONTHLY" name="FLAT_RATE_CIM_MONTHLY" visibility="public" isOrdered="true">
92 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
93 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIM_MONTHLY-_defaultValue" value="62.0">
94 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
95 </defaultValue>
96 </ownedAttribute>
97 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIM_YEARLY" name="FLAT_RATE_CIM_YEARLY" visibility="public" isOrdered="true">
98 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
99 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIM_YEARLY-_defaultValue" value="750.0">
100 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
101 </defaultValue>
102 </ownedAttribute>
103 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIP_DAILY" name="FLAT_RATE_CIP_DAILY" visibility="public" isOrdered="true">
104 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
105 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIP_DAILY-_defaultValue" value="1.0">
106 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
107 </defaultValue>
108 </ownedAttribute>
109 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIP_MONTHLY" name="FLAT_RATE_CIP_MONTHLY" visibility="public" isOrdered="true">
110 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
111 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIP_MONTHLY-_defaultValue" value="25.0">
112 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
113 </defaultValue>
114 </ownedAttribute>
115 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIP_YEARLY" name="FLAT_RATE_CIP_YEARLY" visibility="public" isOrdered="true">
116 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
117 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIP_YEARLY-_defaultValue" value="30.0">
118 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
119 </defaultValue>
120 </ownedAttribute>
121 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIS_DAILY" name="FLAT_RATE_CIS_DAILY" visibility="public" isOrdered="true">
122 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
123 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIS_DAILY-_defaultValue" value="1.0">
124 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
125 </defaultValue>
126 </ownedAttribute>
127 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIS_MONTHLY" name="FLAT_RATE_CIS_MONTHLY" visibility="public" isOrdered="true">
128 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
129 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIS_MONTHLY-_defaultValue" value="25.0">
130 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
131 </defaultValue>
132 </ownedAttribute>
133 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_CIS_YEARLY" name="FLAT_RATE_CIS_YEARLY" visibility="public" isOrdered="true">
134 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
135 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_CIS_YEARLY-_defaultValue" value="300.0">
136 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
137 </defaultValue>
138 </ownedAttribute>
139 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT" name="FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT" visibility="public" isOrdered="true">
140 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
141 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Constants-FLAT_RATE_FOR_TRAVEL_EXPENSE_PER_UNIT-_defaultValue" value="99.0">
142 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
143 </defaultValue>
144 </ownedAttribute>
145 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_DS" visibility="public" isOrdered="true">
146 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
147 </ownedAttribute>
148 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE" name="FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE" visibility="public" isOrdered="true">
149 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
150 </ownedAttribute>
151 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE" name="DISABILITY_FLAT_RATE_FOR_MISCELLANEOUS_EXPENSE" visibility="public" isOrdered="true">
152 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
153 </ownedAttribute>
154 <ownedAttribute xmi:type="uml:Property" xmi:id="Constants-MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE" name="MAXIMUM_DEDUCTIBLE_AMOUNT_FOR_ADDITIONAL_PENSION_AND_INSURANCE" visibility="public" isOrdered="true">
155 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
156 </ownedAttribute>
157 </packagedElement>
158 <packagedElement xmi:type="uml:Enumeration" xmi:id="Disability_Types" name="Disability_Types">
159 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_IbZZ4GjKEeahGNKXqFC72A" name="beug"/>
160 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_lbDFgH_REeSKo9E5ldkH6Q" name="NONE"/>
161 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Disability_Types-A" name="A"/>
162 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Disability_Types-B" name="B"/>
163 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Disability_Types-C" name="C"/>
164 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Disability_Types-D" name="D"/>
165 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Disability_Types-E" name="E"/>
166 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_z-prIH_MEeSKo9E5ldkH6Q" name="OTHER"/>
167 </packagedElement>
168 <packagedElement xmi:type="uml:Enumeration" xmi:id="Country" name="Country">
169 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Country-LU" name="ZZ"/>
170 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Country-FR" name="FF"/>
171 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Country-BE" name="BB"/>
172 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Country-DE" name="DD"/>
173 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Country-NL" name="NN"/>
174 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Country-OTHER" name="OTHER"/>
175 </packagedElement>
176 <packagedElement xmi:type="uml:Enumeration" xmi:id="Tax_Card_Type" name="Tax_Card_Type">
177 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Card_Type-Principal" name="Principal"/>
178 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Card_Type-Additional" name="Additional"/>
179 </packagedElement>
180 <packagedElement xmi:type="uml:Enumeration" xmi:id="Tax_Office" name="Tax_Office">
181 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Office-RTS_2" name="RTS_2"/>
182 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Office-RTS_3" name="RTS_3"/>
183 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Office-RTS_Esch" name="RTS_4"/>
184 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Office-RTS_Ettelbruck" name="RTS_5"/>
185 </packagedElement>
186 <packagedElement xmi:type="uml:Enumeration" xmi:id="Tax_Class_Category" name="Tax_Class_Category">
187 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Class_Category-One" name="One"/>
188 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Class_Category-One_A" name="One_A"/>
189 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Tax_Class_Category-Two" name="Two"/>
190 </packagedElement>
191 <packagedElement xmi:type="uml:Enumeration" xmi:id="Job_Activity" name="Job_Activity">
192 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Job_Activity-Salary" name="Salary"/>
193 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Job_Activity-Pension" name="Pension"/>
194 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Job_Activity-Annuity" name="Annuity"/>
195 </packagedElement>
196 <packagedElement xmi:type="uml:Enumeration" xmi:id="Town" name="Town">
197 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Town-Luxembourg_city" name="LL"/>
198 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Town-Bertrange" name="BB"/>
199 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Town-Strassen" name="SS"/>
200 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Town-Bettembourg" name="TT"/>
201 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Town-Beaufort" name="Other"/>
202 </packagedElement>
203 <packagedElement xmi:type="uml:Enumeration" xmi:id="Type_of_Rate" name="Type_of_Rate">
204 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Type_of_Rate-REGULAR" name="REGULAR"/>
205 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Type_of_Rate-REAL_COST" name="REAL_COST"/>
206 </packagedElement>
207 <packagedElement xmi:type="uml:Enumeration" xmi:id="CE_Type" name="CE_Type">
208 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="CE_Type-INALIDITY_AND_INFIRMITY" name="INALIDITY_AND_INFIRMITY"/>
209 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="CE_Type-DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD" name="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
210 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="CE_Type-CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" name="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
211 </packagedElement>
212 <packagedElement xmi:type="uml:Enumeration" xmi:id="Expense_Purpose" name="Expense_Purpose">
213 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Expense_Purpose-HOUSE_CARE" name="HOUSE_CARE"/>
214 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Expense_Purpose-CHILD_CARE" name="CHILD_CARE"/>
215 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Expense_Purpose-DEPENDENCE_CARE" name="DEPENDENCE_CARE"/>
216 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Expense_Purpose-OTHER" name="OTHER"/>
217 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_O-S64JN1EeSS6JjHMC2a3A" name="ALIMONY"/>
218 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_qE9ewJQ8EeSMZqrJQmR94g" name="RECURRENT_DEPT"/>
219 </packagedElement>
220 <packagedElement xmi:type="uml:Enumeration" xmi:id="Dependent_Type" name="Dependent_Type">
221 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Dependent_Type-CHILD" name="CHILD"/>
222 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Dependent_Type-SPOUSE" name="SPOUSE"/>
223 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Dependent_Type-RELATIVE" name="RELATIVE"/>
224 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Dependent_Type-OTHER_FAMILY_MEMBER" name="OTHER_FAMILY_MEMBER"/>
225 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_h4BBsJA6EeSrKuFMY7nEzg" name="NOT_OWN_CHILD"/>
226 </packagedElement>
227 <packagedElement xmi:type="uml:Class" xmi:id="Income_Tax" name="Income_Tax">
228 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax-taxPayer" name="taxPayer" type="Tax_Payer" isOrdered="true"/>
229 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax-tax_amount" name="tax_amount" visibility="public" isOrdered="true">
230 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
231 </ownedAttribute>
232 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax-tax_year" name="tax_year" visibility="public" isOrdered="true">
233 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
234 </ownedAttribute>
235 <ownedAttribute xmi:type="uml:Property" xmi:id="_-scnAEzrEeaVApgXPK28xA" name="id6" isID="true">
236 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
237 </ownedAttribute>
238 </packagedElement>
239 <packagedElement xmi:type="uml:Class" xmi:id="Tax_Payer" name="Tax_Payer" isAbstract="true">
240 <generalization xmi:type="uml:Generalization" xmi:id="Tax_Payer-_generalization.0" general="Physical_Person"/>
241 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Payer-dependents" name="dependents" type="Dependent" aggregation="composite" association="_packagedElement.27">
242 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Tax_Payer-dependents-_lowerValue"/>
243 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Tax_Payer-dependents-_upperValue" value="*"/>
244 </ownedAttribute>
245 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Payer-expenses" name="expenses" type="Expense" aggregation="composite">
246 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Tax_Payer-expenses-_lowerValue"/>
247 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Tax_Payer-expenses-_upperValue" value="*"/>
248 </ownedAttribute>
249 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Payer-incomes" name="incomes" type="Income" aggregation="composite" association="_packagedElement.51">
250 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Tax_Payer-incomes-_upperValue" value="*"/>
251 </ownedAttribute>
252 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Payer-from_law" name="from_law" type="FromLaw" isOrdered="true" aggregation="composite" association="_packagedElement.56"/>
253 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Payer-from_agent" name="from_agent" type="FromAgent" isOrdered="true" aggregation="composite" association="_packagedElement.58"/>
254 <ownedAttribute xmi:type="uml:Property" xmi:id="_DMhXsDoCEeWS2a--AKriEw" name="AEP_deduction">
255 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
256 </ownedAttribute>
257 <ownedAttribute xmi:type="uml:Property" xmi:id="_NhjOEKOVEeikHY9CS9xW8w" name="taxesDue">
258 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
259 </ownedAttribute>
260 <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_QwEgMIXwEeSLiOAbrK2uyQ" client="Tax_Payer" supplier="_1gja4IXvEeSLiOAbrK2uyQ" contract="_1gja4IXvEeSLiOAbrK2uyQ"/>
261 <ownedOperation xmi:type="uml:Operation" xmi:id="Tax_Payer-is_dependent_part_of_the_household" name="is_dependent_part_of_the_household" visibility="public">
262 <ownedParameter xmi:type="uml:Parameter" xmi:id="Tax_Payer-is_dependent_part_of_the_household-_ownedParameter.0" isOrdered="true" direction="return">
263 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
264 </ownedParameter>
265 <ownedParameter xmi:type="uml:Parameter" xmi:id="Tax_Payer-is_dependent_part_of_the_household-IN_dependent" name="IN_dependent" type="Dependent" isOrdered="true"/>
266 </ownedOperation>
267 <ownedOperation xmi:type="uml:Operation" xmi:id="Tax_Payer-number_of_months_of_allowance" name="number_of_months_of_allowance" visibility="public">
268 <ownedParameter xmi:type="uml:Parameter" xmi:id="Tax_Payer-number_of_months_of_allowance-_ownedParameter.0" isOrdered="true" direction="return">
269 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigInteger"/>
270 </ownedParameter>
271 </ownedOperation>
272 <ownedOperation xmi:type="uml:Operation" xmi:id="Tax_Payer-deduction_according_disability_rate" name="deduction_according_disability_rate" visibility="public">
273 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Tax_Payer-deduction_according_disability_rate-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
274 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Tax_Payer-deduction_according_disability_rate-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="if ( self.disability_percentage >= 0.25 and self.disability_percentage &lt; 0.35) then&#xA;&#x9;&#x9;&#x9;150&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.35 and self.disability_percentage &lt; 0.45) then&#xA;&#x9;&#x9;&#x9;225&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.45 and self.disability_percentage &lt;0.55) then&#xA;&#x9;&#x9;&#x9;375&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.55 and self.disability_percentage &lt; 0.65 ) then&#xA;&#x9;&#x9;&#x9;450 &#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.65 and self.disability_percentage &lt; 0.75) then&#xA;&#x9;&#x9;&#x9;525&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.75 and self.disability_percentage &lt; 0.85) then&#xA;&#x9;&#x9;&#x9;585&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >=0.85 and self.disability_percentage&lt; 0.95) then&#xA;&#x9;&#x9;&#x9;645&#xA;&#x9;&#x9;&#x9;else if ( self.disability_percentage >= 0.95 and self.disability_percentage&lt;=1)then&#xA;&#x9;&#x9;&#x9;735 else 0 endif endif endif endif endif endif endif endif"/>
275 </eAnnotations>
276 <ownedParameter xmi:type="uml:Parameter" xmi:id="Tax_Payer-deduction_according_disability_rate-_ownedParameter.0" isOrdered="true" direction="return">
277 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
278 </ownedParameter>
279 </ownedOperation>
280 <ownedOperation xmi:type="uml:Operation" xmi:id="_L9WaYIIGEeSH_sby466C_w" name="getIsTaxedJointly">
281 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_drkIkIIGEeSH_sby466C_w" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
282 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gU8loIIGEeSH_sby466C_w" key="body" value="let is_married:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Marriage_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: - **/&#x9;&#xA;if (is_married) = false then&#xA; let is_in_partnership_relation:Boolean = if(self.getLegalUnionRecord(year).oclIsUndefined()) then false else self.getLegalUnionRecord(year).oclIsTypeOf(Partnership_Record) endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_in_partnership_relation) = false then&#xA; false&#xA; else&#xA; if (is_in_partnership_relation) = true then&#xA; let is_joint_tax_beneficial:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_joint_tax_beneficial) = true then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let relation_lasted_for_the_taxation_year:Boolean = true in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = false then&#xA; false&#xA; else&#xA; if (relation_lasted_for_the_taxation_year and not is_couple_living_apart) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = false then&#xA; false&#xA; else&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) &#xA; &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = true then&#xA; true&#xA; else&#xA; if ((resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5)) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_joint_tax_beneficial) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_married) = true then&#xA; let are_both_spouses_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_resident) = true then&#xA; true&#xA; else&#xA; if (are_both_spouses_resident) = false then&#xA; let are_both_spouses_non_resident:Boolean = (self.getSpouse(year).oclIsTypeOf(Non_Resident_Tax_Payer) or self.getSpouse(year).oclIsTypeOf(Physical_Person)) and self.oclIsTypeOf(Non_Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (are_both_spouses_non_resident) = true then&#xA; let my_incomes_all:Set(Income) = self.incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes_all:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_household_income:Real = if(my_incomes_all->oclIsInvalid() and spouse_incomes_all->oclIsInvalid()) then 0 else if(my_incomes_all->oclIsInvalid()) then spouse_incomes_all.income_amount->sum() else if(spouse_incomes_all->oclIsInvalid()) then my_incomes_all.income_amount->sum() else my_incomes_all.income_amount->sum() + spouse_incomes_all.income_amount->sum() endif endif endif&#xA; in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let resident_taxpayer_income:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes_all->oclIsInvalid()) then 0.0 else my_incomes_all.income_amount->sum() endif else if(spouse_incomes_all->oclIsInvalid()) then 0.0 else spouse_incomes_all.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let non_resident_taxpayer_in_Belgium:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let is_couple_assimilated_to_residents:Boolean = (resident_taxpayer_income > total_household_income * 0.9) or (non_resident_taxpayer_in_Belgium and resident_taxpayer_income > total_household_income * 0.5) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_assimilated_to_residents) = true then&#xA; true&#xA; else&#xA; if (is_couple_assimilated_to_residents) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let local_professional_household_income:Real = self.getProfetionalIncomeHouseholdZZ(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = false then&#xA; false&#xA; else&#xA; if (local_professional_household_income > total_professional_household_income * 0.5) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (are_both_spouses_non_resident) = false then&#xA; let is_couple_living_apart:Boolean = false in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (is_couple_living_apart) = true then&#xA; false&#xA; else&#xA; if (is_couple_living_apart) = false then&#xA; let my_incomes:Set(Income) = self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) &#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let spouse_incomes:Set(Income) = if(self.getSpouse(year).oclIsKindOf(Tax_Payer)) then self.getSpouse(year).oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) else OrderedSet{} endif&#x9;in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let both_spouses_have_professional_income:Boolean = if(my_incomes->oclIsInvalid() or spouse_incomes->oclIsInvalid()) then false else my_incomes->size()>0 and spouse_incomes->size()>0 endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (both_spouses_have_professional_income) = true then&#xA; let total_professional_household_income:Real = self.getProfetionalIncomeHousehold(year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; let professional_income_resident_taxpayer:Real = if(self.oclIsTypeOf(Resident_Tax_Payer)) then if(my_incomes->oclIsInvalid()) then 0.0 else my_incomes.income_amount->sum() endif else if(spouse_incomes->oclIsInvalid()) then 0.0 else spouse_incomes.income_amount->sum() endif endif in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: - **/&#x9;&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = false then&#xA; false&#xA; else&#xA; if (professional_income_resident_taxpayer > total_professional_household_income * 0.9) = true then&#xA; true&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (both_spouses_have_professional_income) = false then&#xA; false&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
283 </eAnnotations>
284 <ownedParameter xmi:type="uml:Parameter" xmi:id="_QGGYcIIGEeSH_sby466C_w" direction="return">
285 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
286 </ownedParameter>
287 <ownedParameter xmi:type="uml:Parameter" xmi:id="_SxLeoIIGEeSH_sby466C_w" name="year">
288 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
289 </ownedParameter>
290 </ownedOperation>
291 <ownedOperation xmi:type="uml:Operation" xmi:id="_ZwhBoIOuEeSemtkAhxylbQ" name="getIsreceivingAllowancesForChildren">
292 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hmTSIIOuEeSemtkAhxylbQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
293 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jB34QIOuEeSemtkAhxylbQ" key="body" value="let children1:Set(Dependent)=self.dependents->select(dependent_type=Dependent_Type::CHILD) in&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in&#xA;&#x9;&#x9;&#x9;let house: Household = union.household in&#xA;&#x9;&#x9;&#x9;let children:Set(Dependent)=if (house.oclIsInvalid()) then children1 else children1->union(house.children) endif in&#xA;&#x9;&#x9;&#x9;if(children->size()=0)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let allowances:Boolean=children.allowances->select(starting_year&lt;=year and ending_year=-1 and amount>0)->size()>0in&#xA;&#x9;&#x9;&#x9;if(allowances)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
294 </eAnnotations>
295 <ownedParameter xmi:type="uml:Parameter" xmi:id="_cpgA8IOuEeSemtkAhxylbQ" direction="return">
296 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
297 </ownedParameter>
298 <ownedParameter xmi:type="uml:Parameter" xmi:id="_eOKRoIOuEeSemtkAhxylbQ" name="year">
299 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
300 </ownedParameter>
301 </ownedOperation>
302 <ownedOperation xmi:type="uml:Operation" xmi:id="_djn4IIO0EeSN9uRKzOYzEA" name="getProfetionalIncomeHousehold">
303 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rgGaEIO0EeSN9uRKzOYzEA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
304 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sChKoIO0EeSN9uRKzOYzEA" key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real= if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
305 </eAnnotations>
306 <ownedParameter xmi:type="uml:Parameter" xmi:id="_hZwcMIO0EeSN9uRKzOYzEA" direction="return">
307 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
308 </ownedParameter>
309 <ownedParameter xmi:type="uml:Parameter" xmi:id="_jSzogIO0EeSN9uRKzOYzEA" name="year">
310 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
311 </ownedParameter>
312 </ownedOperation>
313 <ownedOperation xmi:type="uml:Operation" xmi:id="_vjloMIO1EeSN9uRKzOYzEA" name="getProfetionalIncomeHouseholdZZ">
314 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5HBtUIO1EeSN9uRKzOYzEA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
315 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6C778IO1EeSN9uRKzOYzEA" key="body" value="let spouse:Physical_Person= self.getSpouse(year)in&#xA;&#x9;&#x9;&#x9;let include_spouse:Boolean= if(not spouse.oclIsUndefined()) then spouse.oclIsKindOf(Tax_Payer) else false endif in&#xA;&#x9;&#x9;&#x9;let myIncomes:Set(Income)=self.incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income) and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let myPart:Real=if(myIncomes->oclIsInvalid())then 0.0 else myIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(include_spouse=false)then&#xA;&#x9;&#x9;&#x9;myPart&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let herIncomes:Set(Income)=spouse.oclAsType(Tax_Payer).incomes->select(i:Income|i.year=year and i.income_type.oclIsKindOf(Employment_Income)and i.oclIsTypeOf(Local_Income)) in&#xA;&#x9;&#x9;&#x9;let herPart:Real=if(herIncomes->oclIsInvalid())then 0.0 else herIncomes.income_amount->sum() endif in&#xA;&#x9;&#x9;&#x9;myPart+herPart&#xA;&#x9;&#x9;&#x9;endif"/>
316 </eAnnotations>
317 <ownedParameter xmi:type="uml:Parameter" xmi:id="_x1FwwIO1EeSN9uRKzOYzEA" direction="return">
318 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
319 </ownedParameter>
320 <ownedParameter xmi:type="uml:Parameter" xmi:id="_1s_2cIO1EeSN9uRKzOYzEA" name="year">
321 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
322 </ownedParameter>
323 </ownedOperation>
324 <ownedOperation xmi:type="uml:Operation" xmi:id="_snYCgIUlEeSLxMrgoK8NOA" name="getTaxClass">
325 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8q7lsIUlEeSLxMrgoK8NOA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
326 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-M8LAIUlEeSLxMrgoK8NOA" key="body" value="let is_resident_taxpayer:Boolean = self.oclIsKindOf(Resident_Tax_Payer) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA;/** Description: Returns yes if a given taxpayer is a resident. - **/&#x9;&#xA;if (is_resident_taxpayer) = true then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA;else&#xA; if (is_resident_taxpayer) = false then&#xA; let is_married:Boolean = self.getIsMaried(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married. - **/&#x9;&#xA; if (is_married) = false then&#xA; let is_taxed_jointly:Boolean = self.getIsTaxedJointly(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is married or has a partnership contract. - **/&#x9;&#xA; if (is_taxed_jointly) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (is_taxed_jointly) = false then&#xA; let is_divorced:Boolean = self.getSeperationState(taxation_year,Separation_Causes::DIVORCE) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is divorced within the selected taxation year. - **/&#x9;&#xA; let is_living_separately:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_DE_FAIT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is not cohabiting with his/her spouse. In French: &quot;Separation de fait&quot;. - **/&#x9;&#xA; let is_living_separately_by_court:Boolean = self.getSeperationState(taxation_year,Separation_Causes::SEPARATION_BY_COURT) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has a judicial sentence dismissing him from cohabiting with his/her spouse. In French: &quot;Separation de corps&quot;. - **/&#x9;&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_divorced or is_living_separately_by_court or (is_living_separately and not is_resident_taxpayer)) = true then&#xA; let can_beneficiate_from_transition_state :Boolean = self.getDivorceTransitionState(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if: (1) the divorce/separation occurred within the last three years from the taxation year, and (2) the taxpayer did has not benefited from a divorce/separation transition state for the last five years from the current taxation year. - **/&#x9;&#xA; if (can_beneficiate_from_transition_state ) = false then&#xA; let is_widower:Boolean = self.is_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer has the statute of widower for the current taxation year. - **/&#x9;&#xA; if (is_widower) = true then&#xA; let spouse_death_year:Integer = self.last_start_year_widower in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the year on which the spouse of the taxpayer past away. - **/&#x9;&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (spouse_death_year &lt;= taxation_year and spouse_death_year >= taxation_year -3) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_widower) = false then&#xA; let is_reciving_bonus_for_children:Boolean = self.getIsreceivingAllowancesForChildren(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns yes if the taxpayer is receiving a bonus for children in household. - **/&#x9;&#xA; if (is_reciving_bonus_for_children) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (is_reciving_bonus_for_children) = false then&#xA; let taxpayer_age:Integer = self.getAge(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the age of a given taxpayer. - **/&#x9;&#xA; if (taxpayer_age >= 64) = true then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; if (taxpayer_age >= 64) = false then&#xA; Tax_Class_Category::One&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (can_beneficiate_from_transition_state ) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; if (is_married) = true then&#xA; let total_professional_income_household:Real = self.getProfetionalIncomeHousehold(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes. - **/&#x9;&#xA; let sum_professional_income_household_ZZ:Real = self.getProfetionalIncomeHouseholdZZ(taxation_year) in&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#xA; /** Description: Returns the sum of the taxpayer's household professional incomes that are taxed in ZZ. - **/&#x9;&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = true then&#xA; Tax_Class_Category::Two&#xA; else&#xA; if (sum_professional_income_household_ZZ > (0.5 * total_professional_income_household)) = false then&#xA; Tax_Class_Category::One_A&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA; endif&#xA; else&#xA; invalid&#xA; endif&#xA;endif"/>
327 </eAnnotations>
328 <ownedParameter xmi:type="uml:Parameter" xmi:id="_1e2ZgIUlEeSLxMrgoK8NOA" type="Tax_Class_Category" direction="return"/>
329 <ownedParameter xmi:type="uml:Parameter" xmi:id="_4QNt4IUlEeSLxMrgoK8NOA" name="taxation_year">
330 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
331 </ownedParameter>
332 </ownedOperation>
333 </packagedElement>
334 <packagedElement xmi:type="uml:Class" xmi:id="Physical_Person" name="Physical_Person">
335 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-name" name="name" visibility="public" isUnique="false">
336 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
337 </ownedAttribute>
338 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-is_assisting_spouse" name="is_assisting_spouse" visibility="public" isOrdered="true" isDerived="true">
339 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
340 </ownedAttribute>
341 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-SSNo" name="SSNo" visibility="public" isOrdered="true" isID="true">
342 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
343 </ownedAttribute>
344 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-addresses" name="addresses" type="Address" association="_packagedElement.19">
345 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Physical_Person-addresses-_lowerValue"/>
346 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Physical_Person-addresses-_upperValue" value="*"/>
347 </ownedAttribute>
348 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-age" name="birth_year" visibility="public" isUnique="false">
349 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
350 </ownedAttribute>
351 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-disability_percentage" name="disability_percentage" visibility="public" isUnique="false">
352 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
353 </ownedAttribute>
354 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-disability_type" name="disability_type" visibility="public" type="Disability_Types" isUnique="false"/>
355 <ownedAttribute xmi:type="uml:Property" xmi:id="Physical_Person-is_affiliated_personnaly_to_social_security" name="is_affiliated_personnaly_to_social_security" visibility="public" isOrdered="true" isDerived="true">
356 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
357 </ownedAttribute>
358 <ownedAttribute xmi:type="uml:Property" xmi:id="_O9uyUIOfEeSemtkAhxylbQ" name="birth_month" isUnique="false">
359 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
360 </ownedAttribute>
361 <ownedAttribute xmi:type="uml:Property" xmi:id="_SaZtgIOfEeSemtkAhxylbQ" name="birth_day" isUnique="false">
362 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
363 </ownedAttribute>
364 <ownedAttribute xmi:type="uml:Property" xmi:id="_Mr92cZN2EeSS6JjHMC2a3A" name="expenses" type="Expense" association="_Mr92cJN2EeSS6JjHMC2a3A">
365 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mr92cpN2EeSS6JjHMC2a3A"/>
366 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mr92c5N2EeSS6JjHMC2a3A" value="*"/>
367 </ownedAttribute>
368 <ownedAttribute xmi:type="uml:Property" xmi:id="_wyM3MD9AEeW8kvq1XD0XnA" name="is_widower">
369 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
370 </ownedAttribute>
371 <ownedAttribute xmi:type="uml:Property" xmi:id="_0xtZsD9AEeW8kvq1XD0XnA" name="last_start_year_widower">
372 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
373 </ownedAttribute>
374 <ownedOperation xmi:type="uml:Operation" xmi:id="Physical_Person-is_separated_from" name="is_separated_from" visibility="public">
375 <ownedParameter xmi:type="uml:Parameter" xmi:id="Physical_Person-is_separated_from-_ownedParameter.0" isOrdered="true" direction="return">
376 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
377 </ownedParameter>
378 <ownedParameter xmi:type="uml:Parameter" xmi:id="Physical_Person-is_separated_from-IN_person" name="IN_person" type="Physical_Person" isOrdered="true"/>
379 </ownedOperation>
380 <ownedOperation xmi:type="uml:Operation" xmi:id="Physical_Person-is_person_affiliated_personnaly_to_social_security" name="is_person_affiliated_personnaly_to_social_security" visibility="public">
381 <ownedParameter xmi:type="uml:Parameter" xmi:id="Physical_Person-is_person_affiliated_personnaly_to_social_security-_ownedParameter.0" isOrdered="true" direction="return">
382 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
383 </ownedParameter>
384 </ownedOperation>
385 <ownedOperation xmi:type="uml:Operation" xmi:id="_7PmiMIObEeSemtkAhxylbQ" name="getSeperationState">
386 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ex2SsIOcEeSemtkAhxylbQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
387 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gSRjoIOcEeSemtkAhxylbQ" key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.separation_cause=seperation_type&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
388 </eAnnotations>
389 <ownedParameter xmi:type="uml:Parameter" xmi:id="_BNEmMIOcEeSemtkAhxylbQ" direction="return">
390 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
391 </ownedParameter>
392 <ownedParameter xmi:type="uml:Parameter" xmi:id="_C4uPsIOcEeSemtkAhxylbQ" name="year">
393 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
394 </ownedParameter>
395 <ownedParameter xmi:type="uml:Parameter" xmi:id="_VgXnsIVGEeSXX-HVERRl8A" name="seperation_type" type="_7auHsIOIEeSemtkAhxylbQ"/>
396 </ownedOperation>
397 <ownedOperation xmi:type="uml:Operation" xmi:id="_svP6UIOfEeSemtkAhxylbQ" name="getAge" isQuery="true">
398 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_24R_0IOfEeSemtkAhxylbQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
399 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4ZsvQIOfEeSemtkAhxylbQ" key="body" value="&#x9;if(birth_year>=year )then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;year-birth_year&#xA;&#x9;&#x9;&#x9;endif"/>
400 </eAnnotations>
401 <ownedRule xmi:type="uml:Constraint" xmi:id="_-Y-pYA0bEeiyiN2N51a0dQ" name="Constraint1">
402 <specification xmi:type="uml:OpaqueExpression" xmi:id="_-ZHMQA0bEeiyiN2N51a0dQ" name="constraintSpec">
403 <language>OCL</language>
404 <body>self.birth_year</body>
405 </specification>
406 </ownedRule>
407 <ownedParameter xmi:type="uml:Parameter" xmi:id="_w5bbwIOfEeSemtkAhxylbQ" direction="return">
408 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
409 </ownedParameter>
410 <ownedParameter xmi:type="uml:Parameter" xmi:id="_yVl3wIOfEeSemtkAhxylbQ" name="year">
411 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
412 </ownedParameter>
413 </ownedOperation>
414 <ownedOperation xmi:type="uml:Operation" xmi:id="_itvRwIOiEeSemtkAhxylbQ" name="getIsMaried">
415 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rPug8IOiEeSemtkAhxylbQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
416 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sDYLcIOiEeSemtkAhxylbQ" key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self) and oclIsKindOf(Marriage_Record))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
417 </eAnnotations>
418 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mvOxQIOiEeSemtkAhxylbQ" direction="return">
419 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
420 </ownedParameter>
421 <ownedParameter xmi:type="uml:Parameter" xmi:id="_oHdIcIOiEeSemtkAhxylbQ" name="year">
422 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
423 </ownedParameter>
424 </ownedOperation>
425 <ownedOperation xmi:type="uml:Operation" xmi:id="_vR4b4IOvEeSN9uRKzOYzEA" name="getSeperationYear">
426 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4u_PgIOvEeSN9uRKzOYzEA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
427 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5dPcoIOvEeSN9uRKzOYzEA" key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select(individual_A=self or individual_B=self) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.end_year&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
428 </eAnnotations>
429 <ownedParameter xmi:type="uml:Parameter" xmi:id="_zxMf0IOvEeSN9uRKzOYzEA" direction="return">
430 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
431 </ownedParameter>
432 <ownedParameter xmi:type="uml:Parameter" xmi:id="_xdohwIOvEeSN9uRKzOYzEA" name="year">
433 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
434 </ownedParameter>
435 </ownedOperation>
436 <ownedOperation xmi:type="uml:Operation" xmi:id="_J87swIOxEeSN9uRKzOYzEA" name="getDivorceTransitionState">
437 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T2TloIOxEeSN9uRKzOYzEA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
438 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4R8IOxEeSN9uRKzOYzEA" key="body" value="let sep_year:Integer=self.getSeperationYear(year) in&#xA;&#x9;&#x9;&#x9;if(sep_year=-1)then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if( (sep_year &lt;= year and sep_year >= (year -3))=false) then&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let past_sep_year:Integer=self.getSeperationYear(year-5) in&#xA;&#x9;&#x9;&#x9;if(past_sep_year=-1)then&#xA;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
439 </eAnnotations>
440 <ownedParameter xmi:type="uml:Parameter" xmi:id="_NYDIwIOxEeSN9uRKzOYzEA" direction="return">
441 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
442 </ownedParameter>
443 <ownedParameter xmi:type="uml:Parameter" xmi:id="_RDT5kIOxEeSN9uRKzOYzEA" name="year">
444 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
445 </ownedParameter>
446 </ownedOperation>
447 <ownedOperation xmi:type="uml:Operation" xmi:id="_lsXLwIOyEeSN9uRKzOYzEA" name="getSpouse">
448 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vi9dcIOyEeSN9uRKzOYzEA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
449 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w3dLMIOyEeSN9uRKzOYzEA" key="body" value="&#x9;let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;let union:Legal_Union_Record=self.getLegalUnionRecord(year) in &#xA;&#x9;&#x9;&#x9;if(union.oclIsInvalid())then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9; if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;if(lasted_union.end_year=-1)then&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(lasted_union.individual_A=self)then&#xA;&#x9;&#x9;&#x9;lasted_union.individual_B&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;lasted_union.individual_A&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
450 </eAnnotations>
451 <ownedRule xmi:type="uml:Constraint" xmi:id="_nYYwYOcXEeauVdC-0G-XUw" name="OperationGetSpouse">
452 <specification xmi:type="uml:OpaqueExpression" xmi:id="_YPN8YOcYEeauVdC-0G-XUw">
453 <language>OCL</language>
454 <body>let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
455
456 if(legel_unions->size()=0) then
457 let union:Legal_Union_Record=self.getLegalUnionRecord(year) in
458 if(union.oclIsInvalid())then
459 invalid
460 else
461 if(union.individual_B=self) then union.individual_A.oclAsType(Physical_Person) else union.individual_B.oclAsType(Physical_Person) endif endif
462 else
463 let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in
464 let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
465 if(lasted_union.end_year=-1)then
466
467 if(lasted_union.individual_A=self)then
468 lasted_union.individual_B
469 else
470 lasted_union.individual_A
471 endif
472 else
473 invalid
474 endif
475 endif</body>
476 </specification>
477 </ownedRule>
478 <ownedParameter xmi:type="uml:Parameter" xmi:id="_pF7IkIOyEeSN9uRKzOYzEA" name="year">
479 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
480 </ownedParameter>
481 <ownedParameter xmi:type="uml:Parameter" xmi:id="_rqTJ0IOyEeSN9uRKzOYzEA" type="Physical_Person" direction="return"/>
482 </ownedOperation>
483 <ownedOperation xmi:type="uml:Operation" xmi:id="_k2rLQIqUEeSCrr7uegGAVw" name="getLegalUnionRecord">
484 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZOFFkIqWEeSCrr7uegGAVw" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
485 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZkZT0IqWEeSCrr7uegGAVw" key="body" value="let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(legel_unions->size()=0) then&#xA;&#x9;&#x9;&#x9;invalid&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in&#xA;&#x9;&#x9;&#x9;let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in&#xA;&#x9;&#x9;&#x9;lasted_union&#xA;&#x9;&#x9;&#x9;endif"/>
486 </eAnnotations>
487 <ownedRule xmi:type="uml:Constraint" xmi:id="_TQVdAOcXEeauVdC-0G-XUw" name="OperationgetLegalUnionRecord">
488 <specification xmi:type="uml:OpaqueExpression" xmi:id="_VuRfEOcXEeauVdC-0G-XUw">
489 <language>OCL</language>
490 <body>let legel_unions:Set(Legal_Union_Record)=Legal_Union_Record.allInstances()->select( ((individual_A=self or individual_B=self))) in
491
492 if(legel_unions->size()=0) then
493 invalid
494 else
495 let possible_unions:Set(Legal_Union_Record)=legel_unions->select(start_year&lt;=year)in
496 let lasted_union:Legal_Union_Record= possible_unions->select(start_year=possible_unions.start_year->max())->any(true) in
497 if(lasted_union.end_year=-1)then
498 lasted_union
499 else
500 invalid
501 endif
502 endif</body>
503 </specification>
504 </ownedRule>
505 <ownedParameter xmi:type="uml:Parameter" xmi:id="_rUwB8IqUEeSCrr7uegGAVw" type="Legal_Union_Record" direction="return"/>
506 <ownedParameter xmi:type="uml:Parameter" xmi:id="_tgL-wIqUEeSCrr7uegGAVw" name="year">
507 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
508 </ownedParameter>
509 </ownedOperation>
510 </packagedElement>
511 <packagedElement xmi:type="uml:Class" xmi:id="External_Allowance" name="External_Allowance">
512 <ownedAttribute xmi:type="uml:Property" xmi:id="External_Allowance-amount" name="amount" visibility="public" isOrdered="true">
513 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
514 </ownedAttribute>
515 <ownedAttribute xmi:type="uml:Property" xmi:id="External_Allowance-grantor" name="grantor" visibility="public" type="Grantor" isOrdered="true"/>
516 <ownedAttribute xmi:type="uml:Property" xmi:id="_6K5ewIOtEeSemtkAhxylbQ" name="starting_year">
517 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
518 </ownedAttribute>
519 <ownedAttribute xmi:type="uml:Property" xmi:id="_ys1IMYnjEeS51qv-dTzbfg" name="person" type="Dependent" association="_ys1IMInjEeS51qv-dTzbfg">
520 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ys1IMonjEeS51qv-dTzbfg" value="1"/>
521 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ys1IM4njEeS51qv-dTzbfg" value="1"/>
522 </ownedAttribute>
523 <ownedAttribute xmi:type="uml:Property" xmi:id="_IoNagD93EeWzD95_WvVH8Q" name="ending_year">
524 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
525 </ownedAttribute>
526 <ownedAttribute xmi:type="uml:Property" xmi:id="_4QQ94T-FEeWJhua38hb9gw" name="reciver" type="Physical_Person" association="_4QQ94D-FEeWJhua38hb9gw">
527 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4QQ94j-FEeWJhua38hb9gw" value="1"/>
528 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4QQ94z-FEeWJhua38hb9gw" value="1"/>
529 </ownedAttribute>
530 <ownedAttribute xmi:type="uml:Property" xmi:id="_hkbH8EzrEeaVApgXPK28xA" name="id5" isID="true">
531 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
532 </ownedAttribute>
533 <ownedOperation xmi:type="uml:Operation" xmi:id="_TfjvEEaVEeavk_GdzuNzKw" name="getAmount">
534 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jesP0EaWEeavk_GdzuNzKw" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
535 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ljqYQEaWEeavk_GdzuNzKw" key="body" value=" if(dep_age>=6 and dep_age&lt;=11) then&#xA;(base + 16.17).round()&#xA; else if (dep_age>=12) then (base + 48.52).round() else &#xA; if(is_disabled) then(base + 185.60).round() else base endif endif endif"/>
536 </eAnnotations>
537 <ownedRule xmi:type="uml:Constraint" xmi:id="_8p-z0OcZEeauVdC-0G-XUw" name="OperationGetAmount">
538 <specification xmi:type="uml:OpaqueExpression" xmi:id="_BDr_AOcaEeauVdC-0G-XUw">
539 <language>OCL</language>
540 <body>if(dep_age>=6 and dep_age&lt;=11) then
541 round_lower_euros(base + 16.17)
542 else if (dep_age>=12) then round_lower_euros(base + 48.52) else
543 if(is_disabled) then round_lower_euros(base + 185.60) else base endif endif endif
544 </body>
545 </specification>
546 </ownedRule>
547 <ownedParameter xmi:type="uml:Parameter" xmi:id="_bUH3kEaVEeavk_GdzuNzKw" name="base">
548 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
549 </ownedParameter>
550 <ownedParameter xmi:type="uml:Parameter" xmi:id="_iY7-IEaVEeavk_GdzuNzKw" name="dep_age">
551 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
552 </ownedParameter>
553 <ownedParameter xmi:type="uml:Parameter" xmi:id="_lRXj0EaVEeavk_GdzuNzKw" name="is_disabled">
554 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
555 </ownedParameter>
556 <ownedParameter xmi:type="uml:Parameter" xmi:id="_nQ8O4EaVEeavk_GdzuNzKw" direction="return">
557 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
558 </ownedParameter>
559 </ownedOperation>
560 <ownedOperation xmi:type="uml:Operation" xmi:id="_3D6jIEa7Eea5Zpk5ulXFgA" name="round_lower_euros">
561 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DEmGwEa8Eea5Zpk5ulXFgA" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
562 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Dd_eMEa8Eea5Zpk5ulXFgA" key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
563 </eAnnotations>
564 <ownedRule xmi:type="uml:Constraint" xmi:id="_v16rcOcZEeauVdC-0G-XUw" name="OperationRound">
565 <specification xmi:type="uml:OpaqueExpression" xmi:id="_7un-0OcZEeauVdC-0G-XUw">
566 <language>OCL</language>
567 <body>let p1:Integer = amount.floor() in
568 p1.toString().toReal()
569 </body>
570 </specification>
571 </ownedRule>
572 <ownedParameter xmi:type="uml:Parameter" xmi:id="_8t_xEEa7Eea5Zpk5ulXFgA" name="amount">
573 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
574 </ownedParameter>
575 <ownedParameter xmi:type="uml:Parameter" xmi:id="_-ofH0Ea7Eea5Zpk5ulXFgA" direction="return">
576 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
577 </ownedParameter>
578 </ownedOperation>
579 </packagedElement>
580 <packagedElement xmi:type="uml:Class" xmi:id="Address" name="Address">
581 <ownedAttribute xmi:type="uml:Property" xmi:id="Address-country" name="country" visibility="public" type="Country" isOrdered="true">
582 <defaultValue xmi:type="uml:InstanceValue" xmi:id="Address-country-_defaultValue" type="Country" instance="Country-LU"/>
583 </ownedAttribute>
584 <ownedAttribute xmi:type="uml:Property" xmi:id="Address-street" name="street" visibility="public" isOrdered="true">
585 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
586 </ownedAttribute>
587 <ownedAttribute xmi:type="uml:Property" xmi:id="Address-zipCode" name="zipCode" visibility="public" isOrdered="true">
588 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
589 </ownedAttribute>
590 <ownedAttribute xmi:type="uml:Property" xmi:id="Address-city" name="city" visibility="public" isOrdered="true">
591 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
592 </ownedAttribute>
593 <ownedAttribute xmi:type="uml:Property" xmi:id="Address-taxPayer" name="taxPayer" type="Physical_Person" association="_packagedElement.19">
594 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yIC2QEKuEeaQU66UNd8S3g"/>
595 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Address-taxPayer-_upperValue" value="*"/>
596 </ownedAttribute>
597 <ownedAttribute xmi:type="uml:Property" xmi:id="_CbKw8EzrEeaVApgXPK28xA" name="id2" isID="true">
598 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
599 </ownedAttribute>
600 </packagedElement>
601 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.19" memberEnd="Address-taxPayer Physical_Person-addresses"/>
602 <packagedElement xmi:type="uml:Class" xmi:id="Legal_Union_Record" name="Legal_Union_Record" isAbstract="true">
603 <ownedAttribute xmi:type="uml:Property" xmi:id="Legal_Union_Record-start_date" name="start_year" visibility="public" isOrdered="true">
604 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
605 </ownedAttribute>
606 <ownedAttribute xmi:type="uml:Property" xmi:id="Legal_Union_Record-end_date" name="end_year" visibility="public" isOrdered="true">
607 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
608 </ownedAttribute>
609 <ownedAttribute xmi:type="uml:Property" xmi:id="_HlxS0IOKEeSemtkAhxylbQ" name="separation_cause" type="_7auHsIOIEeSemtkAhxylbQ"/>
610 <ownedAttribute xmi:type="uml:Property" xmi:id="_oA2J8YXuEeSLiOAbrK2uyQ" name="household" type="Household" association="_oA2J8IXuEeSLiOAbrK2uyQ">
611 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oA2J8oXuEeSLiOAbrK2uyQ" value="1"/>
612 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oA2J84XuEeSLiOAbrK2uyQ" value="1"/>
613 </ownedAttribute>
614 <ownedAttribute xmi:type="uml:Property" xmi:id="_5YyQ4IYUEeS819S0h0iEVw" name="individual_A" type="Physical_Person" aggregation="composite" association="_5Yy38IYUEeS819S0h0iEVw">
615 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5YyQ4YYUEeS819S0h0iEVw" value="1"/>
616 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5YyQ4oYUEeS819S0h0iEVw" value="1"/>
617 </ownedAttribute>
618 <ownedAttribute xmi:type="uml:Property" xmi:id="_0ISLIIYVEeS819S0h0iEVw" name="individual_B" type="Physical_Person" aggregation="composite" association="_0ISyMIYVEeS819S0h0iEVw">
619 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0ISLIYYVEeS819S0h0iEVw" value="1"/>
620 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0ISLIoYVEeS819S0h0iEVw" value="1"/>
621 </ownedAttribute>
622 <ownedAttribute xmi:type="uml:Property" xmi:id="_9Cy7kYqVEeSCrr7uegGAVw" name="properties" type="_0yLxwIH5EeSH_sby466C_w" aggregation="composite" association="_9Cy7kIqVEeSCrr7uegGAVw">
623 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9Cy7koqVEeSCrr7uegGAVw" value="1"/>
624 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Cy7k4qVEeSCrr7uegGAVw" value="*"/>
625 </ownedAttribute>
626 <ownedAttribute xmi:type="uml:Property" xmi:id="_9ht2oJNxEeSZisr9dyMXhQ" name="mutual_agreement">
627 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
628 </ownedAttribute>
629 <ownedAttribute xmi:type="uml:Property" xmi:id="_bMrYMEzqEeaVApgXPK28xA" name="id9" isID="true">
630 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
631 </ownedAttribute>
632 </packagedElement>
633 <packagedElement xmi:type="uml:Class" xmi:id="Dependent" name="Dependent">
634 <generalization xmi:type="uml:Generalization" xmi:id="Dependent-_generalization.0" general="Physical_Person"/>
635 <ownedAttribute xmi:type="uml:Property" xmi:id="Dependent-dependent_type" name="dependent_type" visibility="public" type="Dependent_Type" isOrdered="true"/>
636 <ownedAttribute xmi:type="uml:Property" xmi:id="Dependent-responsible_person" name="responsible_person" type="Tax_Payer" isOrdered="true" association="_packagedElement.27">
637 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n22L0EN1EeaU2b-bUHDWlA"/>
638 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n23Z8EN1EeaU2b-bUHDWlA" value="1"/>
639 </ownedAttribute>
640 <ownedAttribute xmi:type="uml:Property" xmi:id="Dependent-continued_studies" name="continued_studies" visibility="public" isOrdered="true">
641 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
642 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Dependent-continued_studies-_defaultValue">
643 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
644 </defaultValue>
645 </ownedAttribute>
646 <ownedAttribute xmi:type="uml:Property" xmi:id="Dependent-expense" name="expense" type="Expense" association="_packagedElement.31">
647 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Dependent-expense-_lowerValue"/>
648 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependent-expense-_upperValue" value="*"/>
649 </ownedAttribute>
650 <ownedAttribute xmi:type="uml:Property" xmi:id="_ysz6EInjEeS51qv-dTzbfg" name="allowances" type="External_Allowance" aggregation="composite" association="_ys1IMInjEeS51qv-dTzbfg">
651 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ysz6EYnjEeS51qv-dTzbfg"/>
652 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ysz6EonjEeS51qv-dTzbfg" value="*"/>
653 </ownedAttribute>
654 <ownedAttribute xmi:type="uml:Property" xmi:id="_tLMGQZASEeSrKuFMY7nEzg" name="household" type="Household" association="_tLMGQJASEeSrKuFMY7nEzg">
655 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tLMGQpASEeSrKuFMY7nEzg"/>
656 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tLMGQ5ASEeSrKuFMY7nEzg" value="1"/>
657 </ownedAttribute>
658 <ownedAttribute xmi:type="uml:Property" xmi:id="_suTZgJLREeSsDc98mGjcqQ" name="from_agent" type="FromAgent" association="_suXD4JLREeSsDc98mGjcqQ">
659 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_suTZgZLREeSsDc98mGjcqQ"/>
660 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_suTZgpLREeSsDc98mGjcqQ" value="1"/>
661 </ownedAttribute>
662 <ownedOperation xmi:type="uml:Operation" xmi:id="Dependent-compute_if_dependent_receives_allowances_eligible_for_CIM" name="compute_if_dependent_receives_allowances_eligible_for_CIM" visibility="public">
663 <ownedParameter xmi:type="uml:Parameter" xmi:id="Dependent-compute_if_dependent_receives_allowances_eligible_for_CIM-_ownedParameter.0" isOrdered="true" direction="return">
664 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
665 </ownedParameter>
666 </ownedOperation>
667 <ownedOperation xmi:type="uml:Operation" xmi:id="Dependent-compute_if_dependent_receives_allowances_eligible_for_DS" name="compute_if_dependent_receives_allowances_eligible_for_DS" visibility="public">
668 <ownedParameter xmi:type="uml:Parameter" xmi:id="Dependent-compute_if_dependent_receives_allowances_eligible_for_DS-_ownedParameter.0" isOrdered="true" direction="return">
669 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
670 </ownedParameter>
671 </ownedOperation>
672 <ownedOperation xmi:type="uml:Operation" xmi:id="Dependent-compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care" name="compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care" visibility="public">
673 <ownedParameter xmi:type="uml:Parameter" xmi:id="Dependent-compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care-_ownedParameter.0" isOrdered="true" direction="return">
674 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
675 </ownedParameter>
676 </ownedOperation>
677 <ownedOperation xmi:type="uml:Operation" xmi:id="Dependent-is_dependent_following_continued_studies" name="is_dependent_following_continued_studies" visibility="public">
678 <ownedParameter xmi:type="uml:Parameter" xmi:id="Dependent-is_dependent_following_continued_studies-_ownedParameter.0" isOrdered="true" direction="return">
679 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
680 </ownedParameter>
681 <ownedParameter xmi:type="uml:Parameter" xmi:id="Dependent-is_dependent_following_continued_studies-IN_continued_studies" name="IN_continued_studies" isOrdered="true">
682 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
683 </ownedParameter>
684 </ownedOperation>
685 </packagedElement>
686 <packagedElement xmi:type="uml:Class" xmi:id="Household" name="Household">
687 <ownedAttribute xmi:type="uml:Property" xmi:id="_oAwqYIXuEeSLiOAbrK2uyQ" name="parents" type="Legal_Union_Record" aggregation="composite" association="_oA2J8IXuEeSLiOAbrK2uyQ">
688 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oAwqYYXuEeSLiOAbrK2uyQ" value="1"/>
689 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oAwqYoXuEeSLiOAbrK2uyQ" value="1"/>
690 </ownedAttribute>
691 <ownedAttribute xmi:type="uml:Property" xmi:id="_tLDjYJASEeSrKuFMY7nEzg" name="children" type="Dependent" aggregation="composite" association="_tLMGQJASEeSrKuFMY7nEzg">
692 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tLDjYZASEeSrKuFMY7nEzg"/>
693 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tLDjYpASEeSrKuFMY7nEzg" value="*"/>
694 </ownedAttribute>
695 <ownedAttribute xmi:type="uml:Property" xmi:id="_Rt8M4EzqEeaVApgXPK28xA" name="id1" isID="true">
696 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
697 </ownedAttribute>
698 <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Vn4jsIXwEeSLiOAbrK2uyQ" client="Household" supplier="_1gja4IXvEeSLiOAbrK2uyQ" contract="_1gja4IXvEeSLiOAbrK2uyQ"/>
699 </packagedElement>
700 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.27" memberEnd="Tax_Payer-dependents Dependent-responsible_person"/>
701 <packagedElement xmi:type="uml:Class" xmi:id="Expense" name="Expense">
702 <ownedAttribute xmi:type="uml:Property" xmi:id="Expense-declared_amount" name="declared_amount" visibility="public" isOrdered="true">
703 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
704 </ownedAttribute>
705 <ownedAttribute xmi:type="uml:Property" xmi:id="Expense-expense_purpose" name="expense_purpose" visibility="public" type="Expense_Purpose" isOrdered="true">
706 <defaultValue xmi:type="uml:InstanceValue" xmi:id="Expense-expense_purpose-_defaultValue" type="Expense_Purpose" instance="Expense_Purpose-OTHER"/>
707 </ownedAttribute>
708 <ownedAttribute xmi:type="uml:Property" xmi:id="Expense-dependent" name="dependent" type="Dependent" isOrdered="true" association="_packagedElement.31">
709 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expense-dependent-_lowerValue"/>
710 </ownedAttribute>
711 <ownedAttribute xmi:type="uml:Property" xmi:id="Expense-year_expense_was_incurred_in" name="year_expense_was_incurred_in" visibility="public" isOrdered="true">
712 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
713 </ownedAttribute>
714 <ownedAttribute xmi:type="uml:Property" xmi:id="_Mr8oUJN2EeSS6JjHMC2a3A" name="beneficiary" type="Physical_Person" association="_Mr92cJN2EeSS6JjHMC2a3A">
715 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mr8oUZN2EeSS6JjHMC2a3A"/>
716 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mr8oUpN2EeSS6JjHMC2a3A" value="1"/>
717 </ownedAttribute>
718 <ownedAttribute xmi:type="uml:Property" xmi:id="_bpLVMZQ9EeSMZqrJQmR94g" name="from_agent" type="FromAgent" aggregation="composite" association="_bpLVMJQ9EeSMZqrJQmR94g">
719 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bpLVMpQ9EeSMZqrJQmR94g"/>
720 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpLVM5Q9EeSMZqrJQmR94g" value="1"/>
721 </ownedAttribute>
722 <ownedAttribute xmi:type="uml:Property" xmi:id="Expense-income" name="income" type="Income" isOrdered="true" association="_packagedElement.50">
723 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expense-income-_lowerValue" value="1"/>
724 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1aYooOKNEeSbvsXPkSdkbw" value="1"/>
725 </ownedAttribute>
726 <ownedAttribute xmi:type="uml:Property" xmi:id="_dGLbAEzrEeaVApgXPK28xA" name="id4" isID="true">
727 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
728 </ownedAttribute>
729 </packagedElement>
730 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.31" memberEnd="Expense-dependent Dependent-expense"/>
731 <packagedElement xmi:type="uml:Class" xmi:id="Income" name="Income" isAbstract="true">
732 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-income_amount" name="income_amount" visibility="package" isUnique="false">
733 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-income_amount-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
734 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-income_amount-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="derivation" value="let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in&#xA;non_null_amounts->collect(amount)->min()"/>
735 </eAnnotations>
736 <ownedComment xmi:type="uml:Comment" xmi:id="Income-income_amount-_ownedComment.0" annotatedElement="Income-income_amount">
737 <body>let non_null_amounts:OrderedSet(Income_Detail)=self.details->select(det:Income_Detail|det.amount>0)->asOrderedSet() in
738non_null_amounts->collect(amount)->min()
</body>
739 </ownedComment>
740 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
741 </ownedAttribute>
742 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-income_type" name="income_type" type="Income_Type" isOrdered="true" aggregation="composite" association="_packagedElement.34"/>
743 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-start_date_within_taxation_year" name="start_date_within_taxation_year" visibility="public" isUnique="false">
744 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDate"/>
745 </ownedAttribute>
746 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-start_date_of_contract" name="start_date_of_contract" visibility="public" isUnique="false">
747 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDate"/>
748 </ownedAttribute>
749 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-end_date_within_taxation_year" name="end_date_within_taxation_year" visibility="public" isUnique="false">
750 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDate"/>
751 </ownedAttribute>
752 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-tax_card" name="tax_card" type="Tax_Card" isOrdered="true" aggregation="composite" association="_packagedElement.49">
753 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Income-tax_card-_lowerValue"/>
754 </ownedAttribute>
755 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-expenses" name="expenses" type="Expense" aggregation="composite" association="_packagedElement.50">
756 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Income-expenses-_lowerValue"/>
757 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Income-expenses-_upperValue" value="*"/>
758 </ownedAttribute>
759 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-tax_liability" name="tax_liability" visibility="public" isOrdered="true">
760 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
761 </ownedAttribute>
762 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-taxPayer" name="taxPayer" type="Tax_Payer" association="_packagedElement.51"/>
763 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-year" name="year" visibility="public" isOrdered="true" isUnique="false">
764 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
765 </ownedAttribute>
766 <ownedAttribute xmi:type="uml:Property" xmi:id="Income-details" name="details" type="Income_Detail" isOrdered="true" aggregation="composite" association="_packagedElement.53">
767 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Income-details-_lowerValue" value="12"/>
768 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Income-details-_upperValue" value="12"/>
769 </ownedAttribute>
770 <ownedAttribute xmi:type="uml:Property" xmi:id="_X0tv8Ld6EeSVy4vFID_wcg" name="num" visibility="public" isID="true">
771 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
772 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_djq20Ld6EeSVy4vFID_wcg" value="1"/>
773 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_djsE8Ld6EeSVy4vFID_wcg" value="1"/>
774 </ownedAttribute>
775 <ownedAttribute xmi:type="uml:Property" xmi:id="_LlDswDn-EeWS2a--AKriEw" name="start_year">
776 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
777 </ownedAttribute>
778 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-compute_duration_of_contract" name="compute_duration_of_contract" visibility="public">
779 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-compute_duration_of_contract-_ownedParameter.0" isOrdered="true" direction="return">
780 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigInteger"/>
781 </ownedParameter>
782 </ownedOperation>
783 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-compute_duration_of_contract_within_taxation_year" name="compute_duration_of_contract_within_taxation_year" visibility="public">
784 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-compute_duration_of_contract_within_taxation_year-_ownedParameter.0" isOrdered="true" direction="return">
785 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigInteger"/>
786 </ownedParameter>
787 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-compute_duration_of_contract_within_taxation_year-IN_date" name="IN_date" isOrdered="true">
788 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDate"/>
789 </ownedParameter>
790 </ownedOperation>
791 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-prorata_worked_months" name="prorata_worked_months" visibility="public">
792 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-prorata_worked_months-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
793 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-prorata_worked_months-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="self.details->select(is_worked)->size()"/>
794 </eAnnotations>
795 <ownedComment xmi:type="uml:Comment" xmi:id="Income-prorata_worked_months-_ownedComment.0" annotatedElement="Income-prorata_worked_months">
796 <body>operation def</body>
797 </ownedComment>
798 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-prorata_worked_months-_ownedParameter.0" isOrdered="true" direction="return">
799 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigInteger"/>
800 </ownedParameter>
801 </ownedOperation>
802 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-prorata_worked_days" name="prorata_worked_days" visibility="public">
803 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-prorata_worked_days-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
804 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-prorata_worked_days-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="let a:Set(Income_Detail)=self.details->select(is_worked) in &#xA;&#x9;&#x9;&#x9;a.worked_days->sum().mod(25)"/>
805 </eAnnotations>
806 <ownedComment xmi:type="uml:Comment" xmi:id="Income-prorata_worked_days-_ownedComment.0" annotatedElement="Income-prorata_worked_days">
807 <body>operation def</body>
808 </ownedComment>
809 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-prorata_worked_days-_ownedParameter.0" isOrdered="true" direction="return">
810 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigInteger"/>
811 </ownedParameter>
812 </ownedOperation>
813 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-prorata_period" name="prorata_period" visibility="public">
814 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-prorata_period-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
815 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-prorata_period-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="&#xA;&#x9;&#x9;&#x9;let nb_months:Integer=self.prorata_worked_months()in&#xA;&#x9;&#x9;&#x9;let nb_days:Integer=self.prorata_worked_days()in&#xA;&#x9;&#x9;&#x9; if(nb_months=12) then&#xA;&#x9;&#x9;&#x9;1&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;nb_months/12 + nb_days/300&#xA;&#x9;&#x9;&#x9;endif"/>
816 </eAnnotations>
817 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-prorata_period-_ownedParameter.0" isOrdered="true" direction="return">
818 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
819 </ownedParameter>
820 </ownedOperation>
821 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-income_per_day" name="income_per_day" visibility="public">
822 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-income_per_day-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
823 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-income_per_day-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="income_per_year()/300"/>
824 </eAnnotations>
825 <ownedComment xmi:type="uml:Comment" xmi:id="Income-income_per_day-_ownedComment.0" annotatedElement="Income-income_per_day">
826 <body>operation deft</body>
827 </ownedComment>
828 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-income_per_day-_ownedParameter.0" isOrdered="true" direction="return">
829 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
830 </ownedParameter>
831 </ownedOperation>
832 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-income_per_month" name="income_per_month" visibility="public">
833 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-income_per_month-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
834 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-income_per_month-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="income_per_year()/12"/>
835 </eAnnotations>
836 <ownedComment xmi:type="uml:Comment" xmi:id="Income-income_per_month-_ownedComment.0" annotatedElement="Income-income_per_month">
837 <body>operation deft</body>
838 </ownedComment>
839 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-income_per_month-_ownedParameter.0" isOrdered="true" direction="return">
840 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
841 </ownedParameter>
842 </ownedOperation>
843 <ownedOperation xmi:type="uml:Operation" xmi:id="Income-income_per_year" name="income_per_year" visibility="public">
844 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income-income_per_year-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
845 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income-income_per_year-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="&#x9;&#x9;&#x9;let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;involved_details.amount->sum()"/>
846 </eAnnotations>
847 <ownedComment xmi:type="uml:Comment" xmi:id="Income-income_per_year-_ownedComment.0" annotatedElement="Income-income_per_year">
848 <body>operation deft</body>
849 </ownedComment>
850 <ownedParameter xmi:type="uml:Parameter" xmi:id="Income-income_per_year-_ownedParameter.0" isOrdered="true" direction="return">
851 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
852 </ownedParameter>
853 </ownedOperation>
854 <ownedOperation xmi:type="uml:Operation" xmi:id="_XgXlMDofEeWWiJDOmt7xhQ" name="getDurationInyears">
855 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gXYpMDofEeWWiJDOmt7xhQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
856 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iP7fMDofEeWWiJDOmt7xhQ" key="body" value="&#xA;&#x9;&#x9;&#x9;if(self.income_type.oclIsTypeOf(Pensions_and_Annuities_Income)) then &#xA;&#x9;&#x9;&#x9;if(start_year.oclIsUndefined())then&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let res:Integer=self.taxPayer.from_agent.taxation_year-start_year in&#xA;&#x9;&#x9;&#x9;if(res&lt;0) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;res&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif"/>
857 </eAnnotations>
858 <ownedParameter xmi:type="uml:Parameter" xmi:id="_a5VsIDofEeWWiJDOmt7xhQ" direction="return">
859 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
860 </ownedParameter>
861 </ownedOperation>
862 </packagedElement>
863 <packagedElement xmi:type="uml:Class" xmi:id="Income_Type" name="Income_Type" isAbstract="true">
864 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Type-income" name="income" type="Income" isOrdered="true" association="_packagedElement.34"/>
865 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Type-subjectToWithholdingTax" name="subjectToWithholdingTax" visibility="public" isOrdered="true" isDerived="true">
866 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Income_Type-subjectToWithholdingTax-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
867 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Income_Type-subjectToWithholdingTax-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="derivation" value="&#xA;&#x9;&#x9;&#x9;&#x9;self.income.tax_card->notEmpty()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
868 </eAnnotations>
869 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
870 </ownedAttribute>
871 <ownedAttribute xmi:type="uml:Property" xmi:id="_DQ8-4EzqEeaVApgXPK28xA" name="id8" isID="true">
872 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
873 </ownedAttribute>
874 </packagedElement>
875 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.34" memberEnd="Income-income_type Income_Type-income"/>
876 <packagedElement xmi:type="uml:Class" xmi:id="Tax_Card" name="Tax_Card">
877 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-card_identifier" name="card_identifier" visibility="public" isOrdered="true" isID="true">
878 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
879 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xd0PYJHnEeWJZtt1pWzjeQ"/>
880 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xd1dgJHnEeWJZtt1pWzjeQ" value="1"/>
881 </ownedAttribute>
882 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-tax_card_type" name="tax_card_type" visibility="public" type="Tax_Card_Type" isOrdered="true" isDerived="true">
883 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Tax_Card-tax_card_type-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
884 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Tax_Card-tax_card_type-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="derivation" value="if(self.income.taxPayer.incomes->size()=1) then &#xA;Tax_Card_Type::Principal&#xA;&#x9;else&#xA;&#x9;&#x9;let all_incomes:OrderedSet(Income)=self.income.taxPayer.incomes->select(inc:Income| inc.income_amount= self.income.taxPayer.incomes.income_amount->max())->asOrderedSet() in&#xA;&#x9;&#x9;let bigest_income:Income= all_incomes->first() in&#xA;&#x9;&#x9;&#x9; if(bigest_income=self.income) then&#xA;&#x9;&#x9;&#x9; &#x9; Tax_Card_Type::Principal&#xA;&#x9;&#x9;&#x9; else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;Tax_Card_Type::Additional&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
885 </eAnnotations>
886 </ownedAttribute>
887 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-tax_office" name="tax_office" visibility="public" type="Tax_Office" isOrdered="true"/>
888 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-valid_from_date" name="valid_from_date" visibility="public" isUnique="false">
889 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDate"/>
890 </ownedAttribute>
891 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-valid_until_date" name="valid_until_date" visibility="public" isUnique="false">
892 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDate"/>
893 </ownedAttribute>
894 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-percentage_of_witholding" name="percentage_of_witholding" visibility="public" isOrdered="true">
895 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
896 </ownedAttribute>
897 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-tax_payers_name_surname" name="tax_payers_name_surname" visibility="public">
898 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
899 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Tax_Card-tax_payers_name_surname-_lowerValue"/>
900 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Tax_Card-tax_payers_name_surname-_upperValue" value="*"/>
901 </ownedAttribute>
902 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-tax_payers_partner_name_surname" name="tax_payers_partner_name_surname" visibility="public">
903 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
904 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Tax_Card-tax_payers_partner_name_surname-_lowerValue"/>
905 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Tax_Card-tax_payers_partner_name_surname-_upperValue" value="*"/>
906 </ownedAttribute>
907 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-tax_payers_address" name="tax_payers_address" type="Address" isOrdered="true">
908 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tnXU0EK4EeaQU66UNd8S3g"/>
909 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tnX74EK4EeaQU66UNd8S3g" value="1"/>
910 </ownedAttribute>
911 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-jobs_Employer_SSNo" name="jobs_Employer_SSNo" visibility="public" isUnique="false">
912 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
913 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3tgkwELAEeaQU66UNd8S3g"/>
914 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3thL0ELAEeaQU66UNd8S3g" value="1"/>
915 </ownedAttribute>
916 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-jobs_employers_name" name="jobs_employers_name" visibility="public" isUnique="false">
917 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
918 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5qhrEELAEeaQU66UNd8S3g"/>
919 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5qhrEULAEeaQU66UNd8S3g" value="1"/>
920 </ownedAttribute>
921 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-jobs_activity_type" name="jobs_activity_type" visibility="public" type="Job_Activity" isOrdered="true"/>
922 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-jobs_place_of_work" name="jobs_place_of_work" visibility="public" type="Town" isOrdered="true"/>
923 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_FD_daily" name="deduction_FD_daily" visibility="public" isUnique="false">
924 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
925 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_FD_daily-_defaultValue">
926 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
927 </defaultValue>
928 </ownedAttribute>
929 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_FD_monthly" name="deduction_FD_monthly" visibility="public" isUnique="false">
930 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
931 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_FD_monthly-_defaultValue">
932 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
933 </defaultValue>
934 </ownedAttribute>
935 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_FD_yearly" name="deduction_FD_yearly" visibility="public" isOrdered="true" isUnique="false">
936 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
937 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_FD_yearly-_defaultValue">
938 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
939 </defaultValue>
940 </ownedAttribute>
941 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_AC_daily" name="deduction_AC_daily" visibility="public" isOrdered="true" isUnique="false">
942 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
943 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_AC_daily-_defaultValue">
944 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
945 </defaultValue>
946 </ownedAttribute>
947 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_AC_monthly" name="deduction_AC_monthly" visibility="public" isOrdered="true" isUnique="false">
948 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
949 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_AC_monthly-_defaultValue">
950 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
951 </defaultValue>
952 </ownedAttribute>
953 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_AC_yearly" name="deduction_AC_yearly" visibility="public" isOrdered="true" isUnique="false">
954 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
955 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_AC_yearly-_defaultValue">
956 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
957 </defaultValue>
958 </ownedAttribute>
959 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_CE_daily" name="deduction_CE_daily" visibility="public" isOrdered="true" isUnique="false">
960 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
961 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_CE_daily-_defaultValue">
962 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
963 </defaultValue>
964 </ownedAttribute>
965 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_CE_monthly" name="deduction_CE_monthly" visibility="public" isOrdered="true" isUnique="false">
966 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
967 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_CE_monthly-_defaultValue">
968 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
969 </defaultValue>
970 </ownedAttribute>
971 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_CE_yearly" name="deduction_CE_yearly" visibility="public" isOrdered="true" isUnique="false">
972 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
973 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_CE_yearly-_defaultValue">
974 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
975 </defaultValue>
976 </ownedAttribute>
977 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_CE_invalidity_yearly" name="deduction_CE_invalidity_yearly" visibility="public" isOrdered="true" isUnique="false">
978 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
979 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_CE_invalidity_yearly-_defaultValue">
980 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
981 </defaultValue>
982 </ownedAttribute>
983 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_DS_daily" name="deduction_DS_daily" visibility="public" isOrdered="true" isUnique="false">
984 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
985 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_DS_daily-_defaultValue">
986 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
987 </defaultValue>
988 </ownedAttribute>
989 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_DS_monthly" name="deduction_DS_monthly" visibility="public" isOrdered="true">
990 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
991 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_DS_monthly-_defaultValue">
992 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
993 </defaultValue>
994 </ownedAttribute>
995 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_DS_yearly" name="deduction_DS_yearly" visibility="public" isOrdered="true" isUnique="false">
996 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
997 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_DS_yearly-_defaultValue">
998 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
999 </defaultValue>
1000 </ownedAttribute>
1001 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_FO_daily" name="deduction_FO_daily" visibility="public" isOrdered="true" isUnique="false">
1002 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1003 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_FO_daily-_defaultValue">
1004 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1005 </defaultValue>
1006 </ownedAttribute>
1007 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_FO_monthly" name="deduction_FO_monthly" visibility="public" isOrdered="true" isUnique="false">
1008 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1009 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_FO_monthly-_defaultValue">
1010 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1011 </defaultValue>
1012 </ownedAttribute>
1013 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-deduction_FO_yearly" name="deduction_FO_yearly" visibility="public" isOrdered="true" isUnique="false">
1014 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1015 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-deduction_FO_yearly-_defaultValue">
1016 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1017 </defaultValue>
1018 </ownedAttribute>
1019 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIS_daily" name="credit_CIS_daily" visibility="public" isOrdered="true" isUnique="false">
1020 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1021 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIS_daily-_defaultValue">
1022 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1023 </defaultValue>
1024 </ownedAttribute>
1025 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIS_monthly" name="credit_CIS_monthly" visibility="public" isOrdered="true" isUnique="false">
1026 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1027 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIS_monthly-_defaultValue">
1028 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1029 </defaultValue>
1030 </ownedAttribute>
1031 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIP_monthly" name="credit_CIP_monthly" visibility="public" isOrdered="true" isUnique="false">
1032 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1033 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIP_monthly-_defaultValue">
1034 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1035 </defaultValue>
1036 </ownedAttribute>
1037 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIP_yearly" name="credit_CIP_yearly" visibility="public" isOrdered="true" isUnique="false">
1038 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1039 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIP_yearly-_defaultValue">
1040 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1041 </defaultValue>
1042 </ownedAttribute>
1043 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIM_daily" name="credit_CIM_daily" visibility="public" isOrdered="true" isUnique="false">
1044 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1045 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIM_daily-_defaultValue">
1046 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1047 </defaultValue>
1048 </ownedAttribute>
1049 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIM_monthly" name="credit_CIM_monthly" visibility="public" isOrdered="true" isUnique="false">
1050 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1051 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIM_monthly-_defaultValue">
1052 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1053 </defaultValue>
1054 </ownedAttribute>
1055 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-credit_CIS_yearly" name="credit_CIS_yearly" visibility="public" isOrdered="true" isUnique="false">
1056 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1057 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Tax_Card-credit_CIS_yearly-_defaultValue">
1058 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1059 </defaultValue>
1060 </ownedAttribute>
1061 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-validity" name="validity" visibility="public" isOrdered="true">
1062 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1063 </ownedAttribute>
1064 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-income_Tax_Credit" name="income_Tax_Credit" type="Income_Tax_Credit" association="_packagedElement.43">
1065 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Tax_Card-income_Tax_Credit-_lowerValue"/>
1066 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Tax_Card-income_Tax_Credit-_upperValue" value="*"/>
1067 </ownedAttribute>
1068 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-previous" name="previous" type="Tax_Card" isOrdered="true" association="_packagedElement.48">
1069 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Tax_Card-previous-_lowerValue"/>
1070 </ownedAttribute>
1071 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-current_tax_card" name="current_tax_card" type="Tax_Card" isOrdered="true" association="_packagedElement.48">
1072 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uUHzgELAEeaQU66UNd8S3g"/>
1073 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uUIakELAEeaQU66UNd8S3g" value="1"/>
1074 </ownedAttribute>
1075 <ownedAttribute xmi:type="uml:Property" xmi:id="Tax_Card-income" name="income" type="Income" isOrdered="true" association="_packagedElement.49"/>
1076 <ownedAttribute xmi:type="uml:Property" xmi:id="_SFQCkJD1EeSMh_pkRTiRPQ" name="credit_CIM_yearly">
1077 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1078 </ownedAttribute>
1079 <ownedAttribute xmi:type="uml:Property" xmi:id="_s_isgJNrEeSZisr9dyMXhQ" name="deduction_DS_Alimony_yearly">
1080 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1081 </ownedAttribute>
1082 <ownedAttribute xmi:type="uml:Property" xmi:id="_iIM5AJQ7EeSMZqrJQmR94g" name="deduction_DS_Debt_yearly">
1083 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1084 </ownedAttribute>
1085 <ownedOperation xmi:type="uml:Operation" xmi:id="_E3gpkIxNEeSQ-eW2JAQJHg" name="getSumDeductionsYear">
1086 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OxHzAIxNEeSQ-eW2JAQJHg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1087 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Use-MIxNEeSQ-eW2JAQJHg" key="body" value="deduction_FO_yearly+deduction_FD_yearly+deduction_CE_invalidity_yearly"/>
1088 </eAnnotations>
1089 <ownedParameter xmi:type="uml:Parameter" xmi:id="_LKXuwIxNEeSQ-eW2JAQJHg" direction="return">
1090 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1091 </ownedParameter>
1092 </ownedOperation>
1093 <ownedOperation xmi:type="uml:Operation" xmi:id="_r7hdAJD1EeSMh_pkRTiRPQ" name="getSumCreditsYear">
1094 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xO94JD1EeSMh_pkRTiRPQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1095 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2F9QsJD1EeSMh_pkRTiRPQ" key="body" value="credit_CIS_yearly+credit_CIP_yearly"/>
1096 </eAnnotations>
1097 <ownedParameter xmi:type="uml:Parameter" xmi:id="_xL9b4JD1EeSMh_pkRTiRPQ" direction="return">
1098 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1099 </ownedParameter>
1100 </ownedOperation>
1101 </packagedElement>
1102 <packagedElement xmi:type="uml:Class" xmi:id="Income_Tax_Credit" name="Income_Tax_Credit">
1103 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-grantedBy" name="grantedBy" visibility="public" type="Grantor" isOrdered="true"/>
1104 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-taxPayer" name="taxPayer" type="Tax_Payer" isOrdered="true">
1105 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Income_Tax_Credit-taxPayer-_lowerValue"/>
1106 </ownedAttribute>
1107 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-tax_year" name="tax_year" visibility="public" isOrdered="true">
1108 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
1109 </ownedAttribute>
1110 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-yearly" name="yearly" visibility="public" isOrdered="true">
1111 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1112 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Income_Tax_Credit-yearly-_defaultValue" value="300.0">
1113 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1114 </defaultValue>
1115 </ownedAttribute>
1116 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-monthly" name="monthly" visibility="public" isOrdered="true">
1117 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1118 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Income_Tax_Credit-monthly-_defaultValue" value="25.0">
1119 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1120 </defaultValue>
1121 </ownedAttribute>
1122 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-daily" name="daily" visibility="public" isOrdered="true">
1123 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1124 <defaultValue xmi:type="uml:LiteralReal" xmi:id="Income_Tax_Credit-daily-_defaultValue" value="1.0">
1125 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1126 </defaultValue>
1127 </ownedAttribute>
1128 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Tax_Credit-taxation_Frame" name="taxation_Frame" type="Tax_Card" isOrdered="true" association="_packagedElement.43">
1129 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Income_Tax_Credit-taxation_Frame-_lowerValue"/>
1130 </ownedAttribute>
1131 <ownedAttribute xmi:type="uml:Property" xmi:id="_C1HFgEzsEeaVApgXPK28xA" name="id7" isID="true">
1132 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1133 </ownedAttribute>
1134 </packagedElement>
1135 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.43" memberEnd="Income_Tax_Credit-taxation_Frame Tax_Card-income_Tax_Credit"/>
1136 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.48" memberEnd="Tax_Card-current_tax_card Tax_Card-previous"/>
1137 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.49" memberEnd="Income-tax_card Tax_Card-income"/>
1138 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.50" memberEnd="Income-expenses Expense-income"/>
1139 <packagedElement xmi:type="uml:Association" xmi:id="_bpLVMJQ9EeSMZqrJQmR94g" memberEnd="_bpLVMZQ9EeSMZqrJQmR94g _bpKHEJQ9EeSMZqrJQmR94g"/>
1140 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.51" memberEnd="Tax_Payer-incomes Income-taxPayer"/>
1141 <packagedElement xmi:type="uml:Class" xmi:id="Income_Detail" name="Income_Detail">
1142 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Detail-month" name="month" visibility="public" isUnique="false">
1143 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
1144 </ownedAttribute>
1145 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Detail-amount" name="amount" visibility="public" isOrdered="true">
1146 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1147 </ownedAttribute>
1148 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Detail-is_worked" name="is_worked" visibility="public" isOrdered="true">
1149 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1150 </ownedAttribute>
1151 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Detail-distance" name="distance" visibility="public" isOrdered="true">
1152 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1153 </ownedAttribute>
1154 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Detail-worked_days" name="worked_days" visibility="public" isOrdered="true">
1155 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
1156 </ownedAttribute>
1157 <ownedAttribute xmi:type="uml:Property" xmi:id="Income_Detail-income" name="income" type="Income" isOrdered="true" association="_packagedElement.53"/>
1158 <ownedAttribute xmi:type="uml:Property" xmi:id="_nhySMI9sEeSET8mBcpxzqQ" name="is_contributing_CNS">
1159 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1160 </ownedAttribute>
1161 <ownedAttribute xmi:type="uml:Property" xmi:id="_rG-3QI9sEeSET8mBcpxzqQ" name="is_contributing_pension">
1162 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1163 </ownedAttribute>
1164 <ownedAttribute xmi:type="uml:Property" xmi:id="_5ctywEzrEeaVApgXPK28xA" name="id5" isID="true">
1165 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1166 </ownedAttribute>
1167 </packagedElement>
1168 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.53" memberEnd="Income-details Income_Detail-income"/>
1169 <packagedElement xmi:type="uml:Class" xmi:id="FromLaw" name="FromLaw">
1170 <ownedAttribute xmi:type="uml:Property" xmi:id="FromLaw-taxPayer" name="taxPayer" type="Tax_Payer" isOrdered="true" association="_packagedElement.56"/>
1171 <ownedAttribute xmi:type="uml:Property" xmi:id="_t3FzcEzrEeaVApgXPK28xA" name="id" isID="true">
1172 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1173 </ownedAttribute>
1174 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-CE_INVALIDITY_FLAT_RATE_TYPE_E" name="CE_INVALIDITY_FLAT_RATE_TYPE_E" visibility="public">
1175 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-CE_INVALIDITY_FLAT_RATE_TYPE_E-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1176 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-CE_INVALIDITY_FLAT_RATE_TYPE_E-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="1455"/>
1177 </eAnnotations>
1178 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-CE_INVALIDITY_FLAT_RATE_TYPE_E-_ownedParameter.0" isOrdered="true" direction="return">
1179 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1180 </ownedParameter>
1181 </ownedOperation>
1182 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-CIP_MINIMUM_INCOME_MONTH" name="CIP_MINIMUM_INCOME_MONTH" visibility="public">
1183 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-CIP_MINIMUM_INCOME_MONTH-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1184 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-CIP_MINIMUM_INCOME_MONTH-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="25"/>
1185 </eAnnotations>
1186 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-CIP_MINIMUM_INCOME_MONTH-_ownedParameter.0" isOrdered="true" direction="return">
1187 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1188 </ownedParameter>
1189 </ownedOperation>
1190 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-CIP_MINIMUM_INCOME_YEAR" name="CIP_MINIMUM_INCOME_YEAR" visibility="public">
1191 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-CIP_MINIMUM_INCOME_YEAR-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1192 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-CIP_MINIMUM_INCOME_YEAR-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="300"/>
1193 </eAnnotations>
1194 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-CIP_MINIMUM_INCOME_YEAR-_ownedParameter.0" isOrdered="true" direction="return">
1195 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1196 </ownedParameter>
1197 </ownedOperation>
1198 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-FLAT_RATE_CIP_YEARLY" name="FLAT_RATE_CIP_YEARLY" visibility="public">
1199 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-FLAT_RATE_CIP_YEARLY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1200 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-FLAT_RATE_CIP_YEARLY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="300"/>
1201 </eAnnotations>
1202 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-FLAT_RATE_CIP_YEARLY-_ownedParameter.0" isOrdered="true" direction="return">
1203 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1204 </ownedParameter>
1205 </ownedOperation>
1206 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-FLAT_RATE_PER_UNIT" name="FLAT_RATE_PER_UNIT" visibility="public">
1207 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-FLAT_RATE_PER_UNIT-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1208 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-FLAT_RATE_PER_UNIT-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="99"/>
1209 </eAnnotations>
1210 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-FLAT_RATE_PER_UNIT-_ownedParameter.0" isOrdered="true" direction="return">
1211 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1212 </ownedParameter>
1213 </ownedOperation>
1214 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-MAXIMUM_DISTANCE_IN_UNITS" name="MAXIMUM_DISTANCE_IN_UNITS" visibility="public">
1215 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-MAXIMUM_DISTANCE_IN_UNITS-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1216 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-MAXIMUM_DISTANCE_IN_UNITS-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="30"/>
1217 </eAnnotations>
1218 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-MAXIMUM_DISTANCE_IN_UNITS-_ownedParameter.0" isOrdered="true" direction="return">
1219 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1220 </ownedParameter>
1221 </ownedOperation>
1222 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-MINIMUM_DISTANCE_IN_UNITS" name="MINIMUM_DISTANCE_IN_UNITS" visibility="public">
1223 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-MINIMUM_DISTANCE_IN_UNITS-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1224 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-MINIMUM_DISTANCE_IN_UNITS-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="4"/>
1225 </eAnnotations>
1226 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-MINIMUM_DISTANCE_IN_UNITS-_ownedParameter.0" isOrdered="true" direction="return">
1227 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1228 </ownedParameter>
1229 </ownedOperation>
1230 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-FLAT_MAXIMUM_FD" name="FLAT_MAXIMUM_FD" visibility="public">
1231 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-FLAT_MAXIMUM_FD-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1232 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-FLAT_MAXIMUM_FD-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="2574"/>
1233 </eAnnotations>
1234 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-FLAT_MAXIMUM_FD-_ownedParameter.0" isOrdered="true" direction="return">
1235 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1236 </ownedParameter>
1237 </ownedOperation>
1238 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-CIS_MINIMUM_INCOME_DAY" name="CIS_MINIMUM_INCOME_DAY" visibility="public">
1239 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-CIS_MINIMUM_INCOME_DAY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1240 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-CIS_MINIMUM_INCOME_DAY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="3.12"/>
1241 </eAnnotations>
1242 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-CIS_MINIMUM_INCOME_DAY-_ownedParameter.0" isOrdered="true" direction="return">
1243 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1244 </ownedParameter>
1245 </ownedOperation>
1246 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-CIS_MINIMUM_INCOME_MONTH" name="CIS_MINIMUM_INCOME_MONTH" visibility="public">
1247 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-CIS_MINIMUM_INCOME_MONTH-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1248 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-CIS_MINIMUM_INCOME_MONTH-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="78"/>
1249 </eAnnotations>
1250 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-CIS_MINIMUM_INCOME_MONTH-_ownedParameter.0" isOrdered="true" direction="return">
1251 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1252 </ownedParameter>
1253 </ownedOperation>
1254 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-CIS_MINIMUM_INCOME_YEAR" name="CIS_MINIMUM_INCOME_YEAR" visibility="public">
1255 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-CIS_MINIMUM_INCOME_YEAR-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1256 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-CIS_MINIMUM_INCOME_YEAR-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="936"/>
1257 </eAnnotations>
1258 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-CIS_MINIMUM_INCOME_YEAR-_ownedParameter.0" isOrdered="true" direction="return">
1259 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1260 </ownedParameter>
1261 </ownedOperation>
1262 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-FLAT_RATE_CIS_DAILY" name="FLAT_RATE_CIS_DAILY" visibility="public">
1263 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-FLAT_RATE_CIS_DAILY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1264 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-FLAT_RATE_CIS_DAILY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="1"/>
1265 </eAnnotations>
1266 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-FLAT_RATE_CIS_DAILY-_ownedParameter.0" isOrdered="true" direction="return">
1267 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1268 </ownedParameter>
1269 </ownedOperation>
1270 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-FLAT_RATE_CIS_MONTHLY" name="FLAT_RATE_CIS_MONTHLY" visibility="public">
1271 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-FLAT_RATE_CIS_MONTHLY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1272 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-FLAT_RATE_CIS_MONTHLY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="25"/>
1273 </eAnnotations>
1274 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-FLAT_RATE_CIS_MONTHLY-_ownedParameter.0" isOrdered="true" direction="return">
1275 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1276 </ownedParameter>
1277 </ownedOperation>
1278 <ownedOperation xmi:type="uml:Operation" xmi:id="FromLaw-FLAT_RATE_CIS_YEARLY" name="FLAT_RATE_CIS_YEARLY" visibility="public">
1279 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="FromLaw-FLAT_RATE_CIS_YEARLY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1280 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="FromLaw-FLAT_RATE_CIS_YEARLY-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="body" value="300"/>
1281 </eAnnotations>
1282 <ownedParameter xmi:type="uml:Parameter" xmi:id="FromLaw-FLAT_RATE_CIS_YEARLY-_ownedParameter.0" isOrdered="true" direction="return">
1283 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1284 </ownedParameter>
1285 </ownedOperation>
1286 <ownedOperation xmi:type="uml:Operation" xmi:id="_Agn5YH-KEeSHGtUXiBtlKg" name="get_A_for_salary_class_1">
1287 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5W3zAH-KEeSHGtUXiBtlKg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1288 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7nfx0H-KEeSHGtUXiBtlKg" key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9; endif"/>
1289 </eAnnotations>
1290 <ownedParameter xmi:type="uml:Parameter" xmi:id="_O-ZKgH-KEeSHGtUXiBtlKg" direction="return">
1291 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1292 </ownedParameter>
1293 <ownedParameter xmi:type="uml:Parameter" xmi:id="_V7zokH-KEeSHGtUXiBtlKg" name="revenu">
1294 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1295 </ownedParameter>
1296 </ownedOperation>
1297 <ownedOperation xmi:type="uml:Operation" xmi:id="_ZGhmMH-MEeSvcM-kBpd7hg" name="get_B_for_salary_class_1">
1298 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8Zk_8H-TEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1299 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IKkQH-TEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1020) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1180) then 81.9&#xA;&#x9;&#x9;else if(revenu &lt;= 1340) then 105.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1500) then 132.39000&#xA;&#x9;&#x9;else if(revenu &lt;= 1655) then 162.405&#xA;&#x9;&#x9;else if(revenu &lt;= 1815) then 195.6&#xA;&#x9;&#x9;else if(revenu &lt;= 1975) then 231.975&#xA;&#x9;&#x9;else if(revenu &lt;= 2135) then 271.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2295) then 314.265&#xA;&#x9;&#x9;else if(revenu &lt;= 2450) then 360.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2610) then 409.275&#xA;&#x9;&#x9;else if(revenu &lt;= 2770) then 461.55&#xA;&#x9;&#x9;else if(revenu &lt;= 2930) then 517.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3090) then 575.64&#xA;&#x9;&#x9;else if(revenu &lt;= 3245) then 637.455&#xA;&#x9;&#x9;else if(revenu &lt;= 3405) then 702.45&#xA;&#x9;&#x9;else if(revenu &lt;= 3565) then 770.625&#xA;&#x9;&#x9;else if(revenu &lt;= 8415) then 806.30250 &#xA;&#x9;&#x9;else 890.48583&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1300 </eAnnotations>
1301 <ownedParameter xmi:type="uml:Parameter" xmi:id="_eRz_UH-MEeSvcM-kBpd7hg" direction="return">
1302 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1303 </ownedParameter>
1304 <ownedParameter xmi:type="uml:Parameter" xmi:id="_V_TjQIBgEeSS--Tr1brRQQ" name="revenu">
1305 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1306 </ownedParameter>
1307 </ownedOperation>
1308 <ownedOperation xmi:type="uml:Operation" xmi:id="_vT3LEH-MEeSvcM-kBpd7hg" name="get_A_for_salary_class_1A">
1309 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dtq4oH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1310 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GTAjMH-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1311 </eAnnotations>
1312 <ownedParameter xmi:type="uml:Parameter" xmi:id="_xmriQH-MEeSvcM-kBpd7hg" direction="return">
1313 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1314 </ownedParameter>
1315 <ownedParameter xmi:type="uml:Parameter" xmi:id="_zZY2AH-MEeSvcM-kBpd7hg" name="revenu">
1316 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1317 </ownedParameter>
1318 </ownedOperation>
1319 <ownedOperation xmi:type="uml:Operation" xmi:id="_AxdqYH-NEeSvcM-kBpd7hg" name="get_B_for_salary_class_1A">
1320 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KVbPwH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1321 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LsqvgH-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2065) then 235.5&#xA;&#x9;&#x9;else if(revenu &lt;= 2170) then 297.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 362.79&#xA;&#x9;&#x9;else if(revenu &lt;= 2385) then 431.205&#xA;&#x9;&#x9;else if(revenu &lt;= 2490) then 502.8&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 577.575&#xA;&#x9;&#x9;else if(revenu &lt;= 2700) then 655.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2810) then 736.665&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 820.98&#xA;&#x9;&#x9;else if(revenu &lt;= 3020) then 908.475&#xA;&#x9;&#x9;else 938.7&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; &#x9;&#x9;endif"/>
1322 </eAnnotations>
1323 <ownedParameter xmi:type="uml:Parameter" xmi:id="_lh4eMH-NEeSCSdACpDfnSA" direction="return">
1324 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1325 </ownedParameter>
1326 <ownedParameter xmi:type="uml:Parameter" xmi:id="_oBhJYH-NEeSCSdACpDfnSA" name="revenu">
1327 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1328 </ownedParameter>
1329 </ownedOperation>
1330 <ownedOperation xmi:type="uml:Operation" xmi:id="_tm-9EH-NEeSCSdACpDfnSA" name="get_A_for_salary_class_2">
1331 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V8W2oH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1332 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XHtPcH-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1333 </eAnnotations>
1334 <ownedParameter xmi:type="uml:Parameter" xmi:id="_xu1jQH-NEeSCSdACpDfnSA" direction="return">
1335 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1336 </ownedParameter>
1337 <ownedParameter xmi:type="uml:Parameter" xmi:id="_6t_2oH-NEeSCSdACpDfnSA" name="revenu">
1338 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1339 </ownedParameter>
1340 </ownedOperation>
1341 <ownedOperation xmi:type="uml:Operation" xmi:id="_-VPDEH-NEeSCSdACpDfnSA" name="get_B_for_salary_class_2">
1342 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jitXkH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1343 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kjv90H-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1960) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2280) then 157&#xA;&#x9;&#x9;else if(revenu &lt;= 2595) then 202.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2915) then 254.58&#xA;&#x9;&#x9;else if(revenu &lt;= 3230) then 312.91&#xA;&#x9;&#x9;else if(revenu &lt;= 3550) then 377.6&#xA;&#x9;&#x9;else if(revenu &lt;= 3870) then 448.65&#xA;&#x9;&#x9;else if(revenu &lt;= 4185) then 526.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4505) then 609.83&#xA;&#x9;&#x9;else if(revenu &lt;= 4820) then 699.96&#xA;&#x9;&#x9;else if(revenu &lt;= 5140) then 796.45&#xA;&#x9;&#x9;else if(revenu &lt;= 5460) then 899.3&#xA;&#x9;&#x9;else if(revenu &lt;= 5775) then 1008.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6095) then 1124.08&#xA;&#x9;&#x9;else if(revenu &lt;= 6410) then 1246.01&#xA;&#x9;&#x9;else if(revenu &lt;= 6730) then 1374.3&#xA;&#x9;&#x9;else if(revenu &lt;= 7050) then 1508.95&#xA;&#x9;&#x9;else if(revenu &lt;= 16750) then 1579.455&#xA;&#x9;&#x9;else 1746.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1344 </eAnnotations>
1345 <ownedParameter xmi:type="uml:Parameter" xmi:id="_Es694H-OEeSCSdACpDfnSA" direction="return">
1346 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1347 </ownedParameter>
1348 <ownedParameter xmi:type="uml:Parameter" xmi:id="_GYRFYH-OEeSCSdACpDfnSA" name="revenu">
1349 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1350 </ownedParameter>
1351 </ownedOperation>
1352 <ownedOperation xmi:type="uml:Operation" xmi:id="_ILL0gH-OEeSCSdACpDfnSA" name="get_A_for_pension_class_1">
1353 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_obMwgH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1354 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p3wOEH-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1355 </eAnnotations>
1356 <ownedParameter xmi:type="uml:Parameter" xmi:id="_NjpG8H-OEeSCSdACpDfnSA" direction="return">
1357 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1358 </ownedParameter>
1359 <ownedParameter xmi:type="uml:Parameter" xmi:id="_O_ey0H-OEeSCSdACpDfnSA" name="revenu">
1360 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1361 </ownedParameter>
1362 </ownedOperation>
1363 <ownedOperation xmi:type="uml:Operation" xmi:id="_ROtqgH-OEeSCSdACpDfnSA" name="get_B_for_pension_class_1">
1364 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tuyKAH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1365 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u1q5kH-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 1160) then 80.3&#xA;&#x9;&#x9;else if(revenu &lt;= 1320) then 103.555&#xA;&#x9;&#x9;else if(revenu &lt;= 1480) then 129.99&#xA;&#x9;&#x9;else if(revenu &lt;= 1635) then 159.605&#xA;&#x9;&#x9;else if(revenu &lt;= 1795) then 192.4&#xA;&#x9;&#x9;else if(revenu &lt;= 1955) then 228.375&#xA;&#x9;&#x9;else if(revenu &lt;= 2115) then 267.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2275) then 309.865&#xA;&#x9;&#x9;else if(revenu &lt;= 2430) then 355.38&#xA;&#x9;&#x9;else if(revenu &lt;= 2590) then 404.075&#xA;&#x9;&#x9;else if(revenu &lt;= 2750) then 455.95&#xA;&#x9;&#x9;else if(revenu &lt;= 2910) then 511.005&#xA;&#x9;&#x9;else if(revenu &lt;= 3070) then 569.24&#xA;&#x9;&#x9;else if(revenu &lt;= 3225) then 630.655&#xA;&#x9;&#x9;else if(revenu &lt;= 3385) then 695.25&#xA;&#x9;&#x9;else if(revenu &lt;= 3545) then 763.025&#xA;&#x9;&#x9;else if(revenu &lt;= 8395) then 798.5025&#xA;&#x9;&#x9;else 882.48583&#x9;&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1366 </eAnnotations>
1367 <ownedParameter xmi:type="uml:Parameter" xmi:id="_UgjOsH-OEeSCSdACpDfnSA" direction="return">
1368 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1369 </ownedParameter>
1370 <ownedParameter xmi:type="uml:Parameter" xmi:id="_aPaO8H-OEeSCSdACpDfnSA" name="revenu">
1371 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1372 </ownedParameter>
1373 </ownedOperation>
1374 <ownedOperation xmi:type="uml:Operation" xmi:id="_c6R5wH-OEeSCSdACpDfnSA" name="get_A_for_pension_class_1A">
1375 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6dkJwH-UEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1376 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8OetwH-UEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1377 </eAnnotations>
1378 <ownedParameter xmi:type="uml:Parameter" xmi:id="_f-B-oH-OEeSCSdACpDfnSA" direction="return">
1379 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1380 </ownedParameter>
1381 <ownedParameter xmi:type="uml:Parameter" xmi:id="_hdgNUH-OEeSCSdACpDfnSA" name="revenu">
1382 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1383 </ownedParameter>
1384 </ownedOperation>
1385 <ownedOperation xmi:type="uml:Operation" xmi:id="_jsOusH-OEeSCSdACpDfnSA" name="get_B_for_pension_class_1A">
1386 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AXUycH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1387 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BnkSUH-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2045) then 233.100&#xA;&#x9;&#x9;else if(revenu &lt;= 2150) then 294.555&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 359.190&#xA;&#x9;&#x9;else if(revenu &lt;= 2365) then 427.005&#xA;&#x9;&#x9;else if(revenu &lt;= 2470) then 498&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 572.175&#xA;&#x9;&#x9;else if(revenu &lt;= 2680) then 649.53&#xA;&#x9;&#x9;else if(revenu &lt;= 2790) then 730.065&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 813.780&#xA;&#x9;&#x9;else if(revenu &lt;= 3000) then 900.675&#xA;&#x9;&#x9;else 930.700&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1388 </eAnnotations>
1389 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mYT6cH-OEeSCSdACpDfnSA" direction="return">
1390 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1391 </ownedParameter>
1392 <ownedParameter xmi:type="uml:Parameter" xmi:id="_num_AH-OEeSCSdACpDfnSA" name="revenu">
1393 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1394 </ownedParameter>
1395 </ownedOperation>
1396 <ownedOperation xmi:type="uml:Operation" xmi:id="_NsMwkH-PEeSJlstZl0yjnQ" name="get_A_for_pension_class_2">
1397 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DlLOgH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1398 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZnOwcH-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1399 </eAnnotations>
1400 <ownedParameter xmi:type="uml:Parameter" xmi:id="_RRI28H-PEeSJlstZl0yjnQ" direction="return">
1401 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1402 </ownedParameter>
1403 <ownedParameter xmi:type="uml:Parameter" xmi:id="_Sp714H-PEeSJlstZl0yjnQ" name="revenu">
1404 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1405 </ownedParameter>
1406 </ownedOperation>
1407 <ownedOperation xmi:type="uml:Operation" xmi:id="_U4mF0H-PEeSJlstZl0yjnQ" name="get_B_for_pension_class_2">
1408 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E7tjoH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1409 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y7XI8H-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 1940) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 2260) then 155.4&#xA;&#x9;&#x9;else if(revenu &lt;= 2575) then 200.61&#xA;&#x9;&#x9;else if(revenu &lt;= 2895) then 252.18&#xA;&#x9;&#x9;else if(revenu &lt;= 3210) then 310.11&#xA;&#x9;&#x9;else if(revenu &lt;= 3530) then 374.4&#xA;&#x9;&#x9;else if(revenu &lt;= 3850) then 445.05&#xA;&#x9;&#x9;else if(revenu &lt;= 4165) then 522.06&#xA;&#x9;&#x9;else if(revenu &lt;= 4485) then 605.43&#xA;&#x9;&#x9;else if(revenu &lt;= 4800) then 695.16&#xA;&#x9;&#x9;else if(revenu &lt;= 5120) then 791.25&#xA;&#x9;&#x9;else if(revenu &lt;= 5440) then 893.7&#xA;&#x9;&#x9;else if(revenu &lt;= 5755) then 1002.51&#xA;&#x9;&#x9;else if(revenu &lt;= 6075) then 1117.68&#xA;&#x9;&#x9;else if(revenu &lt;= 6390) then 1239.21&#xA;&#x9;&#x9;else if(revenu &lt;= 6710) then 1367.1&#xA;&#x9;&#x9;else if(revenu &lt;= 7030) then 1501.35&#xA;&#x9;&#x9;else if(revenu &lt;= 16730) then 1571.655&#xA;&#x9;&#x9;else 1738.97166&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1410 </eAnnotations>
1411 <ownedParameter xmi:type="uml:Parameter" xmi:id="_XRUQsH-PEeSJlstZl0yjnQ" direction="return">
1412 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1413 </ownedParameter>
1414 <ownedParameter xmi:type="uml:Parameter" xmi:id="_aly5MH-PEeSJlstZl0yjnQ" name="revenu">
1415 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1416 </ownedParameter>
1417 </ownedOperation>
1418 <ownedOperation xmi:type="uml:Operation" xmi:id="_mYK7EH-PEeSJlstZl0yjnQ" name="get_A_for_other_yearly_class_1">
1419 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_F8K7EH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1420 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YRCZkH-VEeS7YrVIFIBXnQ" key="body" value=" if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1421 </eAnnotations>
1422 <ownedParameter xmi:type="uml:Parameter" xmi:id="_pF00IH-PEeSJlstZl0yjnQ" direction="return">
1423 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1424 </ownedParameter>
1425 <ownedParameter xmi:type="uml:Parameter" xmi:id="_zNKbEH-QEeSipvspW3BzGA" name="revenu">
1426 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1427 </ownedParameter>
1428 </ownedOperation>
1429 <ownedOperation xmi:type="uml:Operation" xmi:id="_62GiYH-QEeSipvspW3BzGA" name="get_B_for_other_yearly_class_1">
1430 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-WJwH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1431 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xqc6sH-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;= 11250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13150) then 901.200 &#xA;&#x9;&#x9;else if(revenu &lt;= 15050) then 1164.660&#xA;&#x9;&#x9;else if(revenu &lt;= 16950) then 1466.280&#xA;&#x9;&#x9;else if(revenu &lt;= 18850) then 1806.060&#xA;&#x9;&#x9;else if(revenu &lt;= 20800) then 2184&#xA;&#x9;&#x9;else if(revenu &lt;= 22700) then 2600.100&#xA;&#x9;&#x9;else if(revenu &lt;= 24600) then 3054.360&#xA;&#x9;&#x9;else if(revenu &lt;= 26500) then 3546.780 &#xA;&#x9;&#x9;else if(revenu &lt;= 28400) then 4077.360&#xA;&#x9;&#x9;else if(revenu &lt;= 30300) then 4646.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32250) then 5253&#xA;&#x9;&#x9;else if(revenu &lt;= 34150) then 5898.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36050) then 6581.28&#xA;&#x9;&#x9;else if(revenu &lt;= 37950) then 7302.66&#xA;&#x9;&#x9;else if(revenu &lt;= 39850) then 8062.2&#xA;&#x9;&#x9;else if(revenu &lt;= 41750) then 8859.9&#xA;&#x9;&#x9;else if(revenu &lt;= 100000) then 9277.83&#xA;&#x9;&#x9;else 10277.83&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1432 </eAnnotations>
1433 <ownedParameter xmi:type="uml:Parameter" xmi:id="_9UmlIH-QEeSipvspW3BzGA" direction="return">
1434 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1435 </ownedParameter>
1436 <ownedParameter xmi:type="uml:Parameter" xmi:id="__BDf4H-QEeSipvspW3BzGA" name="revenu">
1437 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1438 </ownedParameter>
1439 </ownedOperation>
1440 <ownedOperation xmi:type="uml:Operation" xmi:id="__11LwH-QEeSipvspW3BzGA" name="get_A_for_other_yearly_class_1A">
1441 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H5BCQH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1442 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XEo34H-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1443 </eAnnotations>
1444 <ownedParameter xmi:type="uml:Parameter" xmi:id="_FvcqgH-REeSipvspW3BzGA" direction="return">
1445 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1446 </ownedParameter>
1447 <ownedParameter xmi:type="uml:Parameter" xmi:id="_tpBAkH-REeS7YrVIFIBXnQ" name="revenu">
1448 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1449 </ownedParameter>
1450 </ownedOperation>
1451 <ownedOperation xmi:type="uml:Operation" xmi:id="_JT3zgH-REeSipvspW3BzGA" name="get_B_for_other_yearly_class_1A">
1452 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IzJIMH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1453 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WgisUH-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 23800) then 2703.600&#xA;&#x9;&#x9;else if(revenu &lt;= 25050) then 3417.660&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 4169.880&#xA;&#x9;&#x9;else if(revenu &lt;= 27600) then 4960.260&#xA;&#x9;&#x9;else if(revenu &lt;= 28850) then 5788.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 6655.500&#xA;&#x9;&#x9;else if(revenu &lt;= 31400) then 7560.360&#xA;&#x9;&#x9;else if(revenu &lt;= 32700) then 8503.380&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 9484.560&#xA;&#x9;&#x9;else if(revenu &lt;= 35250) then 10503.900&#xA;&#x9;&#x9;else 10856.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1454 </eAnnotations>
1455 <ownedParameter xmi:type="uml:Parameter" xmi:id="_vnOZsH-REeS7YrVIFIBXnQ" direction="return">
1456 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1457 </ownedParameter>
1458 <ownedParameter xmi:type="uml:Parameter" xmi:id="_7SiKQH-REeS7YrVIFIBXnQ" name="revenu">
1459 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1460 </ownedParameter>
1461 </ownedOperation>
1462 <ownedOperation xmi:type="uml:Operation" xmi:id="_OMP3sH-REeSipvspW3BzGA" name="get_A_for_other_yearly_class_2">
1463 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J37mAH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1464 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VvWf8H-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1465 </eAnnotations>
1466 <ownedParameter xmi:type="uml:Parameter" xmi:id="_xh-2MH-REeS7YrVIFIBXnQ" direction="return">
1467 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1468 </ownedParameter>
1469 <ownedParameter xmi:type="uml:Parameter" xmi:id="_9G4cwH-REeS7YrVIFIBXnQ" name="revenu">
1470 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1471 </ownedParameter>
1472 </ownedOperation>
1473 <ownedOperation xmi:type="uml:Operation" xmi:id="_SPPzEH-REeSipvspW3BzGA" name="get_B_for_other_yearly_class_2">
1474 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KyXN8H-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1475 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VAfO0H-VEeS7YrVIFIBXnQ" key="body" value="if(revenu&lt;=22500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 26300) then 1802.400 &#xA;&#x9;&#x9;else if(revenu &lt;= 30150) then 2329.320&#xA;&#x9;&#x9;else if(revenu &lt;= 33950) then 2932.560&#xA;&#x9;&#x9;else if(revenu &lt;= 37750) then 3612.120&#xA;&#x9;&#x9;else if(revenu &lt;= 41600) then 4368.000&#xA;&#x9;&#x9;else if(revenu &lt;= 45400) then 5200.200&#xA;&#x9;&#x9;else if(revenu &lt;= 49200) then 6108.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53050) then 7093.560&#xA;&#x9;&#x9;else if(revenu &lt;= 56850) then 8154.720&#xA;&#x9;&#x9;else if(revenu &lt;= 60650) then 9292.200&#xA;&#x9;&#x9;else if(revenu &lt;= 64500) then 10506.000&#xA;&#x9;&#x9;else if(revenu &lt;= 68300) then 11796.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72100) then 13162.560&#xA;&#x9;&#x9;else if(revenu &lt;= 75950) then 14605.320&#xA;&#x9;&#x9;else if(revenu &lt;= 79750) then 16124.400&#xA;&#x9;&#x9;else if(revenu &lt;= 83550) then 17719.800&#xA;&#x9;&#x9;else if(revenu &lt;= 200000) then 18555.660&#xA;&#x9;&#x9;else 20555.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1476 </eAnnotations>
1477 <ownedParameter xmi:type="uml:Parameter" xmi:id="_zEvpcH-REeS7YrVIFIBXnQ" direction="return">
1478 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1479 </ownedParameter>
1480 <ownedParameter xmi:type="uml:Parameter" xmi:id="_-ekocH-REeS7YrVIFIBXnQ" name="revenu">
1481 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1482 </ownedParameter>
1483 </ownedOperation>
1484 <ownedOperation xmi:type="uml:Operation" xmi:id="_Z4wiIH-REeSipvspW3BzGA" name="calculate_taxes_per_month">
1485 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ln3SkH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1486 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq-NYH-VEeS7YrVIFIBXnQ" key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_class_2(amount) else get_A_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_class_2(amount) else get_B_for_salary_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 25085 else 12585 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_class_2(amount) else get_A_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_class_2(amount) else get_B_for_pension_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_ten_cent(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 25065 else 12565 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_ten_cent(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 81.906 else if(classe=Tax_Class_Category::Two) then 165.74 else 82.87 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_ten_cent(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;1)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;-1&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1487 </eAnnotations>
1488 <ownedParameter xmi:type="uml:Parameter" xmi:id="_0rCR0H-REeS7YrVIFIBXnQ" direction="return">
1489 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1490 </ownedParameter>
1491 <ownedParameter xmi:type="uml:Parameter" xmi:id="_HnAzoH-SEeS7YrVIFIBXnQ" name="amount">
1492 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1493 </ownedParameter>
1494 <ownedParameter xmi:type="uml:Parameter" xmi:id="_M_PckH-SEeS7YrVIFIBXnQ" name="classe" type="Tax_Class_Category"/>
1495 <ownedParameter xmi:type="uml:Parameter" xmi:id="_Q9sPIH-SEeS7YrVIFIBXnQ" name="income_type">
1496 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1497 </ownedParameter>
1498 </ownedOperation>
1499 <ownedOperation xmi:type="uml:Operation" xmi:id="_eU-OwH-REeSipvspW3BzGA" name="round_lower_euros">
1500 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ORMFQH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1501 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S6kEIH-VEeS7YrVIFIBXnQ" key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()"/>
1502 </eAnnotations>
1503 <ownedParameter xmi:type="uml:Parameter" xmi:id="_2746IH-REeS7YrVIFIBXnQ" direction="return">
1504 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1505 </ownedParameter>
1506 <ownedParameter xmi:type="uml:Parameter" xmi:id="_EU14QH-SEeS7YrVIFIBXnQ" name="amount">
1507 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1508 </ownedParameter>
1509 </ownedOperation>
1510 <ownedOperation xmi:type="uml:Operation" xmi:id="_gyPicH-REeSipvspW3BzGA" name="round_ten_cent">
1511 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P0mYwH-VEeS7YrVIFIBXnQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1512 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrwHoH-VEeS7YrVIFIBXnQ" key="body" value="let p1:Integer = amount.floor() in&#xA;&#x9;&#x9;&#x9;if(p1=amount) then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let p2_temp:Real = (amount-p1) * 10 in&#xA;&#x9;&#x9;&#x9;let p2:Integer = p2_temp.floor() in&#xA;&#x9;&#x9;&#x9;p1.toString().toReal()+(p2.toString().toReal()/10.0)&#xA;&#x9;&#x9;&#x9;endif"/>
1513 </eAnnotations>
1514 <ownedParameter xmi:type="uml:Parameter" xmi:id="_449q0H-REeS7YrVIFIBXnQ" direction="return">
1515 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1516 </ownedParameter>
1517 <ownedParameter xmi:type="uml:Parameter" xmi:id="_C2OlMH-SEeS7YrVIFIBXnQ" name="amount">
1518 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1519 </ownedParameter>
1520 </ownedOperation>
1521 <ownedOperation xmi:type="uml:Operation" xmi:id="_UcdfMIBaEeSS--Tr1brRQQ" name="get_A_for_salary_yearly_class_1">
1522 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_72KM8IBbEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1523 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KA83sIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1524 </eAnnotations>
1525 <ownedParameter xmi:type="uml:Parameter" xmi:id="_ECKagIBbEeSS--Tr1brRQQ" direction="return">
1526 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1527 </ownedParameter>
1528 <ownedParameter xmi:type="uml:Parameter" xmi:id="_dITYgIBbEeSS--Tr1brRQQ" name="revenu">
1529 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1530 </ownedParameter>
1531 </ownedOperation>
1532 <ownedOperation xmi:type="uml:Operation" xmi:id="_XDCf4IBaEeSS--Tr1brRQQ" name="get_B_for_salary_yearly_class_1">
1533 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q1bMIBbEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1534 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KubBsIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 12250) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 14150) then 982.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 16100) then 1266.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 18000) then 1588.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 19900) then 1948.8600&#xA;&#x9;&#x9;else if(revenu &lt;= 21800) then 2347.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 23700) then 2783.7000&#xA;&#x9;&#x9;else if(revenu &lt;= 25600) then 3258.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 27500) then 3771.1800&#xA;&#x9;&#x9;else if(revenu &lt;= 29450) then 4322.1600&#xA;&#x9;&#x9;else if(revenu &lt;= 31350) then 4911.3000&#xA;&#x9;&#x9;else if(revenu &lt;= 33250) then 5538.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 35150) then 6204.0600&#xA;&#x9;&#x9;else if(revenu &lt;= 37050) then 6907.6800&#xA;&#x9;&#x9;else if(revenu &lt;= 38950) then 7649.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 40900) then 8429.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 42800) then 9247.5000&#xA;&#x9;&#x9;else if(revenu &lt;= 101000) then 9675.6300&#xA;&#x9;&#x9;else 10685.8300&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1535 </eAnnotations>
1536 <ownedParameter xmi:type="uml:Parameter" xmi:id="_HEtlgIBbEeSS--Tr1brRQQ" direction="return">
1537 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1538 </ownedParameter>
1539 <ownedParameter xmi:type="uml:Parameter" xmi:id="_ebBkoIBbEeSS--Tr1brRQQ" name="revenu">
1540 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1541 </ownedParameter>
1542 </ownedOperation>
1543 <ownedOperation xmi:type="uml:Operation" xmi:id="_e-hvwIBaEeSS--Tr1brRQQ" name="get_A_for_salary_yearly_class_1A">
1544 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-LMKoIBbEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1545 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LOnksIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1546 </eAnnotations>
1547 <ownedParameter xmi:type="uml:Parameter" xmi:id="_I1HMIIBbEeSS--Tr1brRQQ" direction="return">
1548 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1549 </ownedParameter>
1550 <ownedParameter xmi:type="uml:Parameter" xmi:id="_fntaMIBbEeSS--Tr1brRQQ" name="revenu">
1551 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1552 </ownedParameter>
1553 </ownedOperation>
1554 <ownedOperation xmi:type="uml:Operation" xmi:id="_homwYIBaEeSS--Tr1brRQQ" name="get_B_for_salary_yearly_class_1A">
1555 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__N92QIBbEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1556 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LxpZQIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23500) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24800) then 2826.0000&#xA;&#x9;&#x9;else if(revenu &lt;= 26050) then 3570.6600&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 4353.4800&#xA;&#x9;&#x9;else if(revenu &lt;= 28600) then 5174.4600&#xA;&#x9;&#x9;else if(revenu &lt;= 29900) then 6033.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 6930.9000&#xA;&#x9;&#x9;else if(revenu &lt;= 32450) then 7866.3600&#xA;&#x9;&#x9;else if(revenu &lt;= 33700) then 8839.9800&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 9851.7600&#xA;&#x9;&#x9;else if(revenu &lt;= 36250) then 10901.7000&#xA;&#x9;&#x9;else 11264.4000&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1557 </eAnnotations>
1558 <ownedParameter xmi:type="uml:Parameter" xmi:id="_KZskUIBbEeSS--Tr1brRQQ" direction="return">
1559 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1560 </ownedParameter>
1561 <ownedParameter xmi:type="uml:Parameter" xmi:id="_gxGEIIBbEeSS--Tr1brRQQ" name="revenu">
1562 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1563 </ownedParameter>
1564 </ownedOperation>
1565 <ownedOperation xmi:type="uml:Operation" xmi:id="_j9EtYIBaEeSS--Tr1brRQQ" name="get_A_for_salary_yearly_class_2">
1566 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__83joIBbEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1567 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUrN0IBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1568 </eAnnotations>
1569 <ownedParameter xmi:type="uml:Parameter" xmi:id="_MFPgIIBbEeSS--Tr1brRQQ" direction="return">
1570 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1571 </ownedParameter>
1572 <ownedParameter xmi:type="uml:Parameter" xmi:id="_iAE_wIBbEeSS--Tr1brRQQ" name="revenu">
1573 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1574 </ownedParameter>
1575 </ownedOperation>
1576 <ownedOperation xmi:type="uml:Operation" xmi:id="_mH8CcIBaEeSS--Tr1brRQQ" name="get_B_for_salary_yearly_class_2">
1577 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A7GtgIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1578 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3fnAIBcEeSS--Tr1brRQQ" key="body" value=" if(revenu&lt;= 23550) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27350) then 1884.000&#xA;&#x9;&#x9;else if(revenu &lt;= 31150) then 2431.3200&#xA;&#x9;&#x9;else if(revenu &lt;= 34950) then 3054.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 38800) then 3754.9200&#xA;&#x9;&#x9;else if(revenu &lt;= 42600) then 4531.2000&#xA;&#x9;&#x9;else if(revenu &lt;= 46400) then 5383.8000&#xA;&#x9;&#x9;else if(revenu &lt;= 50250) then 6312.7200&#xA;&#x9;&#x9;else if(revenu &lt;= 54050) then 7317.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 57850) then 8399.5200&#xA;&#x9;&#x9;else if(revenu &lt;= 61700) then 9557.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 65500) then 10791.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 69300) then 12102.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 73150) then 13488.9600&#xA;&#x9;&#x9;else if(revenu &lt;= 76950) then 14952.1200&#xA;&#x9;&#x9;else if(revenu &lt;= 80750) then 16491.6000&#xA;&#x9;&#x9;else if(revenu &lt;= 84600) then 18107.4000&#xA;&#x9;&#x9;else if(revenu &lt;= 201000) then 18953.4600&#xA;&#x9;&#x9;else 20963.6600&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1579 </eAnnotations>
1580 <ownedParameter xmi:type="uml:Parameter" xmi:id="_N7RNoIBbEeSS--Tr1brRQQ" direction="return">
1581 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1582 </ownedParameter>
1583 <ownedParameter xmi:type="uml:Parameter" xmi:id="_jWRWoIBbEeSS--Tr1brRQQ" name="revenu">
1584 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1585 </ownedParameter>
1586 </ownedOperation>
1587 <ownedOperation xmi:type="uml:Operation" xmi:id="_pf6q4IBaEeSS--Tr1brRQQ" name="get_A_for_pension_yearly_class_1">
1588 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BwSCAIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1589 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NY_xkIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1590 </eAnnotations>
1591 <ownedParameter xmi:type="uml:Parameter" xmi:id="_P45_AIBbEeSS--Tr1brRQQ" direction="return">
1592 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1593 </ownedParameter>
1594 <ownedParameter xmi:type="uml:Parameter" xmi:id="_kbhHcIBbEeSS--Tr1brRQQ" name="revenu">
1595 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1596 </ownedParameter>
1597 </ownedOperation>
1598 <ownedOperation xmi:type="uml:Operation" xmi:id="_rp3Z8IBaEeSS--Tr1brRQQ" name="get_B_for_pension_yearly_class_1">
1599 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CekrYIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1600 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N2K1wIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 12000) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 13950) then 963.600&#xA;&#x9;&#x9;else if(revenu &lt;= 15850) then 1242.660&#xA;&#x9;&#x9;else if(revenu &lt;= 17750) then 1559.880&#xA;&#x9;&#x9;else if(revenu &lt;= 19650) then 1915.260&#xA;&#x9;&#x9;else if(revenu &lt;= 21550) then 2308.800&#xA;&#x9;&#x9;else if(revenu &lt;= 23450) then 2740.500&#xA;&#x9;&#x9;else if(revenu &lt;= 25400) then 3210.360&#xA;&#x9;&#x9;else if(revenu &lt;= 27300) then 3718.380&#xA;&#x9;&#x9;else if(revenu &lt;= 29200) then 4264.560&#xA;&#x9;&#x9;else if(revenu &lt;= 31100) then 4848.900&#xA;&#x9;&#x9;else if(revenu &lt;= 33000) then 5471.400&#xA;&#x9;&#x9;else if(revenu &lt;= 34900) then 6132.060&#xA;&#x9;&#x9;else if(revenu &lt;= 36800) then 6830.880&#xA;&#x9;&#x9;else if(revenu &lt;= 38750) then 7567.860&#xA;&#x9;&#x9;else if(revenu &lt;= 40650) then 8343.000&#xA;&#x9;&#x9;else if(revenu &lt;= 42550) then 9156.300&#xA;&#x9;&#x9;else if(revenu &lt;= 100750) then 9582.030&#xA;&#x9;&#x9;else 10589.830&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1601 </eAnnotations>
1602 <ownedParameter xmi:type="uml:Parameter" xmi:id="_RREEwIBbEeSS--Tr1brRQQ" direction="return">
1603 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1604 </ownedParameter>
1605 <ownedParameter xmi:type="uml:Parameter" xmi:id="_lyXloIBbEeSS--Tr1brRQQ" name="revenu">
1606 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1607 </ownedParameter>
1608 </ownedOperation>
1609 <ownedOperation xmi:type="uml:Operation" xmi:id="_xivR0IBaEeSS--Tr1brRQQ" name="get_A_for_pension_yearly_class_1A">
1610 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EmpLIIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1611 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oc9wAIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 0.15&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 0.21&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.27&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 0.33&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1612 </eAnnotations>
1613 <ownedParameter xmi:type="uml:Parameter" xmi:id="_TsvdAIBbEeSS--Tr1brRQQ" direction="return">
1614 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1615 </ownedParameter>
1616 <ownedParameter xmi:type="uml:Parameter" xmi:id="_m1nLUIBbEeSS--Tr1brRQQ" name="revenu">
1617 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1618 </ownedParameter>
1619 </ownedOperation>
1620 <ownedOperation xmi:type="uml:Operation" xmi:id="_0dqK0IBaEeSS--Tr1brRQQ" name="get_B_for_pension_yearly_class_1A">
1621 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FXy7QIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1622 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O7W8MIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 24550) then 2797.200&#xA;&#x9;&#x9;else if(revenu &lt;= 25850) then 3534.660&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 4310.280&#xA;&#x9;&#x9;else if(revenu &lt;= 28350) then 5124.060&#xA;&#x9;&#x9;else if(revenu &lt;= 29650) then 5976.000&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 6866.100&#xA;&#x9;&#x9;else if(revenu &lt;= 32200) then 7794.360&#xA;&#x9;&#x9;else if(revenu &lt;= 33450) then 8760.780&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 9765.360&#xA;&#x9;&#x9;else if(revenu &lt;= 36000) then 10808.100&#xA;&#x9;&#x9;else 11168.400&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1623 </eAnnotations>
1624 <ownedParameter xmi:type="uml:Parameter" xmi:id="_VIzyYIBbEeSS--Tr1brRQQ" direction="return">
1625 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1626 </ownedParameter>
1627 <ownedParameter xmi:type="uml:Parameter" xmi:id="_oHu6gIBbEeSS--Tr1brRQQ" name="revenu">
1628 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1629 </ownedParameter>
1630 </ownedOperation>
1631 <ownedOperation xmi:type="uml:Operation" xmi:id="_4krqkIBaEeSS--Tr1brRQQ" name="get_A_for_pension_yearly_class_2">
1632 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GJIRkIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1633 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfIXoIBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 0.08&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 0.1&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 0.12&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 0.14&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 0.16&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 0.18&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 0.2&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 0.22&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 0.24&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 0.26&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 0.28&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 0.3&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 0.32&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 0.34&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 0.36&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 0.38&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 0.39&#xA;&#x9;&#x9;else 0.4&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1634 </eAnnotations>
1635 <ownedParameter xmi:type="uml:Parameter" xmi:id="_WgtZcIBbEeSS--Tr1brRQQ" direction="return">
1636 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1637 </ownedParameter>
1638 <ownedParameter xmi:type="uml:Parameter" xmi:id="_pRYDIIBbEeSS--Tr1brRQQ" name="revenu">
1639 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1640 </ownedParameter>
1641 </ownedOperation>
1642 <ownedOperation xmi:type="uml:Operation" xmi:id="_5a7WEIBaEeSS--Tr1brRQQ" name="get_B_for_pension_yearly_class_2">
1643 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G6PlcIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1644 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P7s-4IBcEeSS--Tr1brRQQ" key="body" value="if(revenu&lt;= 23300) then 0&#xA;&#x9;&#x9;else if(revenu &lt;= 27100) then 1864.800&#xA;&#x9;&#x9;else if(revenu &lt;= 30900) then 2407.320&#xA;&#x9;&#x9;else if(revenu &lt;= 34750) then 3026.160&#xA;&#x9;&#x9;else if(revenu &lt;= 38550) then 3721.320&#xA;&#x9;&#x9;else if(revenu &lt;= 42350) then 4492.800&#xA;&#x9;&#x9;else if(revenu &lt;= 46200) then 5340.600&#xA;&#x9;&#x9;else if(revenu &lt;= 50000) then 6264.720&#xA;&#x9;&#x9;else if(revenu &lt;= 53800) then 7265.160&#xA;&#x9;&#x9;else if(revenu &lt;= 57650) then 8341.920&#xA;&#x9;&#x9;else if(revenu &lt;= 61450) then 9495.000&#xA;&#x9;&#x9;else if(revenu &lt;= 65250) then 10724.400&#xA;&#x9;&#x9;else if(revenu &lt;= 69100) then 12030.120&#xA;&#x9;&#x9;else if(revenu &lt;= 72900) then 13412.160&#xA;&#x9;&#x9;else if(revenu &lt;= 76700) then 14870.520&#xA;&#x9;&#x9;else if(revenu &lt;= 80550) then 16405.200&#xA;&#x9;&#x9;else if(revenu &lt;= 84350) then 18016.200&#xA;&#x9;&#x9;else if(revenu &lt;= 200750) then 18859.860&#xA;&#x9;&#x9;else 20867.660&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA;&#x9;&#x9;endif&#xA; endif"/>
1645 </eAnnotations>
1646 <ownedParameter xmi:type="uml:Parameter" xmi:id="_XvObAIBbEeSS--Tr1brRQQ" direction="return">
1647 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1648 </ownedParameter>
1649 <ownedParameter xmi:type="uml:Parameter" xmi:id="_qf2BYIBbEeSS--Tr1brRQQ" name="revenu">
1650 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1651 </ownedParameter>
1652 </ownedOperation>
1653 <ownedOperation xmi:type="uml:Operation" xmi:id="_8O9j8IBaEeSS--Tr1brRQQ" name="calculate_taxes_per_year">
1654 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HtMFUIBcEeSS--Tr1brRQQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1655 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfclIIBcEeSS--Tr1brRQQ" key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1656 </eAnnotations>
1657 <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZbV-kIBbEeSS--Tr1brRQQ" direction="return">
1658 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1659 </ownedParameter>
1660 <ownedParameter xmi:type="uml:Parameter" xmi:id="_tKVRsIBbEeSS--Tr1brRQQ" name="amount">
1661 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1662 </ownedParameter>
1663 <ownedParameter xmi:type="uml:Parameter" xmi:id="_vfjcoIBbEeSS--Tr1brRQQ" name="classe" type="Tax_Class_Category"/>
1664 <ownedParameter xmi:type="uml:Parameter" xmi:id="_yvPEsIBbEeSS--Tr1brRQQ" name="income_type">
1665 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1666 </ownedParameter>
1667 </ownedOperation>
1668 <ownedOperation xmi:type="uml:Operation" xmi:id="_xtIuIIxGEeSQ-eW2JAQJHg" name="CNS_RATE">
1669 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7nLVYIxGEeSQ-eW2JAQJHg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1670 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8_cI0IxGEeSQ-eW2JAQJHg" key="body" value="0.0305"/>
1671 </eAnnotations>
1672 <ownedParameter xmi:type="uml:Parameter" xmi:id="_2-vxsIxGEeSQ-eW2JAQJHg" direction="return">
1673 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1674 </ownedParameter>
1675 </ownedOperation>
1676 <ownedOperation xmi:type="uml:Operation" xmi:id="_BOY4sIxLEeSQ-eW2JAQJHg" name="PENSION_RATE">
1677 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZcqakIxLEeSQ-eW2JAQJHg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1678 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bJB1wIxLEeSQ-eW2JAQJHg" key="body" value="0.08"/>
1679 </eAnnotations>
1680 <ownedParameter xmi:type="uml:Parameter" xmi:id="_GshVUIxLEeSQ-eW2JAQJHg" direction="return">
1681 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1682 </ownedParameter>
1683 </ownedOperation>
1684 <ownedOperation xmi:type="uml:Operation" xmi:id="_FZxsUIxREeSQ-eW2JAQJHg" name="round_lower_fifty_euros">
1685 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OXIo4IxREeSQ-eW2JAQJHg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1686 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QFwG0IxREeSQ-eW2JAQJHg" key="body" value="&#x9;&#x9;if(amount&lt;50) then&#xA;&#x9;&#x9;&#x9;0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if (amount>=50 and amount&lt;100) then&#xA;&#x9;&#x9;&#x9;50.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let temp_amount:Real = round_lower_euros(amount) in&#xA;&#x9;&#x9;&#x9;let ch:String=temp_amount.toString()in&#xA;&#x9;&#x9;&#x9;let temp_amount1:Real = temp_amount / 100.0 in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(temp_amount1.round() = temp_amount1.floor()) then&#xA;&#x9;&#x9;&#x9;temp_amount1.floor() * 100.0&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;(temp_amount1.round() * 100.0) - 50&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1687 </eAnnotations>
1688 <ownedParameter xmi:type="uml:Parameter" xmi:id="_JfjO4IxREeSQ-eW2JAQJHg" direction="return">
1689 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1690 </ownedParameter>
1691 <ownedParameter xmi:type="uml:Parameter" xmi:id="_K-G3kIxREeSQ-eW2JAQJHg" name="amount">
1692 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1693 </ownedParameter>
1694 </ownedOperation>
1695 <ownedOperation xmi:type="uml:Operation" xmi:id="_bvBQAIxREeSQ-eW2JAQJHg" name="getTaxableIncomePerYear">
1696 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lFWtQIxREeSQ-eW2JAQJHg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1697 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_maFEgIxREeSQ-eW2JAQJHg" key="body" value="let gross_salary_year:Real= income.income_per_year() in&#xA;&#x9;&#x9;&#x9;let type:Income_Type=income.income_type in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Employment_Income)) then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let part_pension_year:Real= gross_salary_year * income.taxPayer.from_law.PENSION_RATE() in&#xA;&#x9;&#x9;&#x9;let part_CNS_year:Real= gross_salary_year * income.taxPayer.from_law.CNS_RATE() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- (part_CNS_year + part_pension_year + sum_deductions_year) in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(type.oclIsTypeOf(Pensions_and_Annuities_Income))then&#xA;&#x9;&#x9;&#x9;let sum_deductions_year:Real=income.tax_card.getSumDeductionsYear() in&#xA;&#x9;&#x9;&#x9;let taxable_income:Real= gross_salary_year- sum_deductions_year in &#x9;&#xA;&#x9;&#x9;&#x9;round_lower_fifty_euros(taxable_income)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let details:Set(Income_Detail)= income.details->select(i:Income_Detail|i.is_worked=true) in&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let res:Real= details->iterate( elem : Income_Detail; acc : Real = 0 | &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=false and elem.is_contributing_pension=false) then acc + elem.amount &#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true and elem.is_contributing_pension=true) then&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;if(elem.is_contributing_CNS=true)then&#xA;&#x9;&#x9;&#x9; acc+ elem.amount - (elem.amount* income.taxPayer.from_law.CNS_RATE())&#xA;&#x9;&#x9;&#x9; &#x9;else&#xA;&#x9;&#x9;&#x9; &#x9;acc+ elem.amount - (elem.amount* income.taxPayer.from_law.PENSION_RATE()) &#xA;&#x9;&#x9;&#x9; &#x9;&#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#x9; &#x9;endif &#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9; )&#xA;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;in round_lower_fifty_euros(res)&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1698 </eAnnotations>
1699 <ownedParameter xmi:type="uml:Parameter" xmi:id="_gfXZkIxREeSQ-eW2JAQJHg" direction="return">
1700 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1701 </ownedParameter>
1702 <ownedParameter xmi:type="uml:Parameter" xmi:id="_imYwcIxREeSQ-eW2JAQJHg" name="income" type="Income"/>
1703 </ownedOperation>
1704 <ownedOperation xmi:type="uml:Operation" xmi:id="_FueFYJDwEeSMh_pkRTiRPQ" name="precision">
1705 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tit4YJDwEeSMh_pkRTiRPQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1706 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T_15QJDwEeSMh_pkRTiRPQ" key="body" value="&#x9;&#x9;let ch:String=amount.toString() in&#xA;&#x9;&#x9;&#x9;if(ch.indexOf('.')=-1)then&#xA;&#x9;&#x9;&#x9;amount&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let pos_pt:Integer=ch.indexOf('.') in&#xA;&#x9;&#x9;&#x9;if(pos_pt+degit >=ch.size()) then&#xA;&#x9;&#x9;&#x9;amount &#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;let ch1:String=ch.substring(1,pos_pt+degit) in&#xA;&#x9;&#x9;&#x9;ch1.toReal()&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1707 </eAnnotations>
1708 <ownedParameter xmi:type="uml:Parameter" xmi:id="_LCb5YJDwEeSMh_pkRTiRPQ" direction="return">
1709 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1710 </ownedParameter>
1711 <ownedParameter xmi:type="uml:Parameter" xmi:id="_Nl4GgJDwEeSMh_pkRTiRPQ" name="amount">
1712 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1713 </ownedParameter>
1714 <ownedParameter xmi:type="uml:Parameter" xmi:id="_Pm_CoJDwEeSMh_pkRTiRPQ" name="degit">
1715 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1716 </ownedParameter>
1717 </ownedOperation>
1718 <ownedOperation xmi:type="uml:Operation" xmi:id="__vgBEJKmEeSsDc98mGjcqQ" name="MAXIMUM_RATE_FOR_CE_CHILDREN">
1719 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HbPkwJKnEeSsDc98mGjcqQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1720 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0wQ8JKnEeSsDc98mGjcqQ" key="body" value="3480"/>
1721 </eAnnotations>
1722 <ownedParameter xmi:type="uml:Parameter" xmi:id="_EuJFUJKnEeSsDc98mGjcqQ" direction="return">
1723 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1724 </ownedParameter>
1725 </ownedOperation>
1726 <ownedOperation xmi:type="uml:Operation" xmi:id="_UekbsJKoEeSsDc98mGjcqQ" name="MINIMUM_LEGAL_SALARY">
1727 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c8XHYJKoEeSsDc98mGjcqQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1728 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dXXBUJKoEeSsDc98mGjcqQ" key="body" value="1921.03"/>
1729 </eAnnotations>
1730 <ownedParameter xmi:type="uml:Parameter" xmi:id="_X38LQJKoEeSsDc98mGjcqQ" direction="return">
1731 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1732 </ownedParameter>
1733 </ownedOperation>
1734 <ownedOperation xmi:type="uml:Operation" xmi:id="_OS3bQJNUEeSZisr9dyMXhQ" name="MAXIMUM_FLAT_RATE_FOR_ALIMONY">
1735 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hYyjQJNUEeSZisr9dyMXhQ" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1736 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hx8DEJNUEeSZisr9dyMXhQ" key="body" value="&#x9;&#x9;&#x9;if(year_divorce>1997)then&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;if(year=2009 or year = 2010) then&#xA;&#x9;&#x9;&#x9;23400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;24000&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else&#xA;&#xA;&#x9;&#x9;&#x9;if(year &lt;=2007) then&#xA;&#x9;&#x9;&#x9;20400&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(year=2008) then&#xA;&#x9;&#x9;&#x9;21600&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;23400&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#x9;&#xA;&#x9;&#x9;&#x9;endif"/>
1737 </eAnnotations>
1738 <ownedParameter xmi:type="uml:Parameter" xmi:id="_TRkw8JNUEeSZisr9dyMXhQ" direction="return">
1739 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1740 </ownedParameter>
1741 <ownedParameter xmi:type="uml:Parameter" xmi:id="_YzjLwJNUEeSZisr9dyMXhQ" name="year">
1742 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1743 </ownedParameter>
1744 <ownedParameter xmi:type="uml:Parameter" xmi:id="_cQksQJNUEeSZisr9dyMXhQ" name="year_divorce">
1745 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1746 </ownedParameter>
1747 </ownedOperation>
1748 <ownedOperation xmi:type="uml:Operation" xmi:id="_Qj9jYDqFEeWZIdvCK8ArXg" name="AEP_FLAT_RATE">
1749 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aHCcIDqFEeWZIdvCK8ArXg" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1750 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvnjgDqFEeWZIdvCK8ArXg" key="body" value="4500"/>
1751 </eAnnotations>
1752 <ownedParameter xmi:type="uml:Parameter" xmi:id="_UPDVEDqFEeWZIdvCK8ArXg" direction="return">
1753 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1754 </ownedParameter>
1755 </ownedOperation>
1756 <ownedOperation xmi:type="uml:Operation" xmi:id="_8lPOUG3NEeWcOt8eh6sd-w" name="calculate_taxes_per_year_mixed">
1757 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3LMoG3OEeWcOt8eh6sd-w" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1758 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WTZOkG3OEeWcOt8eh6sd-w" key="body" value="if(income_type='Employment') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_salary_yearly_class_2(amount) else get_A_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_salary_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_salary_yearly_class_2(amount) else get_B_for_salary_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 301020 else 151020 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; &#xA;&#x9;&#x9; &#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;if(income_type='Pension') then&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_pension_yearly_class_2(amount) else get_A_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_pension_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_pension_yearly_class_2(amount) else get_B_for_pension_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA;&#x9;&#x9; let max:Real = if(classe=Tax_Class_Category::Two) then 300780 else 150780 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;let a:Real = if(classe=Tax_Class_Category::One_A) then get_A_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_A_for_other_yearly_class_2(amount) else get_A_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9;&#x9;let b:Real = if(classe=Tax_Class_Category::One_A) then get_B_for_other_yearly_class_1A(amount) else if(classe=Tax_Class_Category::Two) then get_B_for_other_yearly_class_2(amount) else get_B_for_other_yearly_class_1(amount) endif endif in&#xA;&#x9;&#x9; let res:Real = round_lower_euros(a * local_amount - b) in&#xA; let max:Real = if(classe=Tax_Class_Category::Two) then 300000 else 150000 endif in&#xA; &#xA;&#x9;&#x9; if(amount&lt;max) then&#xA;&#x9;&#x9; let final_res:Real= round_lower_euros(res*1.07) in&#xA;&#x9;&#x9; if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif&#xA;&#x9;&#x9; else &#xA;&#x9;&#x9; let adjustement:Real= if(classe=Tax_Class_Category::One_A) then 982.86 else if(classe=Tax_Class_Category::Two) then 1988.88 else 994.44 endif endif in&#xA;&#x9;&#x9; &#x9;let final_res:Real= round_lower_euros(res + (res*0.09-adjustement)) in&#xA;&#x9;&#x9; &#x9;if(final_res&lt;12)then&#xA;&#x9;&#x9; 0&#xA;&#x9;&#x9; else&#xA;&#x9;&#x9; final_res&#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9; endif &#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif"/>
1759 </eAnnotations>
1760 <ownedParameter xmi:type="uml:Parameter" xmi:id="_C2RukG3OEeWcOt8eh6sd-w" direction="return">
1761 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1762 </ownedParameter>
1763 <ownedParameter xmi:type="uml:Parameter" xmi:id="_GJ4NUG3OEeWcOt8eh6sd-w" name="amount">
1764 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1765 </ownedParameter>
1766 <ownedParameter xmi:type="uml:Parameter" xmi:id="_JlWOoG3OEeWcOt8eh6sd-w" name="local_amount">
1767 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
1768 </ownedParameter>
1769 <ownedParameter xmi:type="uml:Parameter" xmi:id="_NdryIG3OEeWcOt8eh6sd-w" name="classe" type="Tax_Class_Category"/>
1770 <ownedParameter xmi:type="uml:Parameter" xmi:id="_QqTfIG3OEeWcOt8eh6sd-w" name="income_type">
1771 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1772 </ownedParameter>
1773 </ownedOperation>
1774 </packagedElement>
1775 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.56" memberEnd="Tax_Payer-from_law FromLaw-taxPayer"/>
1776 <packagedElement xmi:type="uml:Class" xmi:id="FromAgent" name="FromAgent">
1777 <ownedAttribute xmi:type="uml:Property" xmi:id="FromAgent-taxation_year" name="taxation_year" visibility="public" isOrdered="true" isUnique="false">
1778 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
1779 </ownedAttribute>
1780 <ownedAttribute xmi:type="uml:Property" xmi:id="FromAgent-taxPayer" name="taxPayer" type="Tax_Payer" isOrdered="true" association="_packagedElement.58">
1781 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_239Z4OKNEeSbvsXPkSdkbw" value="1"/>
1782 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_23-oAOKNEeSbvsXPkSdkbw" value="1"/>
1783 </ownedAttribute>
1784 <ownedAttribute xmi:type="uml:Property" xmi:id="_mePwsJLREeSsDc98mGjcqQ" name="is_dependent_eligible_for_CE_Not_In_Houshold_Children_Care">
1785 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1786 </ownedAttribute>
1787 <ownedAttribute xmi:type="uml:Property" xmi:id="_bpKHEJQ9EeSMZqrJQmR94g" name="expense" type="Expense" association="_bpLVMJQ9EeSMZqrJQmR94g">
1788 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bpKHEZQ9EeSMZqrJQmR94g"/>
1789 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpKHEpQ9EeSMZqrJQmR94g" value="1"/>
1790 </ownedAttribute>
1791 <ownedAttribute xmi:type="uml:Property" xmi:id="_n-YXUJQ9EeSMZqrJQmR94g" name="is_eligible_debt">
1792 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1793 </ownedAttribute>
1794 <ownedAttribute xmi:type="uml:Property" xmi:id="_suXD4ZLREeSsDc98mGjcqQ" name="dependent" type="Dependent" association="_suXD4JLREeSsDc98mGjcqQ">
1795 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_suXD4pLREeSsDc98mGjcqQ"/>
1796 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_suXD45LREeSsDc98mGjcqQ" value="1"/>
1797 </ownedAttribute>
1798 </packagedElement>
1799 <packagedElement xmi:type="uml:Association" xmi:id="_packagedElement.58" memberEnd="Tax_Payer-from_agent FromAgent-taxPayer"/>
1800 <packagedElement xmi:type="uml:Class" xmi:id="Fiscal_Address" name="Fiscal_Address">
1801 <generalization xmi:type="uml:Generalization" xmi:id="Fiscal_Address-_generalization.0" general="Address"/>
1802 </packagedElement>
1803 <packagedElement xmi:type="uml:Class" xmi:id="Habitual_Address" name="Habitual_Address">
1804 <generalization xmi:type="uml:Generalization" xmi:id="Habitual_Address-_generalization.0" general="Address"/>
1805 </packagedElement>
1806 <packagedElement xmi:type="uml:Class" xmi:id="Marriage_Record" name="Marriage_Record">
1807 <generalization xmi:type="uml:Generalization" xmi:id="Marriage_Record-_generalization.0" general="Legal_Union_Record"/>
1808 </packagedElement>
1809 <packagedElement xmi:type="uml:Class" xmi:id="Non_Resident_Tax_Payer" name="Non_Resident_Tax_Payer">
1810 <generalization xmi:type="uml:Generalization" xmi:id="Non_Resident_Tax_Payer-_generalization.0" general="Tax_Payer"/>
1811 <ownedAttribute xmi:type="uml:Property" xmi:id="Non_Resident_Tax_Payer-is_assimilated_to_resident" name="is_assimilated_to_resident" visibility="public" isOrdered="true">
1812 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1813 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Non_Resident_Tax_Payer-is_assimilated_to_resident-_defaultValue">
1814 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1815 </defaultValue>
1816 </ownedAttribute>
1817 </packagedElement>
1818 <packagedElement xmi:type="uml:Class" xmi:id="Partnership_Record" name="Partnership_Record">
1819 <generalization xmi:type="uml:Generalization" xmi:id="Partnership_Record-_generalization.0" general="Legal_Union_Record"/>
1820 </packagedElement>
1821 <packagedElement xmi:type="uml:Class" xmi:id="Resident_Tax_Payer" name="Resident_Tax_Payer">
1822 <generalization xmi:type="uml:Generalization" xmi:id="Resident_Tax_Payer-_generalization.0" general="Tax_Payer"/>
1823 <ownedAttribute xmi:type="uml:Property" xmi:id="Resident_Tax_Payer-test" name="test" visibility="public" isOrdered="true" isDerived="true">
1824 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="Resident_Tax_Payer-test-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot" source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
1825 <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="Resident_Tax_Payer-test-_http2F2Fwww.eclipse.org2Femf2F20022FEcore2FOCL2FPivot-_details.0" key="derivation" value="self.oclAsType(Tax_Payer).from_agent.taxation_year=2014"/>
1826 </eAnnotations>
1827 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1828 </ownedAttribute>
1829 </packagedElement>
1830 <packagedElement xmi:type="uml:Class" xmi:id="Trade_and_Business_Income" name="Trade_and_Business_Income">
1831 <generalization xmi:type="uml:Generalization" xmi:id="Trade_and_Business_Income-_generalization.0" general="Income_Type"/>
1832 </packagedElement>
1833 <packagedElement xmi:type="uml:Class" xmi:id="Agriculture_and_Forestry_Income" name="Agriculture_and_Forestry_Income">
1834 <generalization xmi:type="uml:Generalization" xmi:id="Agriculture_and_Forestry_Income-_generalization.0" general="Income_Type"/>
1835 </packagedElement>
1836 <packagedElement xmi:type="uml:Class" xmi:id="Pensions_and_Annuities_Income" name="Pensions_and_Annuities_Income">
1837 <generalization xmi:type="uml:Generalization" xmi:id="Pensions_and_Annuities_Income-_generalization.0" general="Income_Type"/>
1838 <ownedAttribute xmi:type="uml:Property" xmi:id="Pensions_and_Annuities_Income-occasional_payement" name="occasional_payement" visibility="public" isOrdered="true">
1839 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1840 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GTLfQJHpEeW69ojjkUQtrg"/>
1841 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GTUCIJHpEeW69ojjkUQtrg" value="1"/>
1842 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Pensions_and_Annuities_Income-occasional_payement-_defaultValue">
1843 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1844 </defaultValue>
1845 </ownedAttribute>
1846 </packagedElement>
1847 <packagedElement xmi:type="uml:Class" xmi:id="Capital_and_Investments_Income" name="Capital_and_Investments_Income">
1848 <generalization xmi:type="uml:Generalization" xmi:id="Capital_and_Investments_Income-_generalization.0" general="Income_Type"/>
1849 </packagedElement>
1850 <packagedElement xmi:type="uml:Class" xmi:id="Employment_Income" name="Employment_Income">
1851 <generalization xmi:type="uml:Generalization" xmi:id="Employment_Income-_generalization.0" general="Income_Type"/>
1852 </packagedElement>
1853 <packagedElement xmi:type="uml:Class" xmi:id="Rentals_and_Leases_Income" name="Rentals_and_Leases_Income">
1854 <generalization xmi:type="uml:Generalization" xmi:id="Rentals_and_Leases_Income-_generalization.0" general="Income_Type"/>
1855 <ownedAttribute xmi:type="uml:Property" xmi:id="Rentals_and_Leases_Income-is_periodic" name="is_periodic" visibility="public" isOrdered="true">
1856 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1857 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Rentals_and_Leases_Income-is_periodic-_defaultValue" value="true">
1858 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1859 </defaultValue>
1860 </ownedAttribute>
1861 </packagedElement>
1862 <packagedElement xmi:type="uml:Class" xmi:id="Foreign_Income" name="Foreign_Income">
1863 <generalization xmi:type="uml:Generalization" xmi:id="Foreign_Income-_generalization.0" general="Income"/>
1864 </packagedElement>
1865 <packagedElement xmi:type="uml:Class" xmi:id="Local_Income" name="Local_Income">
1866 <generalization xmi:type="uml:Generalization" xmi:id="Local_Income-_generalization.0" general="Income"/>
1867 </packagedElement>
1868 <packagedElement xmi:type="uml:Class" xmi:id="CIM" name="CIM">
1869 <generalization xmi:type="uml:Generalization" xmi:id="CIM-_generalization.0" general="Income_Tax_Credit"/>
1870 </packagedElement>
1871 <packagedElement xmi:type="uml:Class" xmi:id="CIP" name="CIP">
1872 <generalization xmi:type="uml:Generalization" xmi:id="CIP-_generalization.0" general="Income_Tax_Credit"/>
1873 </packagedElement>
1874 <packagedElement xmi:type="uml:Class" xmi:id="CIS" name="CIS">
1875 <generalization xmi:type="uml:Generalization" xmi:id="CIS-_generalization.0" general="Income_Tax_Credit"/>
1876 </packagedElement>
1877 <packagedElement xmi:type="uml:Class" xmi:id="FD" name="FD">
1878 <generalization xmi:type="uml:Generalization" xmi:id="FD-_generalization.0" general="Professional_Expenses_Deduction"/>
1879 <ownedAttribute xmi:type="uml:Property" xmi:id="FD-distance_declared_in_january" name="distance_declared_in_january" visibility="public" isOrdered="true">
1880 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1881 </ownedAttribute>
1882 <ownedAttribute xmi:type="uml:Property" xmi:id="FD-calculated_distance" name="calculated_distance" visibility="public" isOrdered="true" isDerived="true">
1883 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1884 </ownedAttribute>
1885 <ownedOperation xmi:type="uml:Operation" xmi:id="FD-compute_distance_unit_between_home_and_workpalce" name="compute_distance_unit_between_home_and_workpalce" visibility="public">
1886 <ownedParameter xmi:type="uml:Parameter" xmi:id="FD-compute_distance_unit_between_home_and_workpalce-_ownedParameter.0" isOrdered="true" direction="return">
1887 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1888 </ownedParameter>
1889 </ownedOperation>
1890 </packagedElement>
1891 <packagedElement xmi:type="uml:Class" xmi:id="Professional_Expenses_Deduction" name="Professional_Expenses_Deduction"/>
1892 <packagedElement xmi:type="uml:Class" xmi:id="FO" name="FO">
1893 <generalization xmi:type="uml:Generalization" xmi:id="FO-_generalization.0" general="Professional_Expenses_Deduction"/>
1894 <ownedAttribute xmi:type="uml:Property" xmi:id="FO-rate_type_for_FO" name="rate_type_for_FO" visibility="public" type="Type_of_Rate" isOrdered="true" isDerived="true"/>
1895 <ownedOperation xmi:type="uml:Operation" xmi:id="FO-compute_disability_flat_rate" name="compute_disability_flat_rate" visibility="public">
1896 <ownedParameter xmi:type="uml:Parameter" xmi:id="FO-compute_disability_flat_rate-_ownedParameter.0" isOrdered="true" direction="return">
1897 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1898 </ownedParameter>
1899 </ownedOperation>
1900 <ownedOperation xmi:type="uml:Operation" xmi:id="FO-compute_regular_flat_rate" name="compute_regular_flat_rate" visibility="public">
1901 <ownedParameter xmi:type="uml:Parameter" xmi:id="FO-compute_regular_flat_rate-_ownedParameter.0" isOrdered="true" direction="return">
1902 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1903 </ownedParameter>
1904 </ownedOperation>
1905 </packagedElement>
1906 <packagedElement xmi:type="uml:Class" xmi:id="DS_for_Permanent_Expense" name="DS_for_Permanent_Expense">
1907 <generalization xmi:type="uml:Generalization" xmi:id="DS_for_Permanent_Expense-_generalization.0" general="DS"/>
1908 <ownedAttribute xmi:type="uml:Property" xmi:id="DS_for_Permanent_Expense-permanent_expense_category" name="permanent_expense_category" visibility="public" type="Category_of_Permanent_Expense" isOrdered="true"/>
1909 </packagedElement>
1910 <packagedElement xmi:type="uml:Class" xmi:id="DS" name="DS">
1911 <ownedRule xmi:type="uml:Constraint" xmi:id="_XRpF4D9zEeWzD95_WvVH8Q" name="Child_allawances">
1912 <specification xmi:type="uml:LiteralString" xmi:id="_XRps8D9zEeWzD95_WvVH8Q" value=""/>
1913 </ownedRule>
1914 <ownedAttribute xmi:type="uml:Property" xmi:id="DS-maximum_deductible_amount" name="maximum_deductible_amount" visibility="public" isOrdered="true">
1915 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1916 </ownedAttribute>
1917 <ownedAttribute xmi:type="uml:Property" xmi:id="_UVY60EzrEeaVApgXPK28xA" name="id3" isID="true">
1918 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1919 </ownedAttribute>
1920 </packagedElement>
1921 <packagedElement xmi:type="uml:Enumeration" xmi:id="Category_of_Permanent_Expense" name="Category_of_Permanent_Expense">
1922 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Permanent_Expense-MISCELLANEOUS_DEBT" name="MISCELLANEOUS_DEBT"/>
1923 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Permanent_Expense-ALIMONY" name="ALIMONY"/>
1924 </packagedElement>
1925 <packagedElement xmi:type="uml:Class" xmi:id="DS_for_Interest_Expense" name="DS_for_Interest_Expense">
1926 <generalization xmi:type="uml:Generalization" xmi:id="DS_for_Interest_Expense-_generalization.0" general="DS"/>
1927 <ownedOperation xmi:type="uml:Operation" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount" name="compute_maximum_deductible_amount" visibility="public">
1928 <ownedParameter xmi:type="uml:Parameter" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-_ownedParameter.0" isOrdered="true" direction="return">
1929 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1930 </ownedParameter>
1931 <ownedParameter xmi:type="uml:Parameter" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_children_with_allowances" name="IN_children_with_allowances" type="Dependent">
1932 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_children_with_allowances-_lowerValue"/>
1933 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_children_with_allowances-_upperValue" value="*"/>
1934 </ownedParameter>
1935 <ownedParameter xmi:type="uml:Parameter" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_legal_union" name="IN_legal_union" type="Legal_Union_Record">
1936 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_legal_union-_lowerValue"/>
1937 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_legal_union-_upperValue" value="*"/>
1938 </ownedParameter>
1939 </ownedOperation>
1940 </packagedElement>
1941 <packagedElement xmi:type="uml:Class" xmi:id="DS_for_Health_and_Pension_Insurance" name="DS_for_Health_and_Pension_Insurance">
1942 <generalization xmi:type="uml:Generalization" xmi:id="DS_for_Health_and_Pension_Insurance-_generalization.0" general="DS"/>
1943 <ownedAttribute xmi:type="uml:Property" xmi:id="DS_for_Health_and_Pension_Insurance-insurance_category" name="insurance_category" visibility="public" type="Category_of_Health_and_Pension_Insurances" isOrdered="true"/>
1944 </packagedElement>
1945 <packagedElement xmi:type="uml:Enumeration" xmi:id="Category_of_Health_and_Pension_Insurances" name="Category_of_Health_and_Pension_Insurances">
1946 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Health_and_Pension_Insurances-MANDATORY_HEALTH_AND_PENSION_INSURANCE" name="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
1947 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Health_and_Pension_Insurances-ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" name="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
1948 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Health_and_Pension_Insurances-CONTINUED_HEALTH_AND_PENSION_INSURANCE" name="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
1949 </packagedElement>
1950 <packagedElement xmi:type="uml:Class" xmi:id="DS_for_Private_Insurance_and_Plan" name="DS_for_Private_Insurance_and_Plan">
1951 <generalization xmi:type="uml:Generalization" xmi:id="DS_for_Private_Insurance_and_Plan-_generalization.0" general="DS"/>
1952 <ownedAttribute xmi:type="uml:Property" xmi:id="DS_for_Private_Insurance_and_Plan-private_insurance_and_plan_category" name="private_insurance_and_plan_category" visibility="public" type="Category_of_Private_Insurance_and_Plan" isOrdered="true"/>
1953 <ownedAttribute xmi:type="uml:Property" xmi:id="DS_for_Private_Insurance_and_Plan-increase_for_life_insurance" name="increase_for_life_insurance" visibility="public" isOrdered="true" isDerived="true">
1954 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1955 </ownedAttribute>
1956 <ownedAttribute xmi:type="uml:Property" xmi:id="DS_for_Private_Insurance_and_Plan-maximum_deductible_amount_for_private_insurance" name="maximum_deductible_amount_for_private_insurance" visibility="public" isOrdered="true" isDerived="true">
1957 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1958 </ownedAttribute>
1959 <ownedAttribute xmi:type="uml:Property" xmi:id="DS_for_Private_Insurance_and_Plan-maximum_deductible_amount_for_old_age_pension_plan" name="maximum_deductible_amount_for_old_age_pension_plan" visibility="public" isOrdered="true" isDerived="true">
1960 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
1961 </ownedAttribute>
1962 <ownedOperation xmi:type="uml:Operation" xmi:id="DS_for_Private_Insurance_and_Plan-compute_increase_for_life_insurance" name="compute_increase_for_life_insurance" visibility="public">
1963 <ownedParameter xmi:type="uml:Parameter" xmi:id="DS_for_Private_Insurance_and_Plan-compute_increase_for_life_insurance-_ownedParameter.0" isOrdered="true" direction="return">
1964 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1965 </ownedParameter>
1966 </ownedOperation>
1967 <ownedOperation xmi:type="uml:Operation" xmi:id="DS_for_Private_Insurance_and_Plan-compute_maximum_deductible_amount_for_private_insruance" name="compute_maximum_deductible_amount_for_private_insruance" visibility="public">
1968 <ownedParameter xmi:type="uml:Parameter" xmi:id="DS_for_Private_Insurance_and_Plan-compute_maximum_deductible_amount_for_private_insruance-_ownedParameter.0" isOrdered="true" direction="return">
1969 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1970 </ownedParameter>
1971 </ownedOperation>
1972 <ownedOperation xmi:type="uml:Operation" xmi:id="DS_for_Private_Insurance_and_Plan-compute_maximum_deductible_amount_for_old_age_pension_plan" name="compute_maximum_deductible_amount_for_old_age_pension_plan" visibility="public">
1973 <ownedParameter xmi:type="uml:Parameter" xmi:id="DS_for_Private_Insurance_and_Plan-compute_maximum_deductible_amount_for_old_age_pension_plan-_ownedParameter.0" isOrdered="true" direction="return">
1974 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
1975 </ownedParameter>
1976 </ownedOperation>
1977 </packagedElement>
1978 <packagedElement xmi:type="uml:Enumeration" xmi:id="Category_of_Private_Insurance_and_Plan" name="Category_of_Private_Insurance_and_Plan">
1979 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Private_Insurance_and_Plan-PRIVATE_INSURANCE" name="PRIVATE_INSURANCE"/>
1980 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Private_Insurance_and_Plan-PRIVATE_LIFE_INSURANCE" name="PRIVATE_LIFE_INSURANCE"/>
1981 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Private_Insurance_and_Plan-COMPANY_MEMBERS_PRIVATE_INSURANCE" name="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
1982 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Private_Insurance_and_Plan-HOUSING_SAVING_PLAN" name="HOUSING_SAVING_PLAN"/>
1983 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="Category_of_Private_Insurance_and_Plan-OLD_AGE_PENSION_PLAN" name="OLD_AGE_PENSION_PLAN"/>
1984 </packagedElement>
1985 <packagedElement xmi:type="uml:Class" xmi:id="DS_for_Loss_Carryforward" name="DS_for_Loss_Carryforward">
1986 <generalization xmi:type="uml:Generalization" xmi:id="DS_for_Loss_Carryforward-_generalization.0" general="DS"/>
1987 </packagedElement>
1988 <packagedElement xmi:type="uml:Class" xmi:id="DS_for_Donation" name="DS_for_Donation">
1989 <generalization xmi:type="uml:Generalization" xmi:id="DS_for_Donation-_generalization.0" general="DS"/>
1990 </packagedElement>
1991 <packagedElement xmi:type="uml:Class" xmi:id="Permanent_Expense" name="Permanent_Expense">
1992 <generalization xmi:type="uml:Generalization" xmi:id="Permanent_Expense-_generalization.0" general="Special_Expense_DS"/>
1993 <ownedAttribute xmi:type="uml:Property" xmi:id="Permanent_Expense-category" name="category" visibility="public" type="Category_of_Permanent_Expense" isOrdered="true"/>
1994 <ownedAttribute xmi:type="uml:Property" xmi:id="Permanent_Expense-is_eligible_for_deduction" name="is_eligible_for_deduction" visibility="public" isOrdered="true" isDerived="true">
1995 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1996 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Permanent_Expense-is_eligible_for_deduction-_defaultValue">
1997 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
1998 </defaultValue>
1999 </ownedAttribute>
2000 <ownedOperation xmi:type="uml:Operation" xmi:id="Permanent_Expense-is_expense_eligible_for_deduction" name="is_expense_eligible_for_deduction" visibility="public">
2001 <ownedParameter xmi:type="uml:Parameter" xmi:id="Permanent_Expense-is_expense_eligible_for_deduction-_ownedParameter.0" isOrdered="true" direction="return">
2002 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2003 </ownedParameter>
2004 <ownedParameter xmi:type="uml:Parameter" xmi:id="Permanent_Expense-is_expense_eligible_for_deduction-IN_agent_response" name="IN_agent_response" isOrdered="true">
2005 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2006 </ownedParameter>
2007 </ownedOperation>
2008 </packagedElement>
2009 <packagedElement xmi:type="uml:Class" xmi:id="Special_Expense_DS" name="Special_Expense_DS">
2010 <generalization xmi:type="uml:Generalization" xmi:id="Special_Expense_DS-_generalization.0" general="Expense"/>
2011 </packagedElement>
2012 <packagedElement xmi:type="uml:Class" xmi:id="Interest_Expense" name="Interest_Expense">
2013 <generalization xmi:type="uml:Generalization" xmi:id="Interest_Expense-_generalization.0" general="Special_Expense_DS"/>
2014 </packagedElement>
2015 <packagedElement xmi:type="uml:Class" xmi:id="Private_Insurance_and_Plan" name="Private_Insurance_and_Plan">
2016 <generalization xmi:type="uml:Generalization" xmi:id="Private_Insurance_and_Plan-_generalization.0" general="Special_Expense_DS"/>
2017 <ownedAttribute xmi:type="uml:Property" xmi:id="Private_Insurance_and_Plan-category" name="category" visibility="public" type="Category_of_Private_Insurance_and_Plan" isOrdered="true"/>
2018 <ownedAttribute xmi:type="uml:Property" xmi:id="Private_Insurance_and_Plan-duration_of_contract" name="duration_of_contract" visibility="public" isOrdered="true">
2019 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
2020 </ownedAttribute>
2021 <ownedAttribute xmi:type="uml:Property" xmi:id="Private_Insurance_and_Plan-is_private_insurance_and_plan_eligible_for_deduction" name="is_private_insurance_and_plan_eligible_for_deduction" visibility="public" isOrdered="true" isDerived="true">
2022 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2023 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Private_Insurance_and_Plan-is_private_insurance_and_plan_eligible_for_deduction-_defaultValue">
2024 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2025 </defaultValue>
2026 </ownedAttribute>
2027 <ownedOperation xmi:type="uml:Operation" xmi:id="Private_Insurance_and_Plan-is_private_insurance_and_plan_eligible_for_deduction.1" name="is_private_insurance_and_plan_eligible_for_deduction" visibility="public">
2028 <ownedParameter xmi:type="uml:Parameter" xmi:id="Private_Insurance_and_Plan-is_private_insurance_and_plan_eligible_for_deduction.1-_ownedParameter.0" isOrdered="true" direction="return">
2029 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2030 </ownedParameter>
2031 </ownedOperation>
2032 </packagedElement>
2033 <packagedElement xmi:type="uml:Class" xmi:id="Health_and_Pension_Insurance" name="Health_and_Pension_Insurance">
2034 <generalization xmi:type="uml:Generalization" xmi:id="Health_and_Pension_Insurance-_generalization.0" general="Special_Expense_DS"/>
2035 <ownedAttribute xmi:type="uml:Property" xmi:id="Health_and_Pension_Insurance-category" name="category" visibility="public" type="Category_of_Health_and_Pension_Insurances" isOrdered="true"/>
2036 <ownedAttribute xmi:type="uml:Property" xmi:id="Health_and_Pension_Insurance-is_related_to_additional_salary" name="is_related_to_additional_salary" visibility="public" isOrdered="true">
2037 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2038 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Health_and_Pension_Insurance-is_related_to_additional_salary-_defaultValue">
2039 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2040 </defaultValue>
2041 </ownedAttribute>
2042 </packagedElement>
2043 <packagedElement xmi:type="uml:Class" xmi:id="Donation" name="Donation">
2044 <generalization xmi:type="uml:Generalization" xmi:id="Donation-_generalization.0" general="Special_Expense_DS"/>
2045 <ownedAttribute xmi:type="uml:Property" xmi:id="Donation-beneficiary" name="beneficiary1" visibility="public" isOrdered="true">
2046 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
2047 </ownedAttribute>
2048 <ownedAttribute xmi:type="uml:Property" xmi:id="Donation-is_beneficiary_eligible" name="is_beneficiary_eligible" visibility="public" isOrdered="true" isDerived="true">
2049 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2050 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Donation-is_beneficiary_eligible-_defaultValue">
2051 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2052 </defaultValue>
2053 </ownedAttribute>
2054 <ownedAttribute xmi:type="uml:Property" xmi:id="Donation-is_donation_reported" name="is_donation_reported" visibility="public" isOrdered="true">
2055 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2056 </ownedAttribute>
2057 <ownedOperation xmi:type="uml:Operation" xmi:id="Donation-get_beneficiary_eligibility_for_deduction" name="get_beneficiary_eligibility_for_deduction" visibility="public">
2058 <ownedParameter xmi:type="uml:Parameter" xmi:id="Donation-get_beneficiary_eligibility_for_deduction-_ownedParameter.0" isOrdered="true" direction="return">
2059 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2060 </ownedParameter>
2061 </ownedOperation>
2062 </packagedElement>
2063 <packagedElement xmi:type="uml:Class" xmi:id="Loss_Carryforward" name="Loss_Carryforward">
2064 <generalization xmi:type="uml:Generalization" xmi:id="Loss_Carryforward-_generalization.0" general="Special_Expense_DS"/>
2065 <ownedAttribute xmi:type="uml:Property" xmi:id="Loss_Carryforward-regular_accountability" name="regular_accountability" visibility="public" isOrdered="true" isDerived="true">
2066 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2067 </ownedAttribute>
2068 <ownedAttribute xmi:type="uml:Property" xmi:id="Loss_Carryforward-compensation_by_other_means" name="compensation_by_other_means" visibility="public" isOrdered="true" isDerived="true">
2069 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2070 </ownedAttribute>
2071 <ownedAttribute xmi:type="uml:Property" xmi:id="Loss_Carryforward-tax_payer_has_inherited_business_ownership" name="tax_payer_has_inherited_business_ownership" visibility="public" isOrdered="true" isDerived="true">
2072 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2073 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Loss_Carryforward-tax_payer_has_inherited_business_ownership-_defaultValue">
2074 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2075 </defaultValue>
2076 </ownedAttribute>
2077 <ownedAttribute xmi:type="uml:Property" xmi:id="Loss_Carryforward-tax_payer_has_been_partner_in_business" name="tax_payer_has_been_partner_in_business" visibility="public" isOrdered="true" isDerived="true">
2078 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2079 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Loss_Carryforward-tax_payer_has_been_partner_in_business-_defaultValue" value="true">
2080 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2081 </defaultValue>
2082 </ownedAttribute>
2083 <ownedOperation xmi:type="uml:Operation" xmi:id="Loss_Carryforward-is_accountability_regular" name="is_accountability_regular" visibility="public">
2084 <ownedParameter xmi:type="uml:Parameter" xmi:id="Loss_Carryforward-is_accountability_regular-_ownedParameter.0" isOrdered="true" direction="return">
2085 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2086 </ownedParameter>
2087 </ownedOperation>
2088 <ownedOperation xmi:type="uml:Operation" xmi:id="Loss_Carryforward-is_compensated_by_other_means" name="is_compensated_by_other_means" visibility="public">
2089 <ownedParameter xmi:type="uml:Parameter" xmi:id="Loss_Carryforward-is_compensated_by_other_means-_ownedParameter.0" isOrdered="true" direction="return">
2090 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2091 </ownedParameter>
2092 </ownedOperation>
2093 <ownedOperation xmi:type="uml:Operation" xmi:id="Loss_Carryforward-has_been_tax_payer_partner_in_business" name="has_been_tax_payer_partner_in_business" visibility="public">
2094 <ownedParameter xmi:type="uml:Parameter" xmi:id="Loss_Carryforward-has_been_tax_payer_partner_in_business-_ownedParameter.0" isOrdered="true" direction="return">
2095 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2096 </ownedParameter>
2097 </ownedOperation>
2098 <ownedOperation xmi:type="uml:Operation" xmi:id="Loss_Carryforward-has_tax_payer_inherited_business_ownership" name="has_tax_payer_inherited_business_ownership" visibility="public">
2099 <ownedParameter xmi:type="uml:Parameter" xmi:id="Loss_Carryforward-has_tax_payer_inherited_business_ownership-_ownedParameter.0" isOrdered="true" direction="return">
2100 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2101 </ownedParameter>
2102 </ownedOperation>
2103 </packagedElement>
2104 <packagedElement xmi:type="uml:Class" xmi:id="Spousal_Expense_AC" name="Spousal_Expense_AC">
2105 <generalization xmi:type="uml:Generalization" xmi:id="Spousal_Expense_AC-_generalization.0" general="Expense"/>
2106 </packagedElement>
2107 <packagedElement xmi:type="uml:Class" xmi:id="Extraordinary_Expense_CE" name="Extraordinary_Expense_CE">
2108 <generalization xmi:type="uml:Generalization" xmi:id="Extraordinary_Expense_CE-_generalization.0" general="Expense"/>
2109 <ownedAttribute xmi:type="uml:Property" xmi:id="Extraordinary_Expense_CE-thresholded_deduction_percentage" name="thresholded_deduction_percentage" visibility="public" isOrdered="true">
2110 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
2111 </ownedAttribute>
2112 <ownedAttribute xmi:type="uml:Property" xmi:id="Extraordinary_Expense_CE-ce_type" name="ce_type" visibility="public" type="CE_Type" isOrdered="true"/>
2113 <ownedOperation xmi:type="uml:Operation" xmi:id="Extraordinary_Expense_CE-is_above_thresholded_deduction_percentage_for_CE" name="is_above_thresholded_deduction_percentage_for_CE" visibility="public">
2114 <ownedParameter xmi:type="uml:Parameter" xmi:id="Extraordinary_Expense_CE-is_above_thresholded_deduction_percentage_for_CE-_ownedParameter.0" isOrdered="true" direction="return">
2115 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2116 </ownedParameter>
2117 </ownedOperation>
2118 <ownedOperation xmi:type="uml:Operation" xmi:id="Extraordinary_Expense_CE-compute_thresholded_deduction_percentage_for_CE" name="compute_thresholded_deduction_percentage_for_CE" visibility="public">
2119 <ownedParameter xmi:type="uml:Parameter" xmi:id="Extraordinary_Expense_CE-compute_thresholded_deduction_percentage_for_CE-_ownedParameter.0" isOrdered="true" direction="return">
2120 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
2121 </ownedParameter>
2122 <ownedParameter xmi:type="uml:Parameter" xmi:id="Extraordinary_Expense_CE-compute_thresholded_deduction_percentage_for_CE-IN_thresholded_deduction_percentage" name="IN_thresholded_deduction_percentage" isOrdered="true">
2123 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBigDecimal"/>
2124 </ownedParameter>
2125 </ownedOperation>
2126 </packagedElement>
2127 <packagedElement xmi:type="uml:Class" xmi:id="Travel_Expense_FD" name="Travel_Expense_FD">
2128 <generalization xmi:type="uml:Generalization" xmi:id="Travel_Expense_FD-_generalization.0" general="Professional_Expense"/>
2129 </packagedElement>
2130 <packagedElement xmi:type="uml:Class" xmi:id="Professional_Expense" name="Professional_Expense">
2131 <generalization xmi:type="uml:Generalization" xmi:id="Professional_Expense-_generalization.0" general="Expense"/>
2132 </packagedElement>
2133 <packagedElement xmi:type="uml:Class" xmi:id="Miscellaneous_Expense_FO" name="Miscellaneous_Expense_FO">
2134 <generalization xmi:type="uml:Generalization" xmi:id="Miscellaneous_Expense_FO-_generalization.0" general="Professional_Expense"/>
2135 </packagedElement>
2136 <packagedElement xmi:type="uml:Class" xmi:id="_0yLxwIH5EeSH_sby466C_w" name="Tax_Property">
2137 <ownedAttribute xmi:type="uml:Property" xmi:id="_4bpLwIH5EeSH_sby466C_w" name="starting_year">
2138 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
2139 </ownedAttribute>
2140 <ownedAttribute xmi:type="uml:Property" xmi:id="__YPKcIH5EeSH_sby466C_w" name="taxed_jointly">
2141 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
2142 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GvQbUIH6EeSH_sby466C_w"/>
2143 </ownedAttribute>
2144 <ownedAttribute xmi:type="uml:Property" xmi:id="_9CxtcIqVEeSCrr7uegGAVw" name="union_record" type="Legal_Union_Record" association="_9Cy7kIqVEeSCrr7uegGAVw">
2145 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9CxtcYqVEeSCrr7uegGAVw" value="1"/>
2146 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9CxtcoqVEeSCrr7uegGAVw" value="1"/>
2147 </ownedAttribute>
2148 <ownedAttribute xmi:type="uml:Property" xmi:id="_TD2lAEzsEeaVApgXPK28xA" name="id10" isID="true">
2149 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
2150 </ownedAttribute>
2151 </packagedElement>
2152 <packagedElement xmi:type="uml:Enumeration" xmi:id="_7auHsIOIEeSemtkAhxylbQ" name="Separation_Causes">
2153 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_Qi5bUIOJEeSemtkAhxylbQ" name="NONE"/>
2154 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_91HGgIOIEeSemtkAhxylbQ" name="DIVORCE"/>
2155 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_DNoDUIOJEeSemtkAhxylbQ" name="SEPARATION_DE_FAIT"/>
2156 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_HzD9YIOJEeSemtkAhxylbQ" name="SEPARATION_BY_COURT"/>
2157 </packagedElement>
2158 <packagedElement xmi:type="uml:Enumeration" xmi:id="_dTr3IIOSEeSemtkAhxylbQ" name="Legal_Union_Types">
2159 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_f4bEwIOSEeSemtkAhxylbQ" name="MARIAGE"/>
2160 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_rawfgIOSEeSemtkAhxylbQ" name="PARTNERSHIP"/>
2161 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_vpTjkIOSEeSemtkAhxylbQ" name="OTHER"/>
2162 </packagedElement>
2163 <packagedElement xmi:type="uml:Association" xmi:id="_oA2J8IXuEeSLiOAbrK2uyQ" memberEnd="_oA2J8YXuEeSLiOAbrK2uyQ _oAwqYIXuEeSLiOAbrK2uyQ"/>
2164 <packagedElement xmi:type="uml:Interface" xmi:id="_1gja4IXvEeSLiOAbrK2uyQ" name="Tax_Case"/>
2165 <packagedElement xmi:type="uml:Association" xmi:id="_5Yy38IYUEeS819S0h0iEVw" memberEnd="_5Yy38YYUEeS819S0h0iEVw _5YyQ4IYUEeS819S0h0iEVw">
2166 <ownedEnd xmi:type="uml:Property" xmi:id="_5Yy38YYUEeS819S0h0iEVw" name="legal_union_A" type="Legal_Union_Record" association="_5Yy38IYUEeS819S0h0iEVw">
2167 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Yy38oYUEeS819S0h0iEVw" value="1"/>
2168 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5Yy384YUEeS819S0h0iEVw" value="1"/>
2169 </ownedEnd>
2170 </packagedElement>
2171 <packagedElement xmi:type="uml:Association" xmi:id="_0ISyMIYVEeS819S0h0iEVw" memberEnd="_0ISyMYYVEeS819S0h0iEVw _0ISLIIYVEeS819S0h0iEVw">
2172 <ownedEnd xmi:type="uml:Property" xmi:id="_0ISyMYYVEeS819S0h0iEVw" name="legal_union_B" type="Legal_Union_Record" association="_0ISyMIYVEeS819S0h0iEVw">
2173 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0ISyMoYVEeS819S0h0iEVw" value="1"/>
2174 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0ISyM4YVEeS819S0h0iEVw" value="1"/>
2175 </ownedEnd>
2176 </packagedElement>
2177 <packagedElement xmi:type="uml:Association" xmi:id="_ys1IMInjEeS51qv-dTzbfg" memberEnd="_ys1IMYnjEeS51qv-dTzbfg _ysz6EInjEeS51qv-dTzbfg"/>
2178 <packagedElement xmi:type="uml:Association" xmi:id="_9Cy7kIqVEeSCrr7uegGAVw" memberEnd="_9Cy7kYqVEeSCrr7uegGAVw _9CxtcIqVEeSCrr7uegGAVw"/>
2179 <packagedElement xmi:type="uml:Association" xmi:id="_tLMGQJASEeSrKuFMY7nEzg" memberEnd="_tLMGQZASEeSrKuFMY7nEzg _tLDjYJASEeSrKuFMY7nEzg"/>
2180 <packagedElement xmi:type="uml:Association" xmi:id="_suXD4JLREeSsDc98mGjcqQ" memberEnd="_suXD4ZLREeSsDc98mGjcqQ _suTZgJLREeSsDc98mGjcqQ"/>
2181 <packagedElement xmi:type="uml:Association" xmi:id="_Mr92cJN2EeSS6JjHMC2a3A" memberEnd="_Mr92cZN2EeSS6JjHMC2a3A _Mr8oUJN2EeSS6JjHMC2a3A"/>
2182 <packagedElement xmi:type="uml:Association" xmi:id="_4QQ94D-FEeWJhua38hb9gw" name="reciver" memberEnd="_4QQ94T-FEeWJhua38hb9gw _4QQW0D-FEeWJhua38hb9gw" navigableOwnedEnd="_4QQW0D-FEeWJhua38hb9gw">
2183 <ownedEnd xmi:type="uml:Property" xmi:id="_4QQW0D-FEeWJhua38hb9gw" name="external_Allowance" type="External_Allowance" association="_4QQ94D-FEeWJhua38hb9gw">
2184 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4QQW0T-FEeWJhua38hb9gw"/>
2185 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4QQW0j-FEeWJhua38hb9gw" value="*"/>
2186 </ownedEnd>
2187 </packagedElement>
2188 <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_profileApplication.0">
2189 <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_profileApplication.0-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
2190 <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
2191 </eAnnotations>
2192 <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
2193 </profileApplication>
2194 </uml:Model>
2195 <Ecore:EPackage xmi:id="_1" base_Package="_0" nsPrefix="TaxCard"/>
2196 <Ecore:EEnum xmi:id="_2" base_Enumeration="Grantor"/>
2197 <Ecore:EEnumLiteral xmi:id="_3" base_EnumerationLiteral="Grantor-ACD" literal="WWW"/>
2198 <Ecore:EEnumLiteral xmi:id="_4" base_EnumerationLiteral="Grantor-Employer" literal="Employer"/>
2199 <Ecore:EEnumLiteral xmi:id="_5" base_EnumerationLiteral="Grantor-CNPF" literal="MMM"/>
2200 <Ecore:EEnumLiteral xmi:id="_6" base_EnumerationLiteral="Grantor-CEDIES" literal="UUU"/>
2201 <Ecore:EEnumLiteral xmi:id="_7" base_EnumerationLiteral="Grantor-SNJ" literal="YYY"/>
2202 <Ecore:EEnumLiteral xmi:id="_8" base_EnumerationLiteral="Grantor-CNAP" literal="OOO"/>
2203 <Ecore:EClass xmi:id="_9" base_Class="Constants"/>
2204 <Ecore:EEnum xmi:id="_10" base_Enumeration="Disability_Types"/>
2205 <Ecore:EEnumLiteral xmi:id="_11" base_EnumerationLiteral="Disability_Types-A" literal="A"/>
2206 <Ecore:EEnumLiteral xmi:id="_12" base_EnumerationLiteral="Disability_Types-B" literal="B"/>
2207 <Ecore:EEnumLiteral xmi:id="_13" base_EnumerationLiteral="Disability_Types-C" literal="C"/>
2208 <Ecore:EEnumLiteral xmi:id="_14" base_EnumerationLiteral="Disability_Types-D" literal="D"/>
2209 <Ecore:EEnumLiteral xmi:id="_15" base_EnumerationLiteral="Disability_Types-E" literal="E"/>
2210 <Ecore:EEnum xmi:id="_17" base_Enumeration="Country"/>
2211 <Ecore:EEnumLiteral xmi:id="_18" base_EnumerationLiteral="Country-LU" literal="ZZ"/>
2212 <Ecore:EEnumLiteral xmi:id="_19" base_EnumerationLiteral="Country-FR" literal="FF"/>
2213 <Ecore:EEnumLiteral xmi:id="_20" base_EnumerationLiteral="Country-BE" literal="BB"/>
2214 <Ecore:EEnumLiteral xmi:id="_21" base_EnumerationLiteral="Country-DE" literal="DD"/>
2215 <Ecore:EEnumLiteral xmi:id="_22" base_EnumerationLiteral="Country-NL" literal="NN"/>
2216 <Ecore:EEnumLiteral xmi:id="_23" base_EnumerationLiteral="Country-OTHER" literal="OTHER"/>
2217 <Ecore:EEnum xmi:id="_24" base_Enumeration="Tax_Card_Type"/>
2218 <Ecore:EEnumLiteral xmi:id="_25" base_EnumerationLiteral="Tax_Card_Type-Principal" literal="Principal"/>
2219 <Ecore:EEnumLiteral xmi:id="_26" base_EnumerationLiteral="Tax_Card_Type-Additional" literal="Additional"/>
2220 <Ecore:EEnum xmi:id="_27" base_Enumeration="Tax_Office"/>
2221 <Ecore:EEnumLiteral xmi:id="_28" base_EnumerationLiteral="Tax_Office-RTS_2" literal="RTS_2"/>
2222 <Ecore:EEnumLiteral xmi:id="_29" base_EnumerationLiteral="Tax_Office-RTS_3" literal="RTS_3"/>
2223 <Ecore:EEnumLiteral xmi:id="_30" base_EnumerationLiteral="Tax_Office-RTS_Esch" literal="RTS_4"/>
2224 <Ecore:EEnumLiteral xmi:id="_31" base_EnumerationLiteral="Tax_Office-RTS_Ettelbruck" literal="RTS_5"/>
2225 <Ecore:EEnum xmi:id="_32" base_Enumeration="Tax_Class_Category"/>
2226 <Ecore:EEnumLiteral xmi:id="_33" base_EnumerationLiteral="Tax_Class_Category-One" literal="One"/>
2227 <Ecore:EEnumLiteral xmi:id="_34" base_EnumerationLiteral="Tax_Class_Category-One_A" literal="One_A"/>
2228 <Ecore:EEnumLiteral xmi:id="_35" base_EnumerationLiteral="Tax_Class_Category-Two" literal="Two"/>
2229 <Ecore:EEnum xmi:id="_36" base_Enumeration="Job_Activity"/>
2230 <Ecore:EEnumLiteral xmi:id="_37" base_EnumerationLiteral="Job_Activity-Salary" literal="Salary"/>
2231 <Ecore:EEnumLiteral xmi:id="_38" base_EnumerationLiteral="Job_Activity-Pension" literal="Pension"/>
2232 <Ecore:EEnumLiteral xmi:id="_39" base_EnumerationLiteral="Job_Activity-Annuity" literal="Annuity"/>
2233 <Ecore:EEnum xmi:id="_40" base_Enumeration="Town"/>
2234 <Ecore:EEnumLiteral xmi:id="_41" base_EnumerationLiteral="Town-Luxembourg_city" literal="LL"/>
2235 <Ecore:EEnumLiteral xmi:id="_42" base_EnumerationLiteral="Town-Bertrange" literal="BB"/>
2236 <Ecore:EEnumLiteral xmi:id="_43" base_EnumerationLiteral="Town-Strassen" literal="SS"/>
2237 <Ecore:EEnumLiteral xmi:id="_44" base_EnumerationLiteral="Town-Bettembourg" literal="TT"/>
2238 <Ecore:EEnumLiteral xmi:id="_45" base_EnumerationLiteral="Town-Beaufort" literal="Other"/>
2239 <Ecore:EEnum xmi:id="_46" base_Enumeration="Type_of_Rate"/>
2240 <Ecore:EEnumLiteral xmi:id="_47" base_EnumerationLiteral="Type_of_Rate-REGULAR" literal="REGULAR"/>
2241 <Ecore:EEnumLiteral xmi:id="_48" base_EnumerationLiteral="Type_of_Rate-REAL_COST" literal="REAL_COST"/>
2242 <Ecore:EEnum xmi:id="_49" base_Enumeration="CE_Type"/>
2243 <Ecore:EEnumLiteral xmi:id="_50" base_EnumerationLiteral="CE_Type-INALIDITY_AND_INFIRMITY" literal="INALIDITY_AND_INFIRMITY"/>
2244 <Ecore:EEnumLiteral xmi:id="_51" base_EnumerationLiteral="CE_Type-DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD" literal="DEPENDENCE_AND_CARE_EXCLUDING_CHLIDREN_NOT_PART_OF_HOUSEHOLD"/>
2245 <Ecore:EEnumLiteral xmi:id="_52" base_EnumerationLiteral="CE_Type-CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD" literal="CARE_FOR_CHILDREN_NOT_BEING_PART_OF_HOUSEHOLD"/>
2246 <Ecore:EEnum xmi:id="_53" base_Enumeration="Expense_Purpose"/>
2247 <Ecore:EEnumLiteral xmi:id="_54" base_EnumerationLiteral="Expense_Purpose-HOUSE_CARE" literal="HOUSE_CARE"/>
2248 <Ecore:EEnumLiteral xmi:id="_55" base_EnumerationLiteral="Expense_Purpose-CHILD_CARE" literal="CHILD_CARE"/>
2249 <Ecore:EEnumLiteral xmi:id="_56" base_EnumerationLiteral="Expense_Purpose-DEPENDENCE_CARE" literal="DEPENDENCE_CARE"/>
2250 <Ecore:EEnumLiteral xmi:id="_57" base_EnumerationLiteral="Expense_Purpose-OTHER" literal="OTHER"/>
2251 <Ecore:EEnum xmi:id="_58" base_Enumeration="Dependent_Type"/>
2252 <Ecore:EEnumLiteral xmi:id="_59" base_EnumerationLiteral="Dependent_Type-CHILD" literal="CHILD"/>
2253 <Ecore:EEnumLiteral xmi:id="_60" base_EnumerationLiteral="Dependent_Type-SPOUSE" literal="SPOUSE"/>
2254 <Ecore:EEnumLiteral xmi:id="_61" base_EnumerationLiteral="Dependent_Type-RELATIVE" literal="RELATIVE"/>
2255 <Ecore:EEnumLiteral xmi:id="_62" base_EnumerationLiteral="Dependent_Type-OTHER_FAMILY_MEMBER" literal="OTHER_FAMILY_MEMBER"/>
2256 <Ecore:EClass xmi:id="_63" base_Class="Income_Tax"/>
2257 <Ecore:EReference xmi:id="_64" base_Property="Income_Tax-taxPayer"/>
2258 <Ecore:EClass xmi:id="_65" base_Class="Tax_Payer"/>
2259 <Ecore:EReference xmi:id="_67" base_Property="Tax_Payer-dependents"/>
2260 <Ecore:EReference xmi:id="_69" base_Property="Tax_Payer-expenses"/>
2261 <Ecore:EReference xmi:id="_73" base_Property="Tax_Payer-incomes"/>
2262 <Ecore:EReference xmi:id="_75" base_Property="Tax_Payer-from_law"/>
2263 <Ecore:EReference xmi:id="_76" base_Property="Tax_Payer-from_agent"/>
2264 <Ecore:EOperation xmi:id="_77" base_Operation="Tax_Payer-is_dependent_part_of_the_household"/>
2265 <Ecore:EParameter xmi:id="_78" base_Parameter="Tax_Payer-is_dependent_part_of_the_household-IN_dependent"/>
2266 <Ecore:EOperation xmi:id="_79" base_Operation="Tax_Payer-number_of_months_of_allowance"/>
2267 <Ecore:EOperation xmi:id="_80" base_Operation="Tax_Payer-deduction_according_disability_rate"/>
2268 <Ecore:EClass xmi:id="_81" base_Class="Physical_Person"/>
2269 <Ecore:EReference xmi:id="_83" base_Property="Physical_Person-addresses"/>
2270 <Ecore:EOperation xmi:id="_86" base_Operation="Physical_Person-is_separated_from"/>
2271 <Ecore:EParameter xmi:id="_87" base_Parameter="Physical_Person-is_separated_from-IN_person"/>
2272 <Ecore:EOperation xmi:id="_88" base_Operation="Physical_Person-is_person_affiliated_personnaly_to_social_security"/>
2273 <Ecore:EClass xmi:id="_89" base_Class="External_Allowance"/>
2274 <Ecore:EClass xmi:id="_91" base_Class="Address"/>
2275 <Ecore:EReference xmi:id="_92" base_Property="Address-taxPayer"/>
2276 <Ecore:EClass xmi:id="_93" base_Class="Legal_Union_Record"/>
2277 <Ecore:EClass xmi:id="_96" base_Class="Dependent"/>
2278 <Ecore:EReference xmi:id="_98" base_Property="Dependent-responsible_person"/>
2279 <Ecore:EReference xmi:id="_100" base_Property="Dependent-expense"/>
2280 <Ecore:EOperation xmi:id="_101" base_Operation="Dependent-compute_if_dependent_receives_allowances_eligible_for_CIM"/>
2281 <Ecore:EOperation xmi:id="_102" base_Operation="Dependent-compute_if_dependent_receives_allowances_eligible_for_DS"/>
2282 <Ecore:EOperation xmi:id="_103" base_Operation="Dependent-compute_if_dependent_receives_allowances_eligible_for_CE_dependance_and_care"/>
2283 <Ecore:EOperation xmi:id="_104" base_Operation="Dependent-is_dependent_following_continued_studies"/>
2284 <Ecore:EParameter xmi:id="_105" base_Parameter="Dependent-is_dependent_following_continued_studies-IN_continued_studies"/>
2285 <Ecore:EClass xmi:id="_106" base_Class="Household"/>
2286 <Ecore:EClass xmi:id="_109" base_Class="Expense"/>
2287 <Ecore:EReference xmi:id="_111" base_Property="Expense-dependent"/>
2288 <Ecore:EReference xmi:id="_112" base_Property="Expense-income"/>
2289 <Ecore:EClass xmi:id="_114" base_Class="Income"/>
2290 <Ecore:EReference xmi:id="_115" base_Property="Income-income_type"/>
2291 <Ecore:EReference xmi:id="_116" base_Property="Income-tax_card"/>
2292 <Ecore:EReference xmi:id="_117" base_Property="Income-expenses"/>
2293 <Ecore:EReference xmi:id="_118" base_Property="Income-taxPayer"/>
2294 <Ecore:EReference xmi:id="_119" base_Property="Income-details"/>
2295 <Ecore:EOperation xmi:id="_120" base_Operation="Income-compute_duration_of_contract"/>
2296 <Ecore:EOperation xmi:id="_121" base_Operation="Income-compute_duration_of_contract_within_taxation_year"/>
2297 <Ecore:EParameter xmi:id="_122" base_Parameter="Income-compute_duration_of_contract_within_taxation_year-IN_date"/>
2298 <Ecore:EOperation xmi:id="_123" base_Operation="Income-prorata_worked_months"/>
2299 <Ecore:EOperation xmi:id="_124" base_Operation="Income-prorata_worked_days"/>
2300 <Ecore:EOperation xmi:id="_125" base_Operation="Income-prorata_period"/>
2301 <Ecore:EOperation xmi:id="_126" base_Operation="Income-income_per_day"/>
2302 <Ecore:EOperation xmi:id="_127" base_Operation="Income-income_per_month"/>
2303 <Ecore:EOperation xmi:id="_128" base_Operation="Income-income_per_year"/>
2304 <Ecore:EClass xmi:id="_129" base_Class="Income_Type"/>
2305 <Ecore:EReference xmi:id="_130" base_Property="Income_Type-income"/>
2306 <Ecore:EClass xmi:id="_131" base_Class="Tax_Card"/>
2307 <Ecore:EReference xmi:id="_133" isVolatile="true" base_Property="Tax_Card-tax_payers_address"/>
2308 <Ecore:EReference xmi:id="_134" base_Property="Tax_Card-income_Tax_Credit"/>
2309 <Ecore:EReference xmi:id="_136" base_Property="Tax_Card-previous"/>
2310 <Ecore:EReference xmi:id="_137" base_Property="Tax_Card-current_tax_card"/>
2311 <Ecore:EReference xmi:id="_138" base_Property="Tax_Card-income"/>
2312 <Ecore:EClass xmi:id="_144" base_Class="Income_Tax_Credit"/>
2313 <Ecore:EReference xmi:id="_145" base_Property="Income_Tax_Credit-taxPayer"/>
2314 <Ecore:EReference xmi:id="_146" base_Property="Income_Tax_Credit-taxation_Frame"/>
2315 <Ecore:EClass xmi:id="_151" base_Class="Income_Detail"/>
2316 <Ecore:EReference xmi:id="_152" base_Property="Income_Detail-income"/>
2317 <Ecore:EClass xmi:id="_153" base_Class="FromLaw"/>
2318 <Ecore:EReference xmi:id="_154" base_Property="FromLaw-taxPayer"/>
2319 <Ecore:EOperation xmi:id="_155" base_Operation="FromLaw-CE_INVALIDITY_FLAT_RATE_TYPE_E"/>
2320 <Ecore:EOperation xmi:id="_156" base_Operation="FromLaw-CIP_MINIMUM_INCOME_MONTH"/>
2321 <Ecore:EOperation xmi:id="_157" base_Operation="FromLaw-CIP_MINIMUM_INCOME_YEAR"/>
2322 <Ecore:EOperation xmi:id="_158" base_Operation="FromLaw-FLAT_RATE_CIP_YEARLY"/>
2323 <Ecore:EOperation xmi:id="_159" base_Operation="FromLaw-FLAT_RATE_PER_UNIT"/>
2324 <Ecore:EOperation xmi:id="_160" base_Operation="FromLaw-MAXIMUM_DISTANCE_IN_UNITS"/>
2325 <Ecore:EOperation xmi:id="_161" base_Operation="FromLaw-MINIMUM_DISTANCE_IN_UNITS"/>
2326 <Ecore:EOperation xmi:id="_162" base_Operation="FromLaw-FLAT_MAXIMUM_FD"/>
2327 <Ecore:EOperation xmi:id="_163" base_Operation="FromLaw-CIS_MINIMUM_INCOME_DAY"/>
2328 <Ecore:EOperation xmi:id="_164" base_Operation="FromLaw-CIS_MINIMUM_INCOME_MONTH"/>
2329 <Ecore:EOperation xmi:id="_165" base_Operation="FromLaw-CIS_MINIMUM_INCOME_YEAR"/>
2330 <Ecore:EOperation xmi:id="_166" base_Operation="FromLaw-FLAT_RATE_CIS_DAILY"/>
2331 <Ecore:EOperation xmi:id="_167" base_Operation="FromLaw-FLAT_RATE_CIS_MONTHLY"/>
2332 <Ecore:EOperation xmi:id="_168" base_Operation="FromLaw-FLAT_RATE_CIS_YEARLY"/>
2333 <Ecore:EClass xmi:id="_169" base_Class="FromAgent"/>
2334 <Ecore:EReference xmi:id="_170" base_Property="FromAgent-taxPayer"/>
2335 <Ecore:EClass xmi:id="_171" base_Class="Fiscal_Address"/>
2336 <Ecore:EClass xmi:id="_172" base_Class="Habitual_Address"/>
2337 <Ecore:EClass xmi:id="_173" base_Class="Marriage_Record"/>
2338 <Ecore:EClass xmi:id="_174" base_Class="Non_Resident_Tax_Payer"/>
2339 <Ecore:EClass xmi:id="_175" base_Class="Partnership_Record"/>
2340 <Ecore:EClass xmi:id="_176" base_Class="Resident_Tax_Payer"/>
2341 <Ecore:EClass xmi:id="_177" base_Class="Trade_and_Business_Income"/>
2342 <Ecore:EClass xmi:id="_178" base_Class="Agriculture_and_Forestry_Income"/>
2343 <Ecore:EClass xmi:id="_180" base_Class="Pensions_and_Annuities_Income"/>
2344 <Ecore:EClass xmi:id="_181" base_Class="Capital_and_Investments_Income"/>
2345 <Ecore:EClass xmi:id="_182" base_Class="Employment_Income"/>
2346 <Ecore:EClass xmi:id="_183" base_Class="Rentals_and_Leases_Income"/>
2347 <Ecore:EClass xmi:id="_186" base_Class="Foreign_Income"/>
2348 <Ecore:EClass xmi:id="_187" base_Class="Local_Income"/>
2349 <Ecore:EClass xmi:id="_188" base_Class="CIM"/>
2350 <Ecore:EClass xmi:id="_189" base_Class="CIP"/>
2351 <Ecore:EClass xmi:id="_190" base_Class="CIS"/>
2352 <Ecore:EClass xmi:id="_191" base_Class="FD"/>
2353 <Ecore:EOperation xmi:id="_192" base_Operation="FD-compute_distance_unit_between_home_and_workpalce"/>
2354 <Ecore:EClass xmi:id="_193" base_Class="Professional_Expenses_Deduction"/>
2355 <Ecore:EClass xmi:id="_194" base_Class="FO"/>
2356 <Ecore:EOperation xmi:id="_195" base_Operation="FO-compute_disability_flat_rate"/>
2357 <Ecore:EOperation xmi:id="_196" base_Operation="FO-compute_regular_flat_rate"/>
2358 <Ecore:EClass xmi:id="_203" base_Class="DS_for_Permanent_Expense"/>
2359 <Ecore:EClass xmi:id="_204" base_Class="DS"/>
2360 <Ecore:EEnum xmi:id="_205" base_Enumeration="Category_of_Permanent_Expense"/>
2361 <Ecore:EEnumLiteral xmi:id="_206" base_EnumerationLiteral="Category_of_Permanent_Expense-MISCELLANEOUS_DEBT" literal="MISCELLANEOUS_DEBT"/>
2362 <Ecore:EEnumLiteral xmi:id="_207" base_EnumerationLiteral="Category_of_Permanent_Expense-ALIMONY" literal="ALIMONY"/>
2363 <Ecore:EClass xmi:id="_208" base_Class="DS_for_Interest_Expense"/>
2364 <Ecore:EOperation xmi:id="_209" base_Operation="DS_for_Interest_Expense-compute_maximum_deductible_amount"/>
2365 <Ecore:EParameter xmi:id="_210" base_Parameter="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_children_with_allowances"/>
2366 <Ecore:EParameter xmi:id="_211" base_Parameter="DS_for_Interest_Expense-compute_maximum_deductible_amount-IN_legal_union"/>
2367 <Ecore:EClass xmi:id="_212" base_Class="DS_for_Health_and_Pension_Insurance"/>
2368 <Ecore:EEnum xmi:id="_213" base_Enumeration="Category_of_Health_and_Pension_Insurances"/>
2369 <Ecore:EEnumLiteral xmi:id="_214" base_EnumerationLiteral="Category_of_Health_and_Pension_Insurances-MANDATORY_HEALTH_AND_PENSION_INSURANCE" literal="MANDATORY_HEALTH_AND_PENSION_INSURANCE"/>
2370 <Ecore:EEnumLiteral xmi:id="_215" base_EnumerationLiteral="Category_of_Health_and_Pension_Insurances-ADDITIONAL_EMPLOYERS_PENSION_INSURANCE" literal="ADDITIONAL_EMPLOYERS_PENSION_INSURANCE"/>
2371 <Ecore:EEnumLiteral xmi:id="_216" base_EnumerationLiteral="Category_of_Health_and_Pension_Insurances-CONTINUED_HEALTH_AND_PENSION_INSURANCE" literal="CONTINUED_HEALTH_AND_PENSION_INSURANCE"/>
2372 <Ecore:EClass xmi:id="_217" base_Class="DS_for_Private_Insurance_and_Plan"/>
2373 <Ecore:EOperation xmi:id="_218" base_Operation="DS_for_Private_Insurance_and_Plan-compute_increase_for_life_insurance"/>
2374 <Ecore:EOperation xmi:id="_219" base_Operation="DS_for_Private_Insurance_and_Plan-compute_maximum_deductible_amount_for_private_insruance"/>
2375 <Ecore:EOperation xmi:id="_220" base_Operation="DS_for_Private_Insurance_and_Plan-compute_maximum_deductible_amount_for_old_age_pension_plan"/>
2376 <Ecore:EEnum xmi:id="_221" base_Enumeration="Category_of_Private_Insurance_and_Plan"/>
2377 <Ecore:EEnumLiteral xmi:id="_222" base_EnumerationLiteral="Category_of_Private_Insurance_and_Plan-PRIVATE_INSURANCE" literal="PRIVATE_INSURANCE"/>
2378 <Ecore:EEnumLiteral xmi:id="_223" base_EnumerationLiteral="Category_of_Private_Insurance_and_Plan-PRIVATE_LIFE_INSURANCE" literal="PRIVATE_LIFE_INSURANCE"/>
2379 <Ecore:EEnumLiteral xmi:id="_224" base_EnumerationLiteral="Category_of_Private_Insurance_and_Plan-COMPANY_MEMBERS_PRIVATE_INSURANCE" literal="COMPANY_MEMBERS_PRIVATE_INSURANCE"/>
2380 <Ecore:EEnumLiteral xmi:id="_225" base_EnumerationLiteral="Category_of_Private_Insurance_and_Plan-HOUSING_SAVING_PLAN" literal="HOUSING_SAVING_PLAN"/>
2381 <Ecore:EEnumLiteral xmi:id="_226" base_EnumerationLiteral="Category_of_Private_Insurance_and_Plan-OLD_AGE_PENSION_PLAN" literal="OLD_AGE_PENSION_PLAN"/>
2382 <Ecore:EClass xmi:id="_227" base_Class="DS_for_Loss_Carryforward"/>
2383 <Ecore:EClass xmi:id="_228" base_Class="DS_for_Donation"/>
2384 <Ecore:EClass xmi:id="_229" base_Class="Permanent_Expense"/>
2385 <Ecore:EOperation xmi:id="_230" base_Operation="Permanent_Expense-is_expense_eligible_for_deduction"/>
2386 <Ecore:EParameter xmi:id="_231" base_Parameter="Permanent_Expense-is_expense_eligible_for_deduction-IN_agent_response"/>
2387 <Ecore:EClass xmi:id="_232" base_Class="Special_Expense_DS"/>
2388 <Ecore:EClass xmi:id="_233" base_Class="Interest_Expense"/>
2389 <Ecore:EClass xmi:id="_234" base_Class="Private_Insurance_and_Plan"/>
2390 <Ecore:EOperation xmi:id="_235" base_Operation="Private_Insurance_and_Plan-is_private_insurance_and_plan_eligible_for_deduction.1"/>
2391 <Ecore:EClass xmi:id="_236" base_Class="Health_and_Pension_Insurance"/>
2392 <Ecore:EClass xmi:id="_237" base_Class="Donation"/>
2393 <Ecore:EOperation xmi:id="_238" base_Operation="Donation-get_beneficiary_eligibility_for_deduction"/>
2394 <Ecore:EClass xmi:id="_239" base_Class="Loss_Carryforward"/>
2395 <Ecore:EOperation xmi:id="_240" base_Operation="Loss_Carryforward-is_accountability_regular"/>
2396 <Ecore:EOperation xmi:id="_241" base_Operation="Loss_Carryforward-is_compensated_by_other_means"/>
2397 <Ecore:EOperation xmi:id="_242" base_Operation="Loss_Carryforward-has_been_tax_payer_partner_in_business"/>
2398 <Ecore:EOperation xmi:id="_243" base_Operation="Loss_Carryforward-has_tax_payer_inherited_business_ownership"/>
2399 <Ecore:EClass xmi:id="_244" base_Class="Spousal_Expense_AC"/>
2400 <Ecore:EClass xmi:id="_245" base_Class="Extraordinary_Expense_CE"/>
2401 <Ecore:EOperation xmi:id="_246" base_Operation="Extraordinary_Expense_CE-is_above_thresholded_deduction_percentage_for_CE"/>
2402 <Ecore:EOperation xmi:id="_247" base_Operation="Extraordinary_Expense_CE-compute_thresholded_deduction_percentage_for_CE"/>
2403 <Ecore:EParameter xmi:id="_248" base_Parameter="Extraordinary_Expense_CE-compute_thresholded_deduction_percentage_for_CE-IN_thresholded_deduction_percentage"/>
2404 <Ecore:EClass xmi:id="_249" base_Class="Travel_Expense_FD"/>
2405 <Ecore:EClass xmi:id="_250" base_Class="Professional_Expense"/>
2406 <Ecore:EClass xmi:id="_251" base_Class="Miscellaneous_Expense_FO"/>
2407 <Ecore:EEnumLiteral xmi:id="_2f6G8H_MEeSKo9E5ldkH6Q" base_EnumerationLiteral="_z-prIH_MEeSKo9E5ldkH6Q"/>
2408 <Ecore:EEnumLiteral xmi:id="_2jM5QH_REeSKo9E5ldkH6Q" base_EnumerationLiteral="_lbDFgH_REeSKo9E5ldkH6Q"/>
2409 <Ecore:EClass xmi:id="_RwuG4IXaEeSLiOAbrK2uyQ" base_Class="_0yLxwIH5EeSH_sby466C_w"/>
2410 <Ecore:EEnum xmi:id="_TppXYIXaEeSLiOAbrK2uyQ" base_Enumeration="_7auHsIOIEeSemtkAhxylbQ"/>
2411 <Ecore:EEnum xmi:id="_UvsZcIXaEeSLiOAbrK2uyQ" base_Enumeration="_dTr3IIOSEeSemtkAhxylbQ"/>
2412 <Ecore:EClass xmi:id="_kJjuUIX5EeSLiOAbrK2uyQ" base_Interface="_1gja4IXvEeSLiOAbrK2uyQ"/>
2413 <Ecore:EEnumLiteral xmi:id="_HQFEUJA7EeS9qe9Ea8KYvA" base_EnumerationLiteral="_h4BBsJA6EeSrKuFMY7nEzg"/>
2414 <Ecore:EEnumLiteral xmi:id="_UmboEJN1EeSS6JjHMC2a3A" base_EnumerationLiteral="_O-S64JN1EeSS6JjHMC2a3A"/>
2415 <Ecore:EEnumLiteral xmi:id="_swBW0JQ8EeSMZqrJQmR94g" base_EnumerationLiteral="_qE9ewJQ8EeSMZqrJQmR94g"/>
2416</xmi:XMI>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_B.uml b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_B.uml
new file mode 100644
index 00000000..a3faac2c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_B.uml
@@ -0,0 +1,608 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<uml:Package xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="GUID+fadc4ae9-265b-4361-8233-286c5b98ea06" name="DomainModel" URI="http:///DomainModel.uml">
3 <packagedElement xmi:type="uml:Class" xmi:id="GUID+a8ab9abd-0e72-4644-8b2b-258b868b8021" name="CableShieldIntegrityError">
4 <generalization xmi:type="uml:Generalization" xmi:id="GUID+b577f49b-1e7d-4c58-8452-7dfce047b376" general="GUID+d9d65175-b83c-4a10-b7d2-6a3ce0565615"/>
5 </packagedElement>
6 <packagedElement xmi:type="uml:Class" xmi:id="GUID+7f785413-0c72-4c0f-8204-be2794c3e9dd" name="ClassificationError">
7 <generalization xmi:type="uml:Generalization" xmi:id="GUID+4f5513aa-d4f5-4bec-8c34-8f0b9186ee72" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
8 </packagedElement>
9 <packagedElement xmi:type="uml:Class" xmi:id="GUID+38fddb17-0a3c-4a5d-b6f9-e8413b28fb0a" name="CommunicationError">
10 <generalization xmi:type="uml:Generalization" xmi:id="GUID+698ea3fb-4647-4984-be73-cf4dba64c235" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
11 </packagedElement>
12 <packagedElement xmi:type="uml:Class" xmi:id="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab" name="Error">
13 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+74c95cdf-1866-4ac5-8376-8121b7d7661f" name="isDetected" visibility="public">
14 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
15 </ownedAttribute>
16 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+c7ab610a-6b81-4b98-825b-0d2809cd0ede" name="isQualified" visibility="public">
17 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
18 </ownedAttribute>
19 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+3b4b1499-bc0b-452a-963d-590824ae423b" name="qualificationCounter" visibility="public">
20 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
21 </ownedAttribute>
22 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+0bb53b03-f0c8-49a1-9bef-5ea5f2d262f5" name="priority" visibility="public">
23 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
24 </ownedAttribute>
25 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f3e3a3e6-80da-495c-aa8b-ee0801899697" name="isLockingError" visibility="public">
26 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
27 </ownedAttribute>
28 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+cea9880a-ba50-4c00-8538-62c689ce3ec5" name="isDiscardError" visibility="public">
29 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
30 </ownedAttribute>
31 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+134568a5-0f1f-4a6e-8197-5506606511b2" name="detectionCounter" visibility="public">
32 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
33 </ownedAttribute>
34 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+117c9206-efbc-4beb-8e1a-ac2e4afd06c2" name="DETECTION_COUNTER_DEFAULT_VALUE" visibility="public" isReadOnly="true">
35 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
36 </ownedAttribute>
37 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+63eb401d-531a-4f72-9306-420b3c1f5146" name="isVoltageDependent" visibility="public">
38 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
39 </ownedAttribute>
40 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+e6a341f6-dbba-4c4c-9885-b31d63212bab" name="unDetectionCounter" visibility="public">
41 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
42 </ownedAttribute>
43 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1f848d81-eeb8-4e7c-8f2a-fe757b2f2a9a" name="ERROR_QUALIFICATION_COUNTER_LIMIT" visibility="public" isReadOnly="true">
44 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
45 <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfXmpaEeS7fJC3QiZfaQ" value="2"/>
46 </ownedAttribute>
47 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+0958eb35-1dda-41e2-a61b-b9a991ce800f" name="ERROR_DEQUALIFICATION_COUNTER_LIMIT" visibility="public" isReadOnly="true">
48 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
49 <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfYGpaEeS7fJC3QiZfaQ" value="4"/>
50 </ownedAttribute>
51 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+b8524d08-9dd2-405b-b3b3-6335c09f167e" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+f05e6892-5c49-4fb5-b7ef-2f9ed7c73bd1"/>
52 </packagedElement>
53 <packagedElement xmi:type="uml:Class" xmi:id="GUID+d9d65175-b83c-4a10-b7d2-6a3ce0565615" name="ExternalMeasurementDeviceError">
54 <generalization xmi:type="uml:Generalization" xmi:id="GUID+0348055f-5e79-441d-8801-c65c327264bd" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
55 </packagedElement>
56 <packagedElement xmi:type="uml:Class" xmi:id="GUID+5b9e4e43-e723-4379-8b16-6bd2a17afc62" name="InternalMeasurementDeviceError">
57 <generalization xmi:type="uml:Generalization" xmi:id="GUID+1b170a05-f066-4024-98a7-4207a80cc4d1" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
58 </packagedElement>
59 <packagedElement xmi:type="uml:Class" xmi:id="GUID+6e72931a-3bb4-4c4b-9c92-340c29bf930d" name="InternalMeasurementPathError">
60 <generalization xmi:type="uml:Generalization" xmi:id="GUID+fa30f619-7caf-491d-97a2-4edb58415133" general="GUID+5b9e4e43-e723-4379-8b16-6bd2a17afc62"/>
61 </packagedElement>
62 <packagedElement xmi:type="uml:Class" xmi:id="GUID+a77202b4-d26c-4ff9-9d48-bb3a3246f65e" name="MeasurementSensePathError">
63 <generalization xmi:type="uml:Generalization" xmi:id="GUID+2f759119-5b9b-4faf-9a2e-75d965ad405d" general="GUID+d9d65175-b83c-4a10-b7d2-6a3ce0565615"/>
64 </packagedElement>
65 <packagedElement xmi:type="uml:Class" xmi:id="GUID+3ddf1eff-3f7e-4ccc-b44e-10a2ebb89066" name="Message"/>
66 <packagedElement xmi:type="uml:Class" xmi:id="GUID+3b30f033-980c-48ba-9235-b66e5204b733" name="SeatFrameConnectionError">
67 <generalization xmi:type="uml:Generalization" xmi:id="GUID+e2f097fc-15cd-4c67-9875-11a7fc4349d9" general="GUID+d9d65175-b83c-4a10-b7d2-6a3ce0565615"/>
68 </packagedElement>
69 <packagedElement xmi:type="uml:Class" xmi:id="GUID+8b7c00fd-0cf5-48a6-9866-b0f593854575" name="SeatHeaterCircuitIntegrityError">
70 <generalization xmi:type="uml:Generalization" xmi:id="GUID+4d5d7951-a024-499b-8333-445ecc40644f" general="GUID+d9d65175-b83c-4a10-b7d2-6a3ce0565615"/>
71 </packagedElement>
72 <packagedElement xmi:type="uml:Class" xmi:id="GUID+e4bcf44b-621e-430d-94cb-b18f5a557df1" name="Sensor"/>
73 <packagedElement xmi:type="uml:Class" xmi:id="GUID+12582673-accc-4b14-9bd4-7a09303212e2" name="ShortSenseUbatGndError">
74 <generalization xmi:type="uml:Generalization" xmi:id="GUID+7fcb0f1e-ee75-4025-87f3-628100aa335b" general="GUID+d9d65175-b83c-4a10-b7d2-6a3ce0565615"/>
75 </packagedElement>
76 <packagedElement xmi:type="uml:Class" xmi:id="GUID+48b88776-a1a3-47bb-a658-a12de079afaf" name="TemperatureError">
77 <generalization xmi:type="uml:Generalization" xmi:id="GUID+aa258982-ac00-498d-8459-944a4cfe94b7" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
78 </packagedElement>
79 <packagedElement xmi:type="uml:Class" xmi:id="GUID+1ed911f3-479f-4721-bfff-04fae9aecac1" name="TemperatureSensorError">
80 <generalization xmi:type="uml:Generalization" xmi:id="GUID+36c31bec-5a78-4d82-9a0e-a3f80a501053" general="GUID+5b9e4e43-e723-4379-8b16-6bd2a17afc62"/>
81 </packagedElement>
82 <packagedElement xmi:type="uml:Class" xmi:id="GUID+79ade3d0-c388-4a80-be39-f68a386d95d1" name="VoltageError">
83 <generalization xmi:type="uml:Generalization" xmi:id="GUID+39c4c15c-bce1-403b-8ec1-01f6648c74ca" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
84 </packagedElement>
85 <packagedElement xmi:type="uml:Class" xmi:id="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" name="BodySenseSystem">
86 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+982e73e5-dc63-4b29-b1c4-8b353b2cb0f8" name="ADC_Thermistor_MAX_Diff_Threshold" visibility="public">
87 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
88 </ownedAttribute>
89 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+021c967c-e7a8-4489-83e8-324c1f6dcb70" name="PWMDiagADC1_MIN_Threshold" visibility="public">
90 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
91 </ownedAttribute>
92 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+bbad8304-049a-4493-9416-45e15209b956" name="PWMDiagADC1_MAX_Threshold" visibility="public">
93 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
94 </ownedAttribute>
95 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+66763855-b068-4a84-8316-35340690b89b" name="PWMDiagADC12_MIN_Threshold" visibility="public">
96 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
97 </ownedAttribute>
98 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+0ec29d37-c641-4c50-b151-01eba69b8a7f" name="PWMDiagADC12_MAX_Threshold" visibility="public">
99 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
100 </ownedAttribute>
101 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+3479af54-b7e8-427f-b819-150f67987ee9" name="PWMDiagADC13_MIN_Threshold" visibility="public">
102 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
103 </ownedAttribute>
104 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+3d34d555-b76d-4526-a106-c82ee2049301" name="PWMDiagADC13_MAX_Threshold" visibility="public">
105 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
106 </ownedAttribute>
107 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+ef978564-8c59-4ec2-9abd-9df8c0bdee44" name="GuardCurrent_MIN_Treshold" visibility="public">
108 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
109 </ownedAttribute>
110 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+6280fc2f-0f31-4978-9cf9-abb4b6000d6a" name="GuardACVoltage_MIN_Threshold" visibility="public">
111 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
112 </ownedAttribute>
113 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+0b4edcf5-6c85-4740-b63c-c840c1594474" name="GuardACVoltage_MAX_Threshold" visibility="public">
114 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
115 </ownedAttribute>
116 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+50c18c86-6209-45fc-9f4d-84ad088fdb57" name="GuardCurrent_MAX_Treshold1" visibility="public">
117 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
118 </ownedAttribute>
119 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+9e3b4aa9-fcc0-4469-8c67-df11539bdbbc" name="GuardCurrent_MAX_Treshold2" visibility="public">
120 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
121 </ownedAttribute>
122 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f98ed933-a42d-4dfc-90af-c2df9cdfed96" name="discardFlag" visibility="public">
123 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
124 </ownedAttribute>
125 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+04466852-4310-494e-bab8-06722f00a5d9" name="NORMAL_VOLTAGE_MIN" visibility="public" isReadOnly="true">
126 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
127 <defaultValue xmi:type="uml:LiteralReal" xmi:id="_2SQ0kOZFEeepcMgPsKwFYA" value="7.0"/>
128 </ownedAttribute>
129 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+012703af-55ef-4f34-abb3-dd0da557d6a8" name="NORMAL_VOLTAGE_MAX" visibility="public" isReadOnly="true">
130 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
131 <defaultValue xmi:type="uml:LiteralReal" xmi:id="_oyrC8OZFEeepcMgPsKwFYA" value="16.5"/>
132 </ownedAttribute>
133 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+93f50d8d-dd27-4120-8753-4e99f8d4409d" name="resetCounter" visibility="public">
134 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
135 </ownedAttribute>
136 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+3f17c9e6-a89d-4b2a-984e-16073d669f37" name="calibrationDone" visibility="public">
137 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
138 </ownedAttribute>
139 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+60dafbf2-8dd4-4411-a102-bab6093dd6e3" name="buildCheckStatus" visibility="public" type="GUID+98b4d567-5252-4aec-ab11-94ca8fbfd876"/>
140 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+8812fe5c-608d-4cf8-9ba2-76991f98f5d8" name="communicationOn" visibility="public">
141 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
142 </ownedAttribute>
143 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+80c839ba-8fdd-49ae-8059-a3ca6a77c873" name="abortFlag" visibility="public">
144 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
145 <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_mgCfj2paEeS7fJC3QiZfaQ"/>
146 </ownedAttribute>
147 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+bfea8765-8bac-425e-9ad5-beccedba9327" name="measuredTemperature" visibility="public">
148 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
149 </ownedAttribute>
150 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f4923666-f06f-464c-ad0d-71c35bccbd66" name="measuredVoltage" visibility="public">
151 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
152 </ownedAttribute>
153 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+d4bcd9cc-bb97-4f8f-84c9-2a608ec78ba3" name="ERROR_VOLTAGE_HYSTERESIS" visibility="public" isReadOnly="true">
154 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
155 <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfk2paEeS7fJC3QiZfaQ" value="200"/>
156 </ownedAttribute>
157 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+0faae0df-89fb-40d4-85b6-48cd9b77d0b6" name="VOLTAGE_ERROR_UNDETECTION_THRESHOLD" visibility="public" isReadOnly="true">
158 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
159 </ownedAttribute>
160 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+c8733d78-b932-4b1d-8f08-6b2d94cf94ab" name="VOLTAGE_ERROR_DETECTION_THRESHOLD" visibility="public" isReadOnly="true">
161 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
162 </ownedAttribute>
163 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1e691d0a-818f-4d4e-9daf-e6d88d45912c" name="TEMPERATURE_MAX" visibility="public" isReadOnly="true">
164 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
165 <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfl2paEeS7fJC3QiZfaQ" value="60"/>
166 </ownedAttribute>
167 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+e82ccb12-d996-448e-b2ea-0f23c82bf36e" name="TEMPERATURE_LIMIT_MAX" visibility="public" isReadOnly="true">
168 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
169 <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfmWpaEeS7fJC3QiZfaQ" value="100"/>
170 </ownedAttribute>
171 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+065bb55f-836e-44c3-9f09-decab0dd1d03" name="seatTemperatureCompensationFlag" visibility="public">
172 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
173 </ownedAttribute>
174 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+c284a7c5-fd33-4c1a-8a58-fe9abb78f198" name="compensationRezeoringFlag" visibility="public">
175 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
176 </ownedAttribute>
177 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+5ae9dd1e-2950-418c-8609-37214a15fe92" name="frequencyIndex" visibility="public">
178 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
179 <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfnWpaEeS7fJC3QiZfaQ"/>
180 </ownedAttribute>
181 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1bc3b688-dc86-42f1-b0ec-58f1ca617123" name="CX_LIMIT" visibility="public" isReadOnly="true">
182 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
183 </ownedAttribute>
184 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+de09bdd8-b645-4323-8655-dd52d410ec7c" name="GX_LIMIT" visibility="public" isReadOnly="true">
185 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
186 </ownedAttribute>
187 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f867c45c-5704-411f-84d5-ea180a777aba" name="isMeasurementDataPlausible" visibility="public">
188 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
189 </ownedAttribute>
190 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+381091ac-85a3-4116-8ae2-76eafae22f05" name="itsTimer" visibility="public" type="GUID+6959692e-af45-40ee-b0fb-6a34ab872fe6" association="GUID+cbe808a6-06cc-4469-a39a-4e0c9af87eed"/>
191 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+68728fd2-e5bc-4115-bf8f-57bd838ab09f" name="itsNVM" visibility="public" type="GUID+03a6e68a-e687-4da1-afe8-a4cc7d7dc80b" association="GUID+faef7c57-fe29-4721-8e95-f68adb4c3db2"/>
192 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+27dc4967-d64d-4dcc-9038-c8bd47700c85" name="itsLoadedCalibrationData" visibility="public" type="GUID+862b21ad-fe99-4187-a3cf-ac61ba758b6e" association="GUID+bbe1f8e1-57c6-44fd-bd5a-e8198b2b3c4a">
193 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfpGpaEeS7fJC3QiZfaQ"/>
194 </ownedAttribute>
195 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+c6913877-0ff3-4d9b-8c90-a39339cc1268" name="itsWatchdog" visibility="public" type="GUID+5f5aca8c-fb3f-4fd1-b4d8-01c234e1907c" association="GUID+3eff4bbf-a78c-4a39-869b-fb42314a7024"/>
196 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+66885a26-3da4-425b-bde9-2dde68605810" name="itsTemperatureSensor" visibility="public" type="GUID+b103d9a5-f222-4835-b60f-56236203ab44" association="GUID+0a638758-4e69-46f4-9b73-cb71bacbafdf"/>
197 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1f474478-a4a9-40f7-8722-1d68578ba047" name="itsPreviousOccupancyStatus" visibility="public" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b" association="GUID+eaf63a81-1e41-4de3-b94d-eb3f52e51e15"/>
198 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+88d4da64-8034-40a4-bd44-1558acd54307" name="itsALU" visibility="public" type="GUID+21e2b3ba-944c-4b73-b237-49bc668a139d" association="GUID+44591504-aed0-4354-9c71-c424de018587"/>
199 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+478c8763-c0da-4b05-bbc1-e9d826793df0" name="itsOccupancyStatus" visibility="public" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b" association="GUID+05618f64-fb68-40b7-bd3a-6ffa3884d335"/>
200 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1010d33a-32d4-4e94-9e16-c51c59ef374e" name="itsBodySenseElectronics" visibility="public" type="GUID+33990a46-5bc7-4ed6-a952-40212c7a7e2a" association="GUID+a9c80e74-724c-4b38-a42d-be9f9cd06038"/>
201 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a3ab1373-15aa-415b-a1a8-967e74d68bcf" name="itsROM" visibility="public" type="GUID+2ab04b30-dac5-4cc4-b682-122064af889a" association="GUID+e71c0e9a-901e-4bc0-9d48-418713906dee"/>
202 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f370cb64-dc8b-4b9d-b46d-fd9f7ad7e49d" name="itsMeasurementValue" visibility="public" type="GUID+f921f48d-7f45-4013-9187-ade53258a900" association="GUID+ca517787-217f-4692-a7f9-314f16a02ced"/>
203 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+69169118-aa04-497f-b7aa-e68553925437" name="itsError" visibility="public" type="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab" association="GUID+f05e6892-5c49-4fb5-b7ef-2f9ed7c73bd1">
204 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mgCfr2paEeS7fJC3QiZfaQ"/>
205 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mgCfrmpaEeS7fJC3QiZfaQ" value="*"/>
206 </ownedAttribute>
207 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+bf450128-4370-4ae1-af37-b9b0375b347a" name="itsRAM" visibility="public" type="GUID+4d186178-6743-487a-b076-f02b2f3d001a" association="GUID+b99c3d2f-bb55-4689-995f-df24c587bb88"/>
208 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a39561af-8268-4233-96f0-2842947ae10e" name="itsIgnitionResetButton" visibility="public" type="GUID+5ccdd823-5164-4f1e-a14d-895c7f8165e5" association="GUID+e0c6236a-7292-4de6-a0d0-f55e09c20b19"/>
209 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+120bf304-389c-4f2e-a1fe-1024bf080b56" name="itsSFR" visibility="public" type="GUID+5e7682a5-b34e-4358-95ff-829e0be23658" association="GUID+e3bc66db-a238-4056-beb9-a12a5d05c111"/>
210 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+da01c4d6-b4a6-4b3c-a666-a875e63fe1bf" name="itsVoltageSensor" visibility="public" type="GUID+53333089-c1dd-4487-982a-fa14deaa8510" association="GUID+a35fad26-bc73-4424-8dc8-eae52113c5f1"/>
211 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+b8ca4358-dd93-49db-93a9-06b7521aab41" name="itsDefaultCalibrationData" visibility="public" type="GUID+862b21ad-fe99-4187-a3cf-ac61ba758b6e" association="GUID+6850f3f9-cd35-49be-8def-07e2c46a699f"/>
212 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+b06be66b-9af4-48fd-b01f-2a45446f6c7d" name="itsAirbagControlUnit" visibility="public" type="GUID+aeaf44bf-4d97-43e2-b5aa-f6a5d83d2b85" association="GUID+d9fe5cca-f9f8-473e-8bf2-9240a278b4d2"/>
213 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+8daf9eb1-da96-4db7-b037-988c73a152c6" name="itsBodySenseSensor" visibility="public" type="GUID+2aa138ab-8791-4b76-8cf7-23d650c1933f" association="GUID+97c91b3c-f082-4cc6-8cd9-f00aaf733b16"/>
214 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+7bd9d92e-612d-41d3-9c5a-c7e242db0fd4" name="set_error_internal_measurement_device_error_not_detected" visibility="public"/>
215 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+d887b180-0e2f-4efb-b516-c6d2709e13f7" name="set_temperature_sensor_error_detected" visibility="public"/>
216 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+6472bf46-57c9-41d9-90ce-c49ffe7ccb7f" name="set_internal_measurement_path_error_detected" visibility="public"/>
217 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+9450310d-43cb-4f29-8c78-f67a009d100d" name="set_error_external_measurement_device_error_not_detected" visibility="public"/>
218 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b6e2683e-acee-4d9c-be19-91b42db14742" name="set_seat_frame_connection_error_detected" visibility="public"/>
219 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+03b3bc18-bbee-44a6-9331-e670d2d2b87b" name="set_seat_heater_integrity_error_detected" visibility="public"/>
220 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+e7cbc56d-5749-4226-babf-33b6e21383c6" name="set_cable_shield_integrity_error_detected" visibility="public"/>
221 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b2fcd944-52c6-47e6-9af9-603392c9f6e3" name="set_measurement_sense_path_error_detected" visibility="public"/>
222 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+1b7d110e-1979-44bc-a747-fcdf2fd3f7b3" name="set_short_sense_Ubat_GND_error_detected" visibility="public"/>
223 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b728c6ed-5701-4ff3-b1f7-05013fd012b0" name="set_temperature_error_not_detected" visibility="public"/>
224 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+455e5434-90cc-4627-90c7-0877bb9b104b" name="set_error_temperature_range_errors_detected" visibility="public"/>
225 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+49a430d4-1913-4845-b5fa-5345edfeba0c" name="apply_compensations_static_compensation" visibility="public"/>
226 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+ae586f62-7e4c-437a-a274-5de39946a374" name="apply_compensations_dynamic_compensation_coil_temperature" visibility="public"/>
227 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+6a41e9f1-d2bf-4731-b059-1ff800521388" name="compensate_measurement_result_for_temperature" visibility="public"/>
228 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+640c58f8-93e4-42ab-945d-8653f649b671" name="compensate_measurement_result_for_rezeroing" visibility="public"/>
229 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+65457636-0db9-43fa-a8c8-e937e6fcad64" name="limit_measurement_data" visibility="public"/>
230 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+1b122de8-9491-4d29-b262-afc95f08c030" name="select_measurement_data" visibility="public"/>
231 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+56589a5d-1155-4f14-b235-8ff865551ef1" name="set_error_measurement_range_error_not_detected" visibility="public"/>
232 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+4ab370a7-62e5-42da-83f0-f58d973acb29" name="set_error_measurement_range_error_detected" visibility="public"/>
233 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+66aef061-ff15-4a7c-bd77-40e1cf55d646" name="derive_occupancy_class_for_airbag_control" visibility="public"/>
234 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+85b9e864-73f1-4469-b63f-5859c6085a22" name="derive_occupancy_class_for_sbr_control" visibility="public"/>
235 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+96ee0487-d9ab-4838-b305-7c3c0e98b9c6" name="set_error_memory_error_not_detected" visibility="public"/>
236 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+f715550c-5203-47a7-8e04-c2f59ca2b8d1" name="set_error_memory_error_detected" visibility="public"/>
237 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+1ff280e5-d889-446b-a00e-6f020a16e6e9" name="reset_classification_filters" visibility="public"/>
238 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+e7867e6b-9b5a-46e1-9ac3-d1244d8bd914" name="start_identification" visibility="public"/>
239 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+2e4d2203-78f9-46bd-82b1-7e42657e8050" name="ignite_the_system" visibility="public"/>
240 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+fd7181a6-56b4-4aa0-91aa-8899a05b0290" name="set_all_errors_not_detected" visibility="public"/>
241 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+01439a06-bf7e-4ab9-8c1b-4bb54cf32f15" name="initialize_occupant_class_for_airbag_control" visibility="public"/>
242 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+d4142ceb-5d4f-46bf-895a-e55df5dc1a03" name="initialize_occupant_class_for_sbr_control" visibility="public"/>
243 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+30acd70b-d600-4b89-b361-1d188334f1fc" name="set_error_discard_error_detected" visibility="public"/>
244 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+2dfb2b8b-5272-4dbd-b54d-7a81996e2a75" name="set_error_normal_operation_conditions_error_detected" visibility="public"/>
245 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+688a5f33-1368-4b3e-9d71-926cc75ab214" name="set_error_watchdog_error_detected" visibility="public"/>
246 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+596a8b30-092d-4359-9467-63172cf091bb" name="set_error_calibration_not_learned_detected" visibility="public"/>
247 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b2d4ccc2-e4c3-4892-a9be-547641adf012" name="set_error_build_check_not_run_error_detected" visibility="public"/>
248 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+979d29c6-f7fa-414f-b597-d26e4cd0b415" name="set_error_build_check_failed_error_detected" visibility="public"/>
249 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+be585f89-fde0-4515-ba13-772ac4dc3f9f" name="qualify_all_error_locking_errors" visibility="public"/>
250 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+ff1690c1-456a-4d55-beec-909cc07c8a11" name="enable_communication" visibility="public"/>
251 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+4d686a05-3876-479d-9df5-b3856a9eb73a" name="load_calibration_data" visibility="public"/>
252 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+5af986cf-0ac3-4bbb-8f66-93b062ed110d" name="set_error_NVM_CRC_error_detected" visibility="public"/>
253 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+79849ef9-e469-4575-a224-fe8211711472" name="set_NVM_access_error_detected" visibility="public"/>
254 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+a7ab9a9a-7896-4636-9d09-641214c70d8a" name="set_error_calibration_data_error_detected" visibility="public"/>
255 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+560fb26e-5f2d-4893-bd96-63a626597269" name="load_default_calibration_data" visibility="public"/>
256 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+ba703880-a37d-43f2-8b14-b4a5744ccbd0" name="set_error_RAM_error_detected" visibility="public"/>
257 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+a7b7b378-d59e-4a3a-9a7c-3b346659ad24" name="set_error_SFR_error_detected" visibility="public"/>
258 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+dc8bd6d2-fc48-4d5a-b042-1362156db1a5" name="set_error_ALU_error_detected" visibility="public"/>
259 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+5a50328e-50b8-4b3a-9cba-49ebc6cc20f5" name="load_calibration_data_from_NVM" visibility="public"/>
260 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+6ce66ad0-fc82-478e-b65d-c3785a3eea13" name="set_error_ROM_error_detected" visibility="public"/>
261 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+9b0b5c63-2dbb-490f-a424-a37e84caa1c8" name="set_abort_flag" visibility="public"/>
262 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+93cdf0e1-779f-4fcb-983d-66f36ef5fb45" name="reset_abort_flag" visibility="public"/>
263 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+8816bc47-95d3-48a1-b85e-8f8d669181ef" name="start_voltage_check" visibility="public"/>
264 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+455fc8ad-5e45-4f93-8f82-25540d8e153c" name="set_voltage_high_error_detected" visibility="public"/>
265 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+90325485-d96c-4a88-8c26-743608cea781" name="set_voltage_high_error_not_detected" visibility="public"/>
266 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+f8407ffd-95f4-4874-8b35-2ed9202f23d0" name="set_voltage_low_error_detected" visibility="public"/>
267 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+faf17d03-0d28-464f-897a-08ded5f5fd27" name="set_voltage_low_error_not_detected" visibility="public"/>
268 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+4eed62c1-e124-4328-a3e6-b626e9e63e72" name="set_voltage_high_error_qualified" visibility="public"/>
269 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+67a374e4-9678-4f9a-b034-f1522bd2e877" name="set_voltage_high_error_not_qualified" visibility="public"/>
270 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+f01d6fd9-f2fe-4bce-992d-2b435577f2a8" name="set_voltage_low_error_qualified" visibility="public"/>
271 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+ee0c38a9-4367-4681-807e-e85d8c861ce3" name="set_voltage_low_error_not_qualified" visibility="public"/>
272 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+3d0f0fe9-7132-48db-8572-956bbe3c60af" name="reset_voltage_high_error_detection_counter" visibility="public"/>
273 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+80952d39-4ce2-4fae-9091-c07aa8861d62" name="reset_voltage_low_error_detection_counter" visibility="public"/>
274 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+29064101-c11e-4917-bdf5-0e2914b8283e" name="increase_voltage_high_error_detection_counter" visibility="public"/>
275 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+6f007d60-feeb-4d5f-8580-9b841572aa2d" name="decrease_voltage_high_error_detection_counter" visibility="public"/>
276 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+d3c4466c-7e01-4a5c-b93c-19f0f52e6bd6" name="increase_voltage_low_error_detection_counter" visibility="public"/>
277 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+71d02a28-2a5b-41cc-bc5d-48075d496ea9" name="decrease_voltage_low_error_detection_counter" visibility="public"/>
278 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+dd5ae4c3-3ecb-4c06-8549-b44bbbd58d15" name="set_error_temperature_range_limit_errors_detected" visibility="public"/>
279 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+8ea56e25-2f0d-49df-ad5c-1f2f064a8cb1" name="increase_frequency_index" visibility="public"/>
280 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+ee1103f9-6bdf-4b0f-bdc9-54f2fc5b74ec" name="reset_frequency_index" visibility="public"/>
281 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+4f90aed8-79ae-45c6-aa2e-790cf8a14c29" name="collect_all_detected_errors" visibility="public"/>
282 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+668f8314-a67f-4eb9-b8da-7cf985f48e9a" name="qualify_errors" visibility="public"/>
283 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+4f35f23c-b5c0-4c46-8a98-193e06f759bf" name="set_error_discard_error_qualified" visibility="public"/>
284 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+1c726d30-56e5-4758-8962-c3a897f5e44b" name="set_discard_flag" visibility="public"/>
285 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+fb5cfb97-0cf9-4557-9348-d055e5cb3c08" name="increase_error_qualification_counter" visibility="public"/>
286 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b266aae4-d74f-428e-aa48-048c19d50991" name="add_error_to_error_status" visibility="public"/>
287 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b1d0ad0d-2fed-4f79-a604-4ad47910851a" name="set_detected_error_active" visibility="public"/>
288 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b2f699b4-4899-4780-bd2a-e93353abaf42" name="updates_error_traceability_buffer" visibility="public"/>
289 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+f49b5d6a-6a38-4bba-b9e7-f698cf8e2a7c" name="reset_error_fault_free_ignition_counter" visibility="public"/>
290 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+5ffd38ae-2f99-4aff-a2ed-ba26ae743c63" name="collect_all_not_detected_errors" visibility="public"/>
291 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+862092ae-6b88-499c-bb9b-7150c065d333" name="reset_error_qualification_history" visibility="public"/>
292 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+18d2f573-2f89-4114-8cec-e76bfd0abb28" name="reset_error_dequalification_history" visibility="public"/>
293 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+936d226b-6772-412a-a918-e5f4c7849959" name="dequalify_errors" visibility="public"/>
294 </packagedElement>
295 <packagedElement xmi:type="uml:Class" xmi:id="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b" name="OccupancyStatus">
296 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+6ad7c27a-37ff-4d29-a951-d5b0dcb3de51" name="OccupantClassForAirbagControl" visibility="public" type="GUID+a7a55376-97c1-4516-8524-c4a77235a929"/>
297 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+e757c865-c06b-4b24-b79d-a1878bd0e955" name="OccupantClassForSeatBeltReminder" visibility="public" type="GUID+a2e418ae-a4e5-4308-9993-ff3dd7ad5fbf"/>
298 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+409fff9c-bb4b-42b5-a24e-901d71454042" name="hasValidClassforAirbagControl" visibility="public">
299 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
300 </ownedAttribute>
301 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+8d481442-2d6c-4ef3-a0f7-523e1ed6599f" name="hasValidClassforSbr" visibility="public">
302 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
303 </ownedAttribute>
304 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+9492b531-8d79-4963-9d04-7e45efe9d4cb" name="itsBodySenseSystem_1" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+eaf63a81-1e41-4de3-b94d-eb3f52e51e15"/>
305 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+c37ff336-8596-4135-8aee-03c36bed4c07" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+05618f64-fb68-40b7-bd3a-6ffa3884d335"/>
306 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a274dbf9-ed8d-4933-b70f-6c610322ebeb" name="itsAirbagControlUnit" visibility="public" type="GUID+aeaf44bf-4d97-43e2-b5aa-f6a5d83d2b85" association="GUID+3e632cf8-c2a9-4835-82f0-059874ceaf89"/>
307 </packagedElement>
308 <packagedElement xmi:type="uml:Class" xmi:id="GUID+83d1aa98-a39e-4aef-8540-0de24b687755" name="VoltageLowError">
309 <generalization xmi:type="uml:Generalization" xmi:id="GUID+c26fa862-9cfe-427f-a64f-3fdc080d42e6" general="GUID+79ade3d0-c388-4a80-be39-f68a386d95d1"/>
310 </packagedElement>
311 <packagedElement xmi:type="uml:Class" xmi:id="GUID+313aad79-a621-474f-85bf-528b16c0ac69" name="VoltageHighError">
312 <generalization xmi:type="uml:Generalization" xmi:id="GUID+01ea632a-c918-47a8-88be-69cc3286b762" general="GUID+79ade3d0-c388-4a80-be39-f68a386d95d1"/>
313 </packagedElement>
314 <packagedElement xmi:type="uml:Class" xmi:id="GUID+23eb5620-e1bd-4389-906b-817159470e93" name="NormalOperationConditionError">
315 <generalization xmi:type="uml:Generalization" xmi:id="GUID+f6153671-c580-4e64-9192-d4549b50030a" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
316 </packagedElement>
317 <packagedElement xmi:type="uml:Class" xmi:id="GUID+2851a373-02c4-4b49-9037-5c78e948c611" name="DiscardError">
318 <generalization xmi:type="uml:Generalization" xmi:id="GUID+b7bdeb47-8619-4727-897f-87b3a048da73" general="GUID+23eb5620-e1bd-4389-906b-817159470e93"/>
319 </packagedElement>
320 <packagedElement xmi:type="uml:Class" xmi:id="GUID+5cc2b4d9-80a3-4c0b-a994-fa843bb8feef" name="WatchdogError">
321 <generalization xmi:type="uml:Generalization" xmi:id="GUID+f7b5dd97-be9c-4258-8bd4-8fd050579531" general="GUID+23eb5620-e1bd-4389-906b-817159470e93"/>
322 </packagedElement>
323 <packagedElement xmi:type="uml:Class" xmi:id="GUID+f6ded33d-b2b5-432a-af24-3f44f4ff727b" name="BuildCheckError">
324 <generalization xmi:type="uml:Generalization" xmi:id="GUID+49604892-233a-489d-ae1c-631bcf07f5a8" general="GUID+23eb5620-e1bd-4389-906b-817159470e93"/>
325 </packagedElement>
326 <packagedElement xmi:type="uml:Class" xmi:id="GUID+980cc2e4-7688-4201-b515-80f9977903c4" name="NVMAccessError">
327 <generalization xmi:type="uml:Generalization" xmi:id="GUID+81d90d44-35e7-4eb9-b9ce-10da7888c124" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
328 </packagedElement>
329 <packagedElement xmi:type="uml:Class" xmi:id="GUID+5b3b9a4c-c178-4cd1-b969-4de8bdb001ec" name="CalibrationNotLearnedError">
330 <generalization xmi:type="uml:Generalization" xmi:id="GUID+a5ff940c-90ec-4253-be0a-7a5cbccf8d71" general="GUID+23eb5620-e1bd-4389-906b-817159470e93"/>
331 </packagedElement>
332 <packagedElement xmi:type="uml:Class" xmi:id="GUID+f680048f-65f2-4916-bdde-60353c73c8ef" name="BuildCheckNotRunError">
333 <generalization xmi:type="uml:Generalization" xmi:id="GUID+8d5d5558-dded-482e-acd2-36beffb7b613" general="GUID+f6ded33d-b2b5-432a-af24-3f44f4ff727b"/>
334 </packagedElement>
335 <packagedElement xmi:type="uml:Class" xmi:id="GUID+6ea95903-08c4-4759-bc29-6e1e4d3a3a29" name="BuildCheckFailedError">
336 <generalization xmi:type="uml:Generalization" xmi:id="GUID+013f6658-8a94-49b4-be4d-885a9f106bec" general="GUID+f6ded33d-b2b5-432a-af24-3f44f4ff727b"/>
337 </packagedElement>
338 <packagedElement xmi:type="uml:Class" xmi:id="GUID+f9b0c4b6-99e7-4c84-a1e1-4d7b3eac0ff9" name="SFRError">
339 <generalization xmi:type="uml:Generalization" xmi:id="GUID+0c07b9a4-29d4-4e71-a07c-679ebbe6deb0" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
340 </packagedElement>
341 <packagedElement xmi:type="uml:Class" xmi:id="GUID+47d32e95-840d-4220-b9b2-bd1743d6548f" name="ALUError">
342 <generalization xmi:type="uml:Generalization" xmi:id="GUID+56161c8a-9865-4a29-87a7-739238ba2d3f" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
343 </packagedElement>
344 <packagedElement xmi:type="uml:Class" xmi:id="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e" name="MemoryError">
345 <generalization xmi:type="uml:Generalization" xmi:id="GUID+7713eafc-717e-4794-b90a-7f7e76ae09ab" general="GUID+340b5c52-0a00-407d-b4de-e7210cb5cbab"/>
346 </packagedElement>
347 <packagedElement xmi:type="uml:Class" xmi:id="GUID+e42837ee-2901-42fa-804a-9fe3948dd72b" name="RAMError">
348 <generalization xmi:type="uml:Generalization" xmi:id="GUID+f336f7c2-270e-48f2-9926-a1959a57dfb8" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
349 </packagedElement>
350 <packagedElement xmi:type="uml:Class" xmi:id="GUID+9ba8a2c2-70a1-40b8-abed-3ad1f4a7e169" name="ROMError">
351 <generalization xmi:type="uml:Generalization" xmi:id="GUID+c270ccb8-b150-414e-81bb-440206af7c10" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
352 </packagedElement>
353 <packagedElement xmi:type="uml:Class" xmi:id="GUID+60a533bd-6085-4cad-9f53-7432f92b7e2a" name="NVMCRCError">
354 <generalization xmi:type="uml:Generalization" xmi:id="GUID+5ce55d14-c2f1-4c9a-bf55-a42269c668bd" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
355 </packagedElement>
356 <packagedElement xmi:type="uml:Class" xmi:id="GUID+326f3ec3-76a5-4999-96c0-06866dc56ae8" name="CalibrationDataError">
357 <generalization xmi:type="uml:Generalization" xmi:id="GUID+0e65b5ba-4a6e-46f8-826f-b62287ae47b6" general="GUID+39e9e36d-3b1d-4ff0-b839-fa900547ec8e"/>
358 </packagedElement>
359 <packagedElement xmi:type="uml:Class" xmi:id="GUID+4d186178-6743-487a-b076-f02b2f3d001a" name="RAM">
360 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+ed67dec5-7a4c-4d86-8ff0-0cf1a86faada" name="isValid" visibility="public">
361 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
362 </ownedAttribute>
363 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+63f5a563-543d-45b6-877b-e7629bf5f2f4" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+b99c3d2f-bb55-4689-995f-df24c587bb88"/>
364 </packagedElement>
365 <packagedElement xmi:type="uml:Class" xmi:id="GUID+5e7682a5-b34e-4358-95ff-829e0be23658" name="SFR">
366 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+6af6d11b-92c5-40bc-a231-0273af76c806" name="isValid" visibility="public">
367 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
368 </ownedAttribute>
369 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+ae955560-f1cd-457e-be40-90ec2a706122" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+e3bc66db-a238-4056-beb9-a12a5d05c111"/>
370 </packagedElement>
371 <packagedElement xmi:type="uml:Class" xmi:id="GUID+21e2b3ba-944c-4b73-b237-49bc668a139d" name="ALU">
372 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+ae141729-73c8-49b5-b950-e55d52e53c98" name="isValid" visibility="public">
373 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
374 </ownedAttribute>
375 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+d1bb834b-4960-4527-a268-079af0a635dd" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+44591504-aed0-4354-9c71-c424de018587"/>
376 </packagedElement>
377 <packagedElement xmi:type="uml:Class" xmi:id="GUID+5f5aca8c-fb3f-4fd1-b4d8-01c234e1907c" name="Watchdog">
378 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+080f3db4-662a-4a1f-998e-a9b259e787ee" name="isEnabled" visibility="public">
379 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
380 </ownedAttribute>
381 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1df132f0-f5bb-443c-9a68-82a26fbd6592" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+3eff4bbf-a78c-4a39-869b-fb42314a7024"/>
382 </packagedElement>
383 <packagedElement xmi:type="uml:Class" xmi:id="GUID+03a6e68a-e687-4da1-afe8-a4cc7d7dc80b" name="NVM">
384 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+fa000fc1-c478-49e6-b576-6f289a865a7d" name="isAccessible" visibility="public">
385 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
386 </ownedAttribute>
387 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+99409fbe-ca55-4984-bd02-7d04bb53f460" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+faef7c57-fe29-4721-8e95-f68adb4c3db2"/>
388 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+63a5bdf7-b862-4ffb-a1d9-62b856939c6f" name="itsCalibrationData" visibility="public" type="GUID+862b21ad-fe99-4187-a3cf-ac61ba758b6e" association="GUID+45a73731-aa8f-4737-a159-5e09b69fe420"/>
389 </packagedElement>
390 <packagedElement xmi:type="uml:Class" xmi:id="GUID+862b21ad-fe99-4187-a3cf-ac61ba758b6e" name="CalibrationData">
391 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+dbeeafdc-6189-41a4-8060-ab51a318c163" name="crcCheck" visibility="public">
392 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
393 </ownedAttribute>
394 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+751fd7cd-eddc-4b83-b8ca-2736ea364089" name="isValid" visibility="public">
395 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
396 </ownedAttribute>
397 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f070f658-dc36-4e83-be04-eebcc4503b5b" name="itsBodySenseSystem_1" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+bbe1f8e1-57c6-44fd-bd5a-e8198b2b3c4a"/>
398 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+7264adec-5d31-4057-a5f2-4b489d6c19d4" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+6850f3f9-cd35-49be-8def-07e2c46a699f"/>
399 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+10ddcd3e-19a3-4740-a0eb-f5dc7359b4bf" name="itsNVM" visibility="public" type="GUID+03a6e68a-e687-4da1-afe8-a4cc7d7dc80b" association="GUID+45a73731-aa8f-4737-a159-5e09b69fe420"/>
400 </packagedElement>
401 <packagedElement xmi:type="uml:Class" xmi:id="GUID+861d3241-8956-4983-9dec-9ca1a3eda6e7" name="LINResponseError">
402 <generalization xmi:type="uml:Generalization" xmi:id="GUID+29b0fa4d-8591-4856-94e2-9122f40058a3" general="GUID+38fddb17-0a3c-4a5d-b6f9-e8413b28fb0a"/>
403 </packagedElement>
404 <packagedElement xmi:type="uml:Class" xmi:id="GUID+cd922c2e-5f7d-4cd8-a96e-8e39da39484a" name="LINCRCError">
405 <generalization xmi:type="uml:Generalization" xmi:id="GUID+fd105fe6-3df9-4ead-b4f8-637fe226d289" general="GUID+38fddb17-0a3c-4a5d-b6f9-e8413b28fb0a"/>
406 </packagedElement>
407 <packagedElement xmi:type="uml:Class" xmi:id="GUID+2ab04b30-dac5-4cc4-b682-122064af889a" name="ROM">
408 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+80228514-3770-4680-999c-5fef5b99f8ed" name="isValid" visibility="public">
409 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
410 </ownedAttribute>
411 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+81072951-7939-47dd-860e-435d11852617" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+e71c0e9a-901e-4bc0-9d48-418713906dee"/>
412 </packagedElement>
413 <packagedElement xmi:type="uml:Class" xmi:id="GUID+6d3ba789-8a7b-45bf-9cc6-75dfcbcff003" name="TemperatureRangeError">
414 <generalization xmi:type="uml:Generalization" xmi:id="GUID+8f933a25-c692-4161-bf0e-b70e9614abc9" general="GUID+48b88776-a1a3-47bb-a658-a12de079afaf"/>
415 </packagedElement>
416 <packagedElement xmi:type="uml:Class" xmi:id="GUID+f7669903-769b-441e-8832-073466c328e8" name="TemperatureRangeLimitError">
417 <generalization xmi:type="uml:Generalization" xmi:id="GUID+4bc9f164-95a3-4be8-a48f-f9e875085a2b" general="GUID+48b88776-a1a3-47bb-a658-a12de079afaf"/>
418 </packagedElement>
419 <packagedElement xmi:type="uml:Class" xmi:id="GUID+38ca0e1f-a482-4d8a-acba-e6f2ef5f8e75" name="MeasurementRangeError">
420 <generalization xmi:type="uml:Generalization" xmi:id="GUID+6d3e4caa-5cb3-43a8-b2eb-df20514c979b" general="GUID+7f785413-0c72-4c0f-8204-be2794c3e9dd"/>
421 </packagedElement>
422 <packagedElement xmi:type="uml:Class" xmi:id="GUID+f921f48d-7f45-4013-9187-ade53258a900" name="MeasurementValue">
423 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+3f270435-f39a-4833-98b0-cb2ba94f0c4c" name="cxValue" visibility="public">
424 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
425 </ownedAttribute>
426 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+3257593c-e169-4aba-8d7d-fbe33424913d" name="gxValue" visibility="public">
427 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
428 </ownedAttribute>
429 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a58b0e85-b1bd-444d-b1b5-7049fd4a7382" name="isSaturated" visibility="public">
430 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
431 </ownedAttribute>
432 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+8cfe5162-d808-4ad4-9469-44228875131e" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+ca517787-217f-4692-a7f9-314f16a02ced"/>
433 </packagedElement>
434 <packagedElement xmi:type="uml:Class" xmi:id="GUID+97eb2f7b-c164-4957-9367-a2ed65230091" name="DTC"/>
435 <packagedElement xmi:type="uml:Class" xmi:id="GUID+5ccdd823-5164-4f1e-a14d-895c7f8165e5" name="IgnitionResetButton">
436 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+38d5a9bd-3549-4bca-a92d-87668e7f91a3" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+e0c6236a-7292-4de6-a0d0-f55e09c20b19"/>
437 </packagedElement>
438 <packagedElement xmi:type="uml:Class" xmi:id="GUID+6959692e-af45-40ee-b0fb-6a34ab872fe6" name="Timer">
439 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+09ae9d76-67d9-485a-a88c-56760a387e8b" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+cbe808a6-06cc-4469-a39a-4e0c9af87eed"/>
440 </packagedElement>
441 <packagedElement xmi:type="uml:Class" xmi:id="GUID+53333089-c1dd-4487-982a-fa14deaa8510" name="VoltageSensor">
442 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+853dd134-91eb-4d76-a976-16e23e4b6acd" name="voltage" visibility="public">
443 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
444 </ownedAttribute>
445 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+30c66265-813b-47d1-8330-56d749ee69ed" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+a35fad26-bc73-4424-8dc8-eae52113c5f1"/>
446 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+541d9fa9-b6d2-4148-a390-451139341ff7" name="get_voltage" visibility="public">
447 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgYmpaEeS7fJC3QiZfaQ" name="Result" direction="return">
448 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
449 </ownedParameter>
450 </ownedOperation>
451 </packagedElement>
452 <packagedElement xmi:type="uml:Class" xmi:id="GUID+2aa138ab-8791-4b76-8cf7-23d650c1933f" name="BodySenseSensor">
453 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a3857ec0-09cc-4423-a1fe-3a57890b30d7" name="seatFrameConnectionStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
454 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f6ea8478-1cb0-44b3-88ae-a60fdb1fc332" name="seatHeaterCircuitIntegrityStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
455 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+58002fed-4dba-4059-ad46-85aecd1f653a" name="cableShieldIntegrityStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
456 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+68a6fc59-b662-4d16-b56b-3508c6f722ff" name="measurementSensePathStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
457 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+793bd523-09a1-46f1-be17-ee0042af691c" name="shortSenseUbatGNDStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
458 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+e73a8b99-f16a-423d-8bac-6594a639f5e0" name="cxValue" visibility="public">
459 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
460 </ownedAttribute>
461 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+db027956-4fde-472e-aa87-0e7d7f35a343" name="gxValue" visibility="public">
462 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
463 </ownedAttribute>
464 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+366b70f9-ac6b-4230-bdef-727e4fec9d4e" name="saturationFlag" visibility="public">
465 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
466 </ownedAttribute>
467 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+8b00e42c-4692-4290-b3d7-0d8765010983" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+97c91b3c-f082-4cc6-8cd9-f00aaf733b16"/>
468 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+2bf9074f-10d0-4b50-8565-52b83b02dc16" name="get_seat_frame_connection_status" visibility="public">
469 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgbmpaEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
470 </ownedOperation>
471 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+3ce1d937-a07f-44f2-93f6-8c1a660be5a1" name="get_seat_heater_circuit_integrity_status" visibility="public">
472 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgcGpaEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
473 </ownedOperation>
474 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+caa6da88-26e8-4307-8053-da4f613f4b7e" name="get_cable_shield_integrity_stauts" visibility="public">
475 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgcmpaEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
476 </ownedOperation>
477 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+3d4a13ab-3a4e-432b-a0b4-c99d8b4727d6" name="get_measurement_sense_path_status" visibility="public">
478 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgdGpaEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
479 </ownedOperation>
480 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+e9b441bf-c9dd-408a-b824-9d4a4288b3e7" name="get_short_sense_Ubat_GND_status" visibility="public">
481 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgdmpaEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
482 </ownedOperation>
483 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+0f13e898-c9a6-4789-8b0d-fdc1c9abf409" name="measure_occupancy_status" visibility="public">
484 <ownedParameter xmi:type="uml:Parameter" xmi:id="GUID+59e9a22a-1999-477a-aae6-163f2a9dc7e1" name="frequencyIndex">
485 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
486 </ownedParameter>
487 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgeWpaEeS7fJC3QiZfaQ" name="Result" type="GUID+f921f48d-7f45-4013-9187-ade53258a900" direction="return"/>
488 </ownedOperation>
489 </packagedElement>
490 <packagedElement xmi:type="uml:Class" xmi:id="GUID+33990a46-5bc7-4ed6-a952-40212c7a7e2a" name="BodySenseElectronics">
491 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+efba581e-bec9-4e9f-ad03-3e20f0c8f876" name="InternalMeasurementPathStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
492 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+e0c93c77-a56e-46c5-a79a-536d5d5e2ddc" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+a9c80e74-724c-4b38-a42d-be9f9cd06038"/>
493 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+9974d2e0-508e-4c40-ac6d-fcbfe0429b71" name="get_internal_measurement_path_status" visibility="public">
494 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgfmpaEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
495 </ownedOperation>
496 </packagedElement>
497 <packagedElement xmi:type="uml:Class" xmi:id="GUID+b103d9a5-f222-4835-b60f-56236203ab44" name="TemperatureSensor">
498 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+e007d1b4-7036-4ae5-8861-6fe4b9a34225" name="temperatureSensorStatus" visibility="public" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f"/>
499 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a57733f7-d82f-4a5f-98ae-5a42842aa893" name="temperature" visibility="public">
500 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
501 </ownedAttribute>
502 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+f302fb2e-c2c3-43f5-9a71-96991cdd11d8" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+0a638758-4e69-46f4-9b73-cb71bacbafdf"/>
503 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+582a0913-9f1a-4f2a-ab36-a70e5531c586" name="itsThermistor" visibility="public" type="GUID+f8144966-7d5b-479c-9f0f-6fb003324166" aggregation="composite" association="_mgCgzmpaEeS7fJC3QiZfaQ">
504 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mgCghWpaEeS7fJC3QiZfaQ" value="2"/>
505 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mgCghGpaEeS7fJC3QiZfaQ" value="2"/>
506 </ownedAttribute>
507 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+b76a30ca-d7ac-4512-8abe-5a21b70d1254" name="get_temperature_sensor_status" visibility="public">
508 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgh2paEeS7fJC3QiZfaQ" name="Result" type="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" direction="return"/>
509 </ownedOperation>
510 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+2a9f97af-ab75-450a-a5a1-3097a7351c07" name="get_temperature" visibility="public">
511 <ownedParameter xmi:type="uml:Parameter" xmi:id="_mgCgiWpaEeS7fJC3QiZfaQ" name="Result" direction="return">
512 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
513 </ownedParameter>
514 </ownedOperation>
515 </packagedElement>
516 <packagedElement xmi:type="uml:Class" xmi:id="GUID+f8144966-7d5b-479c-9f0f-6fb003324166" name="Thermistor">
517 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+1f4d8dbf-38db-4598-9de8-ed7a621b94e4" name="itsTemperatureSensor" visibility="public" type="GUID+b103d9a5-f222-4835-b60f-56236203ab44" association="_mgCgzmpaEeS7fJC3QiZfaQ"/>
518 </packagedElement>
519 <packagedElement xmi:type="uml:Class" xmi:id="GUID+aeaf44bf-4d97-43e2-b5aa-f6a5d83d2b85" name="AirbagControlUnit">
520 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+25cbf9bd-2ad4-4313-aa2b-ff730892a89d" name="itsOccupancyStatus" visibility="public" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b" association="GUID+3e632cf8-c2a9-4835-82f0-059874ceaf89"/>
521 <ownedAttribute xmi:type="uml:Property" xmi:id="GUID+a498df1b-6af8-4ea0-95bb-7df6e5758efc" name="itsBodySenseSystem" visibility="public" type="GUID+0f474175-fa54-4e22-9fde-c1ac83af0bf8" association="GUID+d9fe5cca-f9f8-473e-8bf2-9240a278b4d2"/>
522 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+348e84e2-7ced-40d8-8dff-e566b0b388d7" name="provide_previous_classification_value" visibility="public"/>
523 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+4d29595c-2588-4891-b13f-c5fe37fae046" name="send_com_DTC" visibility="public"/>
524 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+10d2c925-05d9-43e8-918d-587d33e7243a" name="send_occupant_class_for_airbag_control_error" visibility="public"/>
525 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+86c9275b-06a9-44be-b4a1-7cb8fd5b7027" name="send_occupant_class_for_sbr_control_error" visibility="public"/>
526 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+c425b85b-c093-4737-8011-582ae176b0ef" name="send_occupant_class_for_airbag_control" visibility="public">
527 <ownedParameter xmi:type="uml:Parameter" xmi:id="GUID+5b1d74bd-6333-426b-b235-d16012d67ba1" name="oc" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b"/>
528 </ownedOperation>
529 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+43628f2e-ebe0-4617-86f9-5b597b65ca81" name="send_occupant_class_for_sbr" visibility="public">
530 <ownedParameter xmi:type="uml:Parameter" xmi:id="GUID+9e968916-966a-4927-ac7d-719b8b1a8d8a" name="oc" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b"/>
531 </ownedOperation>
532 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+a2de16db-14fa-4015-93ea-d143eced4332" name="send_previous_occupant_class_for_airbag_control" visibility="public">
533 <ownedParameter xmi:type="uml:Parameter" xmi:id="GUID+e4807c28-b927-4dcf-8fdf-89f5aabd989f" name="oc" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b"/>
534 </ownedOperation>
535 <ownedOperation xmi:type="uml:Operation" xmi:id="GUID+15469dfe-9db8-4404-8c82-8fb73d61e19b" name="send_previous_occupant_class_for_sbr" visibility="public">
536 <ownedParameter xmi:type="uml:Parameter" xmi:id="GUID+d02cd38b-3b73-4db4-9e31-48c5e75112db" name="oc" type="GUID+66fe09ac-7246-4e38-b0de-ccd788f7347b"/>
537 </ownedOperation>
538 </packagedElement>
539 <packagedElement xmi:type="uml:Association" xmi:id="GUID+a35fad26-bc73-4424-8dc8-eae52113c5f1" name="input" memberEnd="GUID+da01c4d6-b4a6-4b3c-a666-a875e63fe1bf GUID+30c66265-813b-47d1-8330-56d749ee69ed"/>
540 <packagedElement xmi:type="uml:Association" xmi:id="GUID+a9c80e74-724c-4b38-a42d-be9f9cd06038" name="input" memberEnd="GUID+e0c93c77-a56e-46c5-a79a-536d5d5e2ddc GUID+1010d33a-32d4-4e94-9e16-c51c59ef374e"/>
541 <packagedElement xmi:type="uml:Association" xmi:id="GUID+cbe808a6-06cc-4469-a39a-4e0c9af87eed" name="awaken" memberEnd="GUID+09ae9d76-67d9-485a-a88c-56760a387e8b GUID+381091ac-85a3-4116-8ae2-76eafae22f05"/>
542 <packagedElement xmi:type="uml:Association" xmi:id="GUID+e0c6236a-7292-4de6-a0d0-f55e09c20b19" name="input" memberEnd="GUID+38d5a9bd-3549-4bca-a92d-87668e7f91a3 GUID+a39561af-8268-4233-96f0-2842947ae10e"/>
543 <packagedElement xmi:type="uml:Association" xmi:id="GUID+05618f64-fb68-40b7-bd3a-6ffa3884d335" name="sense" memberEnd="GUID+478c8763-c0da-4b05-bbc1-e9d826793df0 GUID+c37ff336-8596-4135-8aee-03c36bed4c07"/>
544 <packagedElement xmi:type="uml:Association" xmi:id="GUID+f05e6892-5c49-4fb5-b7ef-2f9ed7c73bd1" name="gives" memberEnd="GUID+69169118-aa04-497f-b7aa-e68553925437 GUID+b8524d08-9dd2-405b-b3b3-6335c09f167e"/>
545 <packagedElement xmi:type="uml:Association" xmi:id="GUID+97c91b3c-f082-4cc6-8cd9-f00aaf733b16" name="input" memberEnd="GUID+8b00e42c-4692-4290-b3d7-0d8765010983 GUID+8daf9eb1-da96-4db7-b037-988c73a152c6"/>
546 <packagedElement xmi:type="uml:Association" xmi:id="GUID+0a638758-4e69-46f4-9b73-cb71bacbafdf" name="input" memberEnd="GUID+f302fb2e-c2c3-43f5-9a71-96991cdd11d8 GUID+66885a26-3da4-425b-bde9-2dde68605810"/>
547 <packagedElement xmi:type="uml:Association" xmi:id="GUID+d9fe5cca-f9f8-473e-8bf2-9240a278b4d2" name="connect" memberEnd="GUID+a498df1b-6af8-4ea0-95bb-7df6e5758efc GUID+b06be66b-9af4-48fd-b01f-2a45446f6c7d"/>
548 <packagedElement xmi:type="uml:Association" xmi:id="GUID+3e632cf8-c2a9-4835-82f0-059874ceaf89" name="received" memberEnd="GUID+25cbf9bd-2ad4-4313-aa2b-ff730892a89d GUID+a274dbf9-ed8d-4933-b70f-6c610322ebeb"/>
549 <packagedElement xmi:type="uml:Association" xmi:id="GUID+eaf63a81-1e41-4de3-b94d-eb3f52e51e15" name="store" memberEnd="GUID+9492b531-8d79-4963-9d04-7e45efe9d4cb GUID+1f474478-a4a9-40f7-8722-1d68578ba047"/>
550 <packagedElement xmi:type="uml:Association" xmi:id="GUID+faef7c57-fe29-4721-8e95-f68adb4c3db2" name="has" memberEnd="GUID+99409fbe-ca55-4984-bd02-7d04bb53f460 GUID+68728fd2-e5bc-4115-bf8f-57bd838ab09f"/>
551 <packagedElement xmi:type="uml:Association" xmi:id="GUID+45a73731-aa8f-4737-a159-5e09b69fe420" name="store" memberEnd="GUID+63a5bdf7-b862-4ffb-a1d9-62b856939c6f GUID+10ddcd3e-19a3-4740-a0eb-f5dc7359b4bf"/>
552 <packagedElement xmi:type="uml:Association" xmi:id="GUID+6850f3f9-cd35-49be-8def-07e2c46a699f" name="store" memberEnd="GUID+7264adec-5d31-4057-a5f2-4b489d6c19d4 GUID+b8ca4358-dd93-49db-93a9-06b7521aab41"/>
553 <packagedElement xmi:type="uml:Association" xmi:id="GUID+bbe1f8e1-57c6-44fd-bd5a-e8198b2b3c4a" name="store" memberEnd="GUID+27dc4967-d64d-4dcc-9038-c8bd47700c85 GUID+f070f658-dc36-4e83-be04-eebcc4503b5b"/>
554 <packagedElement xmi:type="uml:Association" xmi:id="GUID+b99c3d2f-bb55-4689-995f-df24c587bb88" name="has" memberEnd="GUID+bf450128-4370-4ae1-af37-b9b0375b347a GUID+63f5a563-543d-45b6-877b-e7629bf5f2f4"/>
555 <packagedElement xmi:type="uml:Association" xmi:id="GUID+e3bc66db-a238-4056-beb9-a12a5d05c111" name="has" memberEnd="GUID+120bf304-389c-4f2e-a1fe-1024bf080b56 GUID+ae955560-f1cd-457e-be40-90ec2a706122"/>
556 <packagedElement xmi:type="uml:Association" xmi:id="GUID+44591504-aed0-4354-9c71-c424de018587" name="has" memberEnd="GUID+88d4da64-8034-40a4-bd44-1558acd54307 GUID+d1bb834b-4960-4527-a268-079af0a635dd"/>
557 <packagedElement xmi:type="uml:Association" xmi:id="GUID+3eff4bbf-a78c-4a39-869b-fb42314a7024" name="has" memberEnd="GUID+1df132f0-f5bb-443c-9a68-82a26fbd6592 GUID+c6913877-0ff3-4d9b-8c90-a39339cc1268"/>
558 <packagedElement xmi:type="uml:Association" xmi:id="GUID+e71c0e9a-901e-4bc0-9d48-418713906dee" name="has" memberEnd="GUID+a3ab1373-15aa-415b-a1a8-967e74d68bcf GUID+81072951-7939-47dd-860e-435d11852617"/>
559 <packagedElement xmi:type="uml:Association" xmi:id="GUID+ca517787-217f-4692-a7f9-314f16a02ced" name="measures" memberEnd="GUID+8cfe5162-d808-4ad4-9469-44228875131e GUID+f370cb64-dc8b-4b9d-b46d-fd9f7ad7e49d"/>
560 <packagedElement xmi:type="uml:Enumeration" xmi:id="GUID+a7a55376-97c1-4516-8524-c4a77235a929" name="OccupantClassAirbag">
561 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+9e55efc2-111f-461c-aa07-0b1bb5b481e0" name="EmptyOrChildSeat">
562 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgsmpaEeS7fJC3QiZfaQ" value=""/>
563 </ownedLiteral>
564 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+ffdd2271-6480-4087-80e6-ad57a4c29ce2" name="Adult">
565 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgtGpaEeS7fJC3QiZfaQ" value=""/>
566 </ownedLiteral>
567 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+539abb2f-4c61-4bf4-9c64-858735108bea" name="Error">
568 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgtmpaEeS7fJC3QiZfaQ" value=""/>
569 </ownedLiteral>
570 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+9ffa2cb4-0668-4f6e-aa28-c724abafc0fa" name="Init">
571 <specification xmi:type="uml:LiteralString" xmi:id="_mgCguGpaEeS7fJC3QiZfaQ" value=""/>
572 </ownedLiteral>
573 </packagedElement>
574 <packagedElement xmi:type="uml:Enumeration" xmi:id="GUID+a2e418ae-a4e5-4308-9993-ff3dd7ad5fbf" name="OccupantClassSbr">
575 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+cc847e2c-6251-47c6-9889-dca653fd0394" name="Empty">
576 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgu2paEeS7fJC3QiZfaQ" value=""/>
577 </ownedLiteral>
578 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+775b0457-4c47-45a2-96b1-81ca6494398f" name="Occupied">
579 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgvWpaEeS7fJC3QiZfaQ" value=""/>
580 </ownedLiteral>
581 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+f81c7276-ac9f-49e4-ad1a-fe90a1bd860c" name="Error">
582 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgv2paEeS7fJC3QiZfaQ" value=""/>
583 </ownedLiteral>
584 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+f0a75a5e-dfd8-4f7a-ac69-1dc5f1f5ea16" name="Init">
585 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgwWpaEeS7fJC3QiZfaQ" value=""/>
586 </ownedLiteral>
587 </packagedElement>
588 <packagedElement xmi:type="uml:Enumeration" xmi:id="GUID+98b4d567-5252-4aec-ab11-94ca8fbfd876" name="BuildCheckStatus">
589 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+80b9c7d1-21d5-406c-9129-8aaa5c789117" name="NotRun">
590 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgxGpaEeS7fJC3QiZfaQ" value=""/>
591 </ownedLiteral>
592 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+3e271335-e423-483e-8ed5-13c847d30c95" name="Passed">
593 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgxmpaEeS7fJC3QiZfaQ" value=""/>
594 </ownedLiteral>
595 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+b075b74b-8316-4dbd-ac27-d079b19f6f42" name="Failed">
596 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgyGpaEeS7fJC3QiZfaQ" value=""/>
597 </ownedLiteral>
598 </packagedElement>
599 <packagedElement xmi:type="uml:Enumeration" xmi:id="GUID+28db8431-e6d0-4b04-884a-c84d66585f7f" name="HWStatus">
600 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+6d3bdba9-3619-4431-96da-6b5397db3629" name="OK">
601 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgy2paEeS7fJC3QiZfaQ" value=""/>
602 </ownedLiteral>
603 <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID+5b554ebf-2b43-41ef-b7c3-16d1898d383c" name="NotOK">
604 <specification xmi:type="uml:LiteralString" xmi:id="_mgCgzWpaEeS7fJC3QiZfaQ" value=""/>
605 </ownedLiteral>
606 </packagedElement>
607 <packagedElement xmi:type="uml:Association" xmi:id="_mgCgzmpaEeS7fJC3QiZfaQ" memberEnd="GUID+582a0913-9f1a-4f2a-ab36-a70e5531c586 GUID+1f4d8dbf-38db-4598-9de8-ed7a621b94e4"/>
608</uml:Package>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_C.uml_ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_C.uml_
new file mode 100644
index 00000000..29208a9a
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.originalFiles/model/CD_Case_C.uml_
@@ -0,0 +1,2094 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<uml:Package xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="GUID+fadc4ae9-265b-4361-8233-286c5b98ea06" name="inputData" URI="http:///inputData.ecore">
3 <packageImport xmi:id="_Rvoi9FVUEeWRIqLs5_0Tzg">
4 <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
5 </packageImport>
6 <packagedElement xmi:type="uml:Class" xmi:id="_Rvoi9VVUEeWRIqLs5_0Tzg" name="XsveRtStps">
7 <ownedAttribute xmi:id="_Rvoi9lVUEeWRIqLs5_0Tzg" name="extendedCadu" visibility="private" isUnique="false">
8 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
9 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoi-FVUEeWRIqLs5_0Tzg" value="1"/>
10 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoi91VUEeWRIqLs5_0Tzg" value="1"/>
11 </ownedAttribute>
12 <ownedAttribute xmi:id="_Rvoi-VVUEeWRIqLs5_0Tzg" name="minimalBinaryOutput" visibility="private">
13 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
14 </ownedAttribute>
15 <ownedAttribute xmi:id="_Rvoi-lVUEeWRIqLs5_0Tzg" name="frameLength" visibility="private" type="_Rvome1VUEeWRIqLs5_0Tzg" isUnique="false">
16 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoi_FVUEeWRIqLs5_0Tzg" value="1"/>
17 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoi-1VUEeWRIqLs5_0Tzg" value="1"/>
18 </ownedAttribute>
19 <ownedAttribute xmi:id="_Rvoi_VVUEeWRIqLs5_0Tzg" name="site" visibility="private" isUnique="false">
20 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
21 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoi_1VUEeWRIqLs5_0Tzg" value="1"/>
22 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoi_lVUEeWRIqLs5_0Tzg" value="1"/>
23 </ownedAttribute>
24 <ownedAttribute xmi:id="_RvojAFVUEeWRIqLs5_0Tzg" name="fileClass" visibility="private" type="_RvojuFVUEeWRIqLs5_0Tzg" isUnique="false">
25 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojAlVUEeWRIqLs5_0Tzg" value="1"/>
26 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojAVVUEeWRIqLs5_0Tzg" value="1"/>
27 </ownedAttribute>
28 <ownedAttribute xmi:id="_RvojA1VUEeWRIqLs5_0Tzg" name="missionName" visibility="private" type="_RvomgFVUEeWRIqLs5_0Tzg" isUnique="false">
29 <ownedComment xmi:id="_RvojBFVUEeWRIqLs5_0Tzg" annotatedElement="_RvojA1VUEeWRIqLs5_0Tzg">
30 <body>&lt;p>Mission name; value: three characters matching the following regular expression [S][1-3][A-B]&lt;/p></body>
31 </ownedComment>
32 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojBlVUEeWRIqLs5_0Tzg" value="1"/>
33 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojBVVUEeWRIqLs5_0Tzg" value="1"/>
34 </ownedAttribute>
35 <ownedAttribute xmi:id="_RvojB1VUEeWRIqLs5_0Tzg" name="rsCorrectHeader" visibility="private" isUnique="false">
36 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
37 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojCVVUEeWRIqLs5_0Tzg" value="1"/>
38 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojCFVUEeWRIqLs5_0Tzg" value="1"/>
39 </ownedAttribute>
40 <ownedAttribute xmi:id="_RvojClVUEeWRIqLs5_0Tzg" name="checkCrc" visibility="private" isUnique="false">
41 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
42 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojDFVUEeWRIqLs5_0Tzg" value="1"/>
43 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojC1VUEeWRIqLs5_0Tzg" value="1"/>
44 </ownedAttribute>
45 <ownedAttribute xmi:id="_RvojDVVUEeWRIqLs5_0Tzg" name="rsCorrectFrame" visibility="private" isUnique="false">
46 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
47 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojD1VUEeWRIqLs5_0Tzg" value="1"/>
48 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojDlVUEeWRIqLs5_0Tzg" value="1"/>
49 </ownedAttribute>
50 <ownedAttribute xmi:id="_RvojEFVUEeWRIqLs5_0Tzg" name="rsCorrectSize" visibility="private" type="_Rvome1VUEeWRIqLs5_0Tzg" isUnique="false">
51 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojElVUEeWRIqLs5_0Tzg" value="1"/>
52 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojEVVUEeWRIqLs5_0Tzg" value="1"/>
53 </ownedAttribute>
54 <ownedAttribute xmi:id="_RvojE1VUEeWRIqLs5_0Tzg" name="spacecraftId" visibility="private" isUnique="false">
55 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
56 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojFVVUEeWRIqLs5_0Tzg" value="1"/>
57 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojFFVUEeWRIqLs5_0Tzg" value="1"/>
58 </ownedAttribute>
59 <ownedAttribute xmi:id="_RvojFlVUEeWRIqLs5_0Tzg" name="idleVcid" visibility="private" type="_RvomoVVUEeWRIqLs5_0Tzg"/>
60 <ownedAttribute xmi:id="_RvojF1VUEeWRIqLs5_0Tzg" name="idleApid" visibility="private" type="_RvomjVVUEeWRIqLs5_0Tzg"/>
61 <ownedAttribute xmi:id="_RvojGFVUEeWRIqLs5_0Tzg" name="discardIdle" visibility="private" isUnique="false">
62 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
63 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojGlVUEeWRIqLs5_0Tzg" value="1"/>
64 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojGVVUEeWRIqLs5_0Tzg" value="1"/>
65 </ownedAttribute>
66 <ownedAttribute xmi:id="_RvojG1VUEeWRIqLs5_0Tzg" name="vcdusConfig" visibility="private" type="_RvojIlVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomelVUEeWRIqLs5_0Tzg">
67 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojHVVUEeWRIqLs5_0Tzg" value="1"/>
68 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojHFVUEeWRIqLs5_0Tzg" value="1"/>
69 </ownedAttribute>
70 <ownedAttribute xmi:id="_RvojHlVUEeWRIqLs5_0Tzg" name="ignoreIdlePattern" visibility="private">
71 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
72 </ownedAttribute>
73 <ownedAttribute xmi:id="_RvojH1VUEeWRIqLs5_0Tzg" name="rtStpsConfig" visibility="private" type="_RvojPlVUEeWRIqLs5_0Tzg" association="_Rvomd1VUEeWRIqLs5_0Tzg">
74 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojIVVUEeWRIqLs5_0Tzg" value="1"/>
75 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojIFVUEeWRIqLs5_0Tzg" value="1"/>
76 </ownedAttribute>
77 </packagedElement>
78 <packagedElement xmi:type="uml:Class" xmi:id="_RvojIlVUEeWRIqLs5_0Tzg" name="VcdusConfig">
79 <ownedAttribute xmi:id="_RvojI1VUEeWRIqLs5_0Tzg" name="xsveRtStps" visibility="private" type="_Rvoi9VVUEeWRIqLs5_0Tzg" association="_RvomelVUEeWRIqLs5_0Tzg">
80 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojJVVUEeWRIqLs5_0Tzg" value="1"/>
81 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojJFVUEeWRIqLs5_0Tzg" value="1"/>
82 </ownedAttribute>
83 <ownedAttribute xmi:id="_RvojJlVUEeWRIqLs5_0Tzg" name="vcduConfig" visibility="private" type="_RvojKVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomeVVUEeWRIqLs5_0Tzg">
84 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojKFVUEeWRIqLs5_0Tzg" value="1"/>
85 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojJ1VUEeWRIqLs5_0Tzg" value="*"/>
86 </ownedAttribute>
87 </packagedElement>
88 <packagedElement xmi:type="uml:Class" xmi:id="_RvojKVVUEeWRIqLs5_0Tzg" name="VcduConfig">
89 <ownedAttribute xmi:id="_RvojKlVUEeWRIqLs5_0Tzg" name="vcdusConfig" visibility="private" type="_RvojIlVUEeWRIqLs5_0Tzg" association="_RvomeVVUEeWRIqLs5_0Tzg">
90 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojLFVUEeWRIqLs5_0Tzg" value="1"/>
91 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojK1VUEeWRIqLs5_0Tzg" value="1"/>
92 </ownedAttribute>
93 <ownedAttribute xmi:id="_RvojLVVUEeWRIqLs5_0Tzg" name="vcid" visibility="private" type="_RvomoVVUEeWRIqLs5_0Tzg"/>
94 <ownedAttribute xmi:id="_RvojLlVUEeWRIqLs5_0Tzg" name="minPacketSize" visibility="private" type="_Rvome1VUEeWRIqLs5_0Tzg" isUnique="false">
95 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojMFVUEeWRIqLs5_0Tzg" value="1"/>
96 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojL1VUEeWRIqLs5_0Tzg" value="1"/>
97 </ownedAttribute>
98 <ownedAttribute xmi:id="_RvojMVVUEeWRIqLs5_0Tzg" name="maxPacketSize" visibility="private" type="_Rvome1VUEeWRIqLs5_0Tzg" isUnique="false">
99 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojM1VUEeWRIqLs5_0Tzg" value="1"/>
100 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojMlVUEeWRIqLs5_0Tzg" value="1"/>
101 </ownedAttribute>
102 <ownedAttribute xmi:id="_RvojNFVUEeWRIqLs5_0Tzg" name="ispsConfig" visibility="private" type="_RvojTFVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomdVVUEeWRIqLs5_0Tzg">
103 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojNlVUEeWRIqLs5_0Tzg" value="1"/>
104 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojNVVUEeWRIqLs5_0Tzg" value="1"/>
105 </ownedAttribute>
106 </packagedElement>
107 <packagedElement xmi:type="uml:Class" xmi:id="_RvojN1VUEeWRIqLs5_0Tzg" name="ValidApidsConfig">
108 <ownedAttribute xmi:id="_RvojOFVUEeWRIqLs5_0Tzg" name="configuration" visibility="private" type="_RvojclVUEeWRIqLs5_0Tzg" association="_RvomcVVUEeWRIqLs5_0Tzg">
109 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojOlVUEeWRIqLs5_0Tzg" value="1"/>
110 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojOVVUEeWRIqLs5_0Tzg" value="1"/>
111 </ownedAttribute>
112 <ownedAttribute xmi:id="_RvojO1VUEeWRIqLs5_0Tzg" name="ispInfo" visibility="private" type="_RvojU1VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomeFVUEeWRIqLs5_0Tzg">
113 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojPVVUEeWRIqLs5_0Tzg" value="1"/>
114 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojPFVUEeWRIqLs5_0Tzg" value="*"/>
115 </ownedAttribute>
116 </packagedElement>
117 <packagedElement xmi:type="uml:Class" xmi:id="_RvojPlVUEeWRIqLs5_0Tzg" name="RtStpsConfig">
118 <ownedAttribute xmi:id="_RvojP1VUEeWRIqLs5_0Tzg" name="configuration" visibility="private" type="_RvojclVUEeWRIqLs5_0Tzg" association="_Rvomc1VUEeWRIqLs5_0Tzg">
119 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojQVVUEeWRIqLs5_0Tzg" value="1"/>
120 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojQFVUEeWRIqLs5_0Tzg" value="1"/>
121 </ownedAttribute>
122 <ownedAttribute xmi:id="_RvojQlVUEeWRIqLs5_0Tzg" name="xsveRtStps" visibility="private" type="_Rvoi9VVUEeWRIqLs5_0Tzg" aggregation="composite" association="_Rvomd1VUEeWRIqLs5_0Tzg">
123 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojRFVUEeWRIqLs5_0Tzg" value="1"/>
124 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojQ1VUEeWRIqLs5_0Tzg" value="1"/>
125 </ownedAttribute>
126 </packagedElement>
127 <packagedElement xmi:type="uml:Class" xmi:id="_RvojRVVUEeWRIqLs5_0Tzg" name="MaxCounterPerApidSuffixConfig">
128 <ownedAttribute xmi:id="_RvojRlVUEeWRIqLs5_0Tzg" name="apidSuffixAndMaxCounter" visibility="private" type="_Rvojf1VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomdlVUEeWRIqLs5_0Tzg">
129 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojSFVUEeWRIqLs5_0Tzg" value="1"/>
130 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojR1VUEeWRIqLs5_0Tzg" value="*"/>
131 </ownedAttribute>
132 <ownedAttribute xmi:id="_RvojSVVUEeWRIqLs5_0Tzg" name="configuration" visibility="private" type="_RvojclVUEeWRIqLs5_0Tzg" association="_RvomclVUEeWRIqLs5_0Tzg">
133 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojS1VUEeWRIqLs5_0Tzg" value="1"/>
134 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojSlVUEeWRIqLs5_0Tzg" value="1"/>
135 </ownedAttribute>
136 </packagedElement>
137 <packagedElement xmi:type="uml:Class" xmi:id="_RvojTFVUEeWRIqLs5_0Tzg" name="IspsConfig">
138 <ownedAttribute xmi:id="_RvojTVVUEeWRIqLs5_0Tzg" name="vcduConfig" visibility="private" type="_RvojKVVUEeWRIqLs5_0Tzg" association="_RvomdVVUEeWRIqLs5_0Tzg">
139 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojT1VUEeWRIqLs5_0Tzg" value="1"/>
140 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojTlVUEeWRIqLs5_0Tzg" value="1"/>
141 </ownedAttribute>
142 <ownedAttribute xmi:id="_RvojUFVUEeWRIqLs5_0Tzg" name="ispConfig" visibility="private" type="_RvojbVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomdFVUEeWRIqLs5_0Tzg">
143 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojUlVUEeWRIqLs5_0Tzg" value="1"/>
144 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojUVVUEeWRIqLs5_0Tzg" value="*"/>
145 </ownedAttribute>
146 </packagedElement>
147 <packagedElement xmi:type="uml:Class" xmi:id="_RvojU1VUEeWRIqLs5_0Tzg" name="IspInfo">
148 <ownedAttribute xmi:id="_RvojVFVUEeWRIqLs5_0Tzg" name="missionName" visibility="private" type="_RvomgFVUEeWRIqLs5_0Tzg"/>
149 <ownedAttribute xmi:id="_RvojVVVUEeWRIqLs5_0Tzg" name="offset" visibility="private">
150 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
151 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojV1VUEeWRIqLs5_0Tzg" value="1"/>
152 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojVlVUEeWRIqLs5_0Tzg" value="1"/>
153 </ownedAttribute>
154 <ownedAttribute xmi:id="_RvojWFVUEeWRIqLs5_0Tzg" name="packetType" visibility="private" type="_RvojnFVUEeWRIqLs5_0Tzg">
155 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojWlVUEeWRIqLs5_0Tzg" value="1"/>
156 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojWVVUEeWRIqLs5_0Tzg" value="1"/>
157 </ownedAttribute>
158 <ownedAttribute xmi:id="_RvojW1VUEeWRIqLs5_0Tzg" name="seconds" visibility="private">
159 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
160 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojXVVUEeWRIqLs5_0Tzg" value="1"/>
161 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojXFVUEeWRIqLs5_0Tzg" value="1"/>
162 </ownedAttribute>
163 <ownedAttribute xmi:id="_RvojXlVUEeWRIqLs5_0Tzg" name="subseconds" visibility="private">
164 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
165 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojYFVUEeWRIqLs5_0Tzg" value="1"/>
166 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojX1VUEeWRIqLs5_0Tzg" value="1"/>
167 </ownedAttribute>
168 <ownedAttribute xmi:id="_RvojYVVUEeWRIqLs5_0Tzg" name="apidValue" visibility="private" type="_RvomjVVUEeWRIqLs5_0Tzg">
169 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojY1VUEeWRIqLs5_0Tzg"/>
170 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojYlVUEeWRIqLs5_0Tzg" value="*"/>
171 </ownedAttribute>
172 <ownedAttribute xmi:id="_RvojZFVUEeWRIqLs5_0Tzg" name="validApidsConfig" visibility="private" type="_RvojN1VUEeWRIqLs5_0Tzg" association="_RvomeFVUEeWRIqLs5_0Tzg">
173 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojZlVUEeWRIqLs5_0Tzg" value="1"/>
174 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojZVVUEeWRIqLs5_0Tzg" value="1"/>
175 </ownedAttribute>
176 <ownedAttribute xmi:id="_RvojZ1VUEeWRIqLs5_0Tzg" name="pidValue" visibility="private" type="_RvomilVUEeWRIqLs5_0Tzg">
177 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojaVVUEeWRIqLs5_0Tzg"/>
178 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojaFVUEeWRIqLs5_0Tzg" value="*"/>
179 </ownedAttribute>
180 <ownedAttribute xmi:id="_RvojalVUEeWRIqLs5_0Tzg" name="pcatValue" visibility="private" type="_Rvomh1VUEeWRIqLs5_0Tzg">
181 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojbFVUEeWRIqLs5_0Tzg"/>
182 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoja1VUEeWRIqLs5_0Tzg" value="*"/>
183 </ownedAttribute>
184 </packagedElement>
185 <packagedElement xmi:type="uml:Class" xmi:id="_RvojbVVUEeWRIqLs5_0Tzg" name="IspConfig">
186 <ownedAttribute xmi:id="_RvojblVUEeWRIqLs5_0Tzg" name="ispsConfig" visibility="private" type="_RvojTFVUEeWRIqLs5_0Tzg" association="_RvomdFVUEeWRIqLs5_0Tzg">
187 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojcFVUEeWRIqLs5_0Tzg" value="1"/>
188 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvojb1VUEeWRIqLs5_0Tzg" value="1"/>
189 </ownedAttribute>
190 <ownedAttribute xmi:id="_RvojcVVUEeWRIqLs5_0Tzg" name="apid" visibility="private" type="_RvomjVVUEeWRIqLs5_0Tzg"/>
191 </packagedElement>
192 <packagedElement xmi:type="uml:Class" xmi:id="_RvojclVUEeWRIqLs5_0Tzg" name="Configuration">
193 <ownedAttribute xmi:id="_Rvojc1VUEeWRIqLs5_0Tzg" name="transmission" visibility="private" type="_RvolTVVUEeWRIqLs5_0Tzg" association="_RvomTFVUEeWRIqLs5_0Tzg">
194 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojdVVUEeWRIqLs5_0Tzg" value="1"/>
195 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojdFVUEeWRIqLs5_0Tzg" value="1"/>
196 </ownedAttribute>
197 <ownedAttribute xmi:id="_RvojdlVUEeWRIqLs5_0Tzg" name="maxCounterPerApidSuffixConfig" visibility="private" type="_RvojRVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomclVUEeWRIqLs5_0Tzg">
198 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojeFVUEeWRIqLs5_0Tzg" value="1"/>
199 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvojd1VUEeWRIqLs5_0Tzg" value="1"/>
200 </ownedAttribute>
201 <ownedAttribute xmi:id="_RvojeVVUEeWRIqLs5_0Tzg" name="validApidsConfig" visibility="private" type="_RvojN1VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomcVVUEeWRIqLs5_0Tzg">
202 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoje1VUEeWRIqLs5_0Tzg" value="1"/>
203 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojelVUEeWRIqLs5_0Tzg" value="1"/>
204 </ownedAttribute>
205 <ownedAttribute xmi:id="_RvojfFVUEeWRIqLs5_0Tzg" name="rtStpsConfig" visibility="private" type="_RvojPlVUEeWRIqLs5_0Tzg" aggregation="composite" association="_Rvomc1VUEeWRIqLs5_0Tzg">
206 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojflVUEeWRIqLs5_0Tzg" value="1"/>
207 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvojfVVUEeWRIqLs5_0Tzg" value="1"/>
208 </ownedAttribute>
209 </packagedElement>
210 <packagedElement xmi:type="uml:Class" xmi:id="_Rvojf1VUEeWRIqLs5_0Tzg" name="ApidSuffixAndMaxCounter">
211 <ownedAttribute xmi:id="_RvojgFVUEeWRIqLs5_0Tzg" name="apidSuffix" visibility="private" type="_Rvomh1VUEeWRIqLs5_0Tzg"/>
212 <ownedAttribute xmi:id="_RvojgVVUEeWRIqLs5_0Tzg" name="maxSscCounterValue" visibility="private">
213 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
214 </ownedAttribute>
215 <ownedAttribute xmi:id="_RvojglVUEeWRIqLs5_0Tzg" name="maxCounterPerApidSuffixConfig" visibility="private" type="_RvojRVVUEeWRIqLs5_0Tzg" association="_RvomdlVUEeWRIqLs5_0Tzg">
216 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojhFVUEeWRIqLs5_0Tzg" value="1"/>
217 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvojg1VUEeWRIqLs5_0Tzg" value="1"/>
218 </ownedAttribute>
219 </packagedElement>
220 <packagedElement xmi:type="uml:Class" xmi:id="_RvojhVVUEeWRIqLs5_0Tzg" name="ByteSequence">
221 <ownedAttribute xmi:id="_RvojhlVUEeWRIqLs5_0Tzg" name="byte" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg" isOrdered="true" isUnique="false">
222 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvojiFVUEeWRIqLs5_0Tzg" value="1"/>
223 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvojh1VUEeWRIqLs5_0Tzg" value="*"/>
224 </ownedAttribute>
225 </packagedElement>
226 <packagedElement xmi:type="uml:Class" xmi:id="_RvojiVVUEeWRIqLs5_0Tzg" name="BitSequence">
227 <ownedAttribute xmi:id="_RvojilVUEeWRIqLs5_0Tzg" name="numberOfBits" visibility="private">
228 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
229 </ownedAttribute>
230 <ownedAttribute xmi:id="_Rvoji1VUEeWRIqLs5_0Tzg" name="intValue" visibility="private">
231 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
232 </ownedAttribute>
233 </packagedElement>
234 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvojjFVUEeWRIqLs5_0Tzg" name="VirtualChannelType">
235 <ownedLiteral xmi:id="_RvojjVVUEeWRIqLs5_0Tzg" name="ACTIVE">
236 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojjlVUEeWRIqLs5_0Tzg">
237 <body>ACTIVE</body>
238 </specification>
239 </ownedLiteral>
240 <ownedLiteral xmi:id="_Rvojj1VUEeWRIqLs5_0Tzg" name="IDLE">
241 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojkFVUEeWRIqLs5_0Tzg">
242 <body>IDLE</body>
243 </specification>
244 </ownedLiteral>
245 </packagedElement>
246 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvojkVVUEeWRIqLs5_0Tzg" name="SubsystemTypes">
247 <ownedLiteral xmi:id="_RvojklVUEeWRIqLs5_0Tzg" name="Xsve_Nss"/>
248 <ownedLiteral xmi:id="_Rvojk1VUEeWRIqLs5_0Tzg" name="Xsve_Hdr"/>
249 <ownedLiteral xmi:id="_RvojlFVUEeWRIqLs5_0Tzg" name="Xsve_Ucdc"/>
250 </packagedElement>
251 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvojlVVUEeWRIqLs5_0Tzg" name="PacketType">
252 <ownedLiteral xmi:id="_RvojllVUEeWRIqLs5_0Tzg" name="ACTIVE">
253 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojl1VUEeWRIqLs5_0Tzg">
254 <body>ACTIVE</body>
255 </specification>
256 </ownedLiteral>
257 <ownedLiteral xmi:id="_RvojmFVUEeWRIqLs5_0Tzg" name="IDLE">
258 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojmVVUEeWRIqLs5_0Tzg">
259 <body>IDLE</body>
260 </specification>
261 </ownedLiteral>
262 <ownedLiteral xmi:id="_RvojmlVUEeWRIqLs5_0Tzg" name="UNDEFINED">
263 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojm1VUEeWRIqLs5_0Tzg">
264 <body>UNDEFINED</body>
265 </specification>
266 </ownedLiteral>
267 </packagedElement>
268 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvojnFVUEeWRIqLs5_0Tzg" name="IspPacketTypes">
269 <ownedLiteral xmi:id="_RvojnVVUEeWRIqLs5_0Tzg" name="S1_SAR">
270 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojnlVUEeWRIqLs5_0Tzg">
271 <language> </language>
272 <body>S1_SAR</body>
273 </specification>
274 </ownedLiteral>
275 <ownedLiteral xmi:id="_Rvojn1VUEeWRIqLs5_0Tzg" name="S1_GPSR">
276 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojoFVUEeWRIqLs5_0Tzg">
277 <language></language>
278 <body>S1_GPSR</body>
279 </specification>
280 </ownedLiteral>
281 <ownedLiteral xmi:id="_RvojoVVUEeWRIqLs5_0Tzg" name="S2_MSI">
282 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojolVUEeWRIqLs5_0Tzg">
283 <language> </language>
284 <body>S2_MSI</body>
285 </specification>
286 </ownedLiteral>
287 <ownedLiteral xmi:id="_Rvojo1VUEeWRIqLs5_0Tzg" name="S2_GPSR">
288 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojpFVUEeWRIqLs5_0Tzg">
289 <language></language>
290 <body>S2_GPSR</body>
291 </specification>
292 </ownedLiteral>
293 <ownedLiteral xmi:id="_RvojpVVUEeWRIqLs5_0Tzg" name="S2_STR">
294 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojplVUEeWRIqLs5_0Tzg">
295 <language></language>
296 <body>S2_STR</body>
297 </specification>
298 </ownedLiteral>
299 <ownedLiteral xmi:id="_Rvojp1VUEeWRIqLs5_0Tzg" name="S2_CSW">
300 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojqFVUEeWRIqLs5_0Tzg">
301 <language></language>
302 <body>S2_CSW</body>
303 </specification>
304 </ownedLiteral>
305 <ownedLiteral xmi:id="_RvojqVVUEeWRIqLs5_0Tzg" name="S3_OLCI">
306 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojqlVUEeWRIqLs5_0Tzg">
307 <language> </language>
308 <body>S3_OLCI</body>
309 </specification>
310 </ownedLiteral>
311 <ownedLiteral xmi:id="_Rvojq1VUEeWRIqLs5_0Tzg" name="S3_SLSTR">
312 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojrFVUEeWRIqLs5_0Tzg">
313 <language> </language>
314 <body>S3_SLSTR</body>
315 </specification>
316 </ownedLiteral>
317 <ownedLiteral xmi:id="_RvojrVVUEeWRIqLs5_0Tzg" name="S3_DORIS">
318 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojrlVUEeWRIqLs5_0Tzg">
319 <language> </language>
320 <body>S3_DORIS</body>
321 </specification>
322 </ownedLiteral>
323 <ownedLiteral xmi:id="_Rvojr1VUEeWRIqLs5_0Tzg" name="S3_NAVATT">
324 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojsFVUEeWRIqLs5_0Tzg">
325 <language></language>
326 <body>S3_NAVATT</body>
327 </specification>
328 </ownedLiteral>
329 <ownedLiteral xmi:id="_RvojsVVUEeWRIqLs5_0Tzg" name="S3_MWR">
330 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojslVUEeWRIqLs5_0Tzg">
331 <language> </language>
332 <body>S3_MWR</body>
333 </specification>
334 </ownedLiteral>
335 <ownedLiteral xmi:id="_Rvojs1VUEeWRIqLs5_0Tzg" name="S3_SRAL">
336 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojtFVUEeWRIqLs5_0Tzg">
337 <language> </language>
338 <body>S3_SRAL</body>
339 </specification>
340 </ownedLiteral>
341 <ownedLiteral xmi:id="_RvojtVVUEeWRIqLs5_0Tzg" name="S3_GPSR">
342 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojtlVUEeWRIqLs5_0Tzg">
343 <language></language>
344 <body>S3_GPSR</body>
345 </specification>
346 </ownedLiteral>
347 <ownedLiteral xmi:id="_Rvojt1VUEeWRIqLs5_0Tzg" name="UNDEFINED"/>
348 </packagedElement>
349 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvojuFVUEeWRIqLs5_0Tzg" name="FileClassTypes">
350 <ownedLiteral xmi:id="_RvojuVVUEeWRIqLs5_0Tzg" name="TEST">
351 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojulVUEeWRIqLs5_0Tzg">
352 <body>TEST</body>
353 </specification>
354 </ownedLiteral>
355 <ownedLiteral xmi:id="_Rvoju1VUEeWRIqLs5_0Tzg" name="OPER">
356 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojvFVUEeWRIqLs5_0Tzg">
357 <body>OPER</body>
358 </specification>
359 </ownedLiteral>
360 </packagedElement>
361 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvojvVVUEeWRIqLs5_0Tzg" name="ApidProfile">
362 <ownedLiteral xmi:id="_RvojvlVUEeWRIqLs5_0Tzg" name="IDLE_TM_PACKET">
363 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojv1VUEeWRIqLs5_0Tzg">
364 <language> </language>
365 <body>IDLE_TM_PACKET</body>
366 </specification>
367 </ownedLiteral>
368 <ownedLiteral xmi:id="_RvojwFVUEeWRIqLs5_0Tzg" name="HOUSEKEEPING">
369 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojwVVUEeWRIqLs5_0Tzg">
370 <body>HOUSEKEEPING</body>
371 </specification>
372 </ownedLiteral>
373 <ownedLiteral xmi:id="_RvojwlVUEeWRIqLs5_0Tzg" name="NON-REAL_TIME_HKTM">
374 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojw1VUEeWRIqLs5_0Tzg">
375 <body>NON-REAL_TIME_HKTM</body>
376 </specification>
377 </ownedLiteral>
378 </packagedElement>
379 <packagedElement xmi:type="uml:Class" xmi:id="_RvojxFVUEeWRIqLs5_0Tzg" name="VcduHeader">
380 <ownedComment xmi:id="_RvojxVVUEeWRIqLs5_0Tzg">
381 <body>Transfer Frame Primary Header / Virtual Channel Data Unit Header</body>
382 </ownedComment>
383 <ownedRule xmi:id="_RvojxlVUEeWRIqLs5_0Tzg" name="input_masterChannelIdTransferFrameVersionNumber" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
384 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojx1VUEeWRIqLs5_0Tzg">
385 <language>OCL</language>
386 <body>self.mcidTfVersionNumber.intValue = 1</body>
387 </specification>
388 </ownedRule>
389 <ownedRule xmi:id="_RvojyFVUEeWRIqLs5_0Tzg" name="input_masterChannelIdSpacecraftId" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
390 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojyVVUEeWRIqLs5_0Tzg">
391 <language>OCL</language>
392 <body>self.mcidSpacecraftId.intValue = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.spacecraftId</body>
393 </specification>
394 </ownedRule>
395 <ownedRule xmi:id="_RvojylVUEeWRIqLs5_0Tzg" name="input_virtualChannelIdInConfiguration" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
396 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojy1VUEeWRIqLs5_0Tzg">
397 <language>OCL</language>
398 <body>let rtStpsConfig : XsveRtStps = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps in &#xD;
399&#xD;
400rtStpsConfig.vcdusConfig.vcduConfig.vcid->exists(x | x = self.virtualChannelId) &#xD;
401or &#xD;
402self.virtualChannelId = rtStpsConfig.idleVcid&#xD;
403</body>
404 </specification>
405 </ownedRule>
406 <ownedRule xmi:id="_RvojzFVUEeWRIqLs5_0Tzg" name="input_signalingFieldReplayFlag" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
407 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvojzVVUEeWRIqLs5_0Tzg">
408 <language>OCL</language>
409 <body>self.signFieldReplayFlag.intValue = 0</body>
410 </specification>
411 </ownedRule>
412 <ownedRule xmi:id="_RvojzlVUEeWRIqLs5_0Tzg" name="input_signalingFieldReservedSpare" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
413 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvojz1VUEeWRIqLs5_0Tzg">
414 <language>OCL</language>
415 <body>self.signFieldRsvdSpare.intValue = 0</body>
416 </specification>
417 </ownedRule>
418 <ownedRule xmi:id="_Rvoj0FVUEeWRIqLs5_0Tzg" name="input_virtualChannelIdInRange" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
419 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvoj0VVUEeWRIqLs5_0Tzg">
420 <language>OCL</language>
421 <body>self.virtualChannelId.value.intValue >= 0 and self.virtualChannelId.value.intValue &lt;= 63</body>
422 </specification>
423 </ownedRule>
424 <ownedRule xmi:id="_Rvoj0lVUEeWRIqLs5_0Tzg" name="input_frameHeader" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
425 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvoj01VUEeWRIqLs5_0Tzg">
426 <language>OCL</language>
427 <body>self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectHeader &#xD;
428&#xD;
429implies &#xD;
430&#xD;
431self.rsCrcHasErrors = false</body>
432 </specification>
433 </ownedRule>
434 <ownedRule xmi:id="_Rvoj1FVUEeWRIqLs5_0Tzg" name="input_frameHeaderCorrectable" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
435 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvoj1VVUEeWRIqLs5_0Tzg">
436 <language>OCL</language>
437 <body>self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectHeader &#xD;
438&#xD;
439and &#xD;
440&#xD;
441self.rsCrcHasErrors = true &#xD;
442&#xD;
443implies &#xD;
444&#xD;
445self.rsCrcErrorsCorrectable = true</body>
446 </specification>
447 </ownedRule>
448 <ownedRule xmi:id="_Rvoj1lVUEeWRIqLs5_0Tzg" name="alloy_input_virtualChannelIdInConfiguration" constrainedElement="_RvojxFVUEeWRIqLs5_0Tzg">
449 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvoj11VUEeWRIqLs5_0Tzg">
450 <language>OCL</language>
451 <body>self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.vcdusConfig.vcduConfig.vcid->exists(x | x = self.virtualChannelId) &#xD;
452or &#xD;
453self.virtualChannelId = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid&#xD;
454</body>
455 </specification>
456 </ownedRule>
457 <ownedAttribute xmi:id="_Rvoj2FVUEeWRIqLs5_0Tzg" name="mcidTfVersionNumber" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
458 <eAnnotations xmi:id="_Rvoj2VVUEeWRIqLs5_0Tzg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
459 <ownedComment xmi:id="_Rvoj2lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj2FVUEeWRIqLs5_0Tzg">
460 <body>&lt;p>Master&amp;nbsp;Channel&amp;nbsp;ID&amp;nbsp;-&amp;nbsp;Transfer&amp;nbsp;Frame&amp;nbsp;Version&amp;nbsp;Number&lt;/p>&lt;p>2&amp;nbsp;bits&lt;/p></body>
461 </ownedComment>
462 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj3FVUEeWRIqLs5_0Tzg" value="1"/>
463 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj21VUEeWRIqLs5_0Tzg" value="1"/>
464 </ownedAttribute>
465 <ownedAttribute xmi:id="_Rvoj3VVUEeWRIqLs5_0Tzg" name="mcidSpacecraftId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
466 <ownedComment xmi:id="_Rvoj3lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj3VVUEeWRIqLs5_0Tzg">
467 <body>&lt;p>Master&amp;nbsp;Channel&amp;nbsp;ID&amp;nbsp;-&amp;nbsp;Spacecraft&amp;nbsp;ID&lt;/p>&lt;p>8&amp;nbsp;bits&lt;/p></body>
468 </ownedComment>
469 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj4FVUEeWRIqLs5_0Tzg" value="1"/>
470 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj31VUEeWRIqLs5_0Tzg" value="1"/>
471 </ownedAttribute>
472 <ownedAttribute xmi:id="_Rvoj4VVUEeWRIqLs5_0Tzg" name="virtualChannelId" visibility="private" type="_RvomoVVUEeWRIqLs5_0Tzg">
473 <ownedComment xmi:id="_Rvoj4lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj4VVUEeWRIqLs5_0Tzg">
474 <body>&lt;p>6&amp;nbsp;bits&lt;/p></body>
475 </ownedComment>
476 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj5FVUEeWRIqLs5_0Tzg" value="1"/>
477 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj41VUEeWRIqLs5_0Tzg" value="1"/>
478 </ownedAttribute>
479 <ownedAttribute xmi:id="_Rvoj5VVUEeWRIqLs5_0Tzg" name="virtualChannelFrameCount" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
480 <ownedComment xmi:id="_Rvoj5lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj5VVUEeWRIqLs5_0Tzg">
481 <body>&lt;p>3&amp;nbsp;bytes&lt;/p></body>
482 </ownedComment>
483 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj6FVUEeWRIqLs5_0Tzg" value="1"/>
484 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj51VUEeWRIqLs5_0Tzg" value="1"/>
485 </ownedAttribute>
486 <ownedAttribute xmi:id="_Rvoj6VVUEeWRIqLs5_0Tzg" name="signFieldReplayFlag" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
487 <ownedComment xmi:id="_Rvoj6lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj6VVUEeWRIqLs5_0Tzg">
488 <body>&lt;p>Signaling&amp;nbsp;Field&amp;nbsp;-&amp;nbsp;Replay&amp;nbsp;Flag&lt;/p>&lt;p>1&amp;nbsp;bit&lt;/p></body>
489 </ownedComment>
490 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj7FVUEeWRIqLs5_0Tzg" value="1"/>
491 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj61VUEeWRIqLs5_0Tzg" value="1"/>
492 </ownedAttribute>
493 <ownedAttribute xmi:id="_Rvoj7VVUEeWRIqLs5_0Tzg" name="signFieldRsvdSpare" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
494 <ownedComment xmi:id="_Rvoj7lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj7VVUEeWRIqLs5_0Tzg">
495 <body>&lt;p>Signaling&amp;nbsp;Field&amp;nbsp;-&amp;nbsp;Rsvd&amp;nbsp;Fd&lt;/p>&lt;p>7&amp;nbsp;bits&lt;/p></body>
496 </ownedComment>
497 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj8FVUEeWRIqLs5_0Tzg" value="1"/>
498 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj71VUEeWRIqLs5_0Tzg" value="1"/>
499 </ownedAttribute>
500 <ownedAttribute xmi:id="_Rvoj8VVUEeWRIqLs5_0Tzg" name="frameHeaderErrorControl" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
501 <ownedComment xmi:id="_Rvoj8lVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj8VVUEeWRIqLs5_0Tzg">
502 <body>&lt;p>2&amp;nbsp;bytes&lt;/p></body>
503 </ownedComment>
504 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj9FVUEeWRIqLs5_0Tzg" value="1"/>
505 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj81VUEeWRIqLs5_0Tzg" value="1"/>
506 </ownedAttribute>
507 <ownedAttribute xmi:id="_Rvoj9VVUEeWRIqLs5_0Tzg" name="vcdu" visibility="private" type="_RvokDVVUEeWRIqLs5_0Tzg" association="_RvomG1VUEeWRIqLs5_0Tzg">
508 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj91VUEeWRIqLs5_0Tzg" value="1"/>
509 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj9lVUEeWRIqLs5_0Tzg" value="1"/>
510 </ownedAttribute>
511 <ownedAttribute xmi:id="_Rvoj-FVUEeWRIqLs5_0Tzg" name="vcduHeaderAsString" visibility="private">
512 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
513 </ownedAttribute>
514 <ownedAttribute xmi:id="_Rvoj-VVUEeWRIqLs5_0Tzg" name="rsCrcHasErrors" visibility="private">
515 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
516 </ownedAttribute>
517 <ownedAttribute xmi:id="_Rvoj-lVUEeWRIqLs5_0Tzg" name="rsCrcErrorsCorrectable" visibility="private">
518 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
519 </ownedAttribute>
520 <ownedOperation xmi:id="_Rvoj-1VUEeWRIqLs5_0Tzg" name="calculateRsCrc" visibility="public">
521 <ownedComment xmi:id="_Rvoj_FVUEeWRIqLs5_0Tzg" annotatedElement="_Rvoj-1VUEeWRIqLs5_0Tzg">
522 <body>&lt;p>return&amp;nbsp;2&amp;nbsp;byte&amp;nbsp;array&lt;/p></body>
523 </ownedComment>
524 <ownedParameter xmi:id="_Rvoj_VVUEeWRIqLs5_0Tzg" name="Result" type="_RvojhVVUEeWRIqLs5_0Tzg" isUnique="false" direction="return" effect="update">
525 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoj_1VUEeWRIqLs5_0Tzg"/>
526 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoj_lVUEeWRIqLs5_0Tzg" value="1"/>
527 </ownedParameter>
528 <ownedParameter xmi:id="_RvokAFVUEeWRIqLs5_0Tzg" name="tfVersionNumber">
529 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
530 </ownedParameter>
531 <ownedParameter xmi:id="_RvokAVVUEeWRIqLs5_0Tzg" name="spaceCraftId">
532 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
533 </ownedParameter>
534 <ownedParameter xmi:id="_RvokAlVUEeWRIqLs5_0Tzg" name="virtualChannelId">
535 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
536 </ownedParameter>
537 <ownedParameter xmi:id="_RvokA1VUEeWRIqLs5_0Tzg" name="signFieldReplayFlag">
538 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
539 </ownedParameter>
540 <ownedParameter xmi:id="_RvokBFVUEeWRIqLs5_0Tzg" name="signFieldRsvdSpare">
541 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
542 </ownedParameter>
543 </ownedOperation>
544 <ownedOperation xmi:id="_RvokBVVUEeWRIqLs5_0Tzg" name="isUsingHeaderCorrection" bodyCondition="_RvokBlVUEeWRIqLs5_0Tzg" isQuery="true">
545 <ownedRule xmi:id="_RvokBlVUEeWRIqLs5_0Tzg" name="isUsingHeaderCorrection" constrainedElement="_RvokBVVUEeWRIqLs5_0Tzg">
546 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokB1VUEeWRIqLs5_0Tzg">
547 <language>OCL</language>
548 <body>self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectHeader</body>
549 </specification>
550 </ownedRule>
551 <ownedParameter xmi:id="_RvokCFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
552 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
553 </ownedParameter>
554 </ownedOperation>
555 <ownedOperation xmi:id="_RvokCVVUEeWRIqLs5_0Tzg" name="getVirtualChannelId" bodyCondition="_RvokClVUEeWRIqLs5_0Tzg" isQuery="true">
556 <ownedRule xmi:id="_RvokClVUEeWRIqLs5_0Tzg" name="getVirtualChannelId" constrainedElement="_RvokCVVUEeWRIqLs5_0Tzg">
557 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokC1VUEeWRIqLs5_0Tzg">
558 <language>OCL</language>
559 <body>self.virtualChannelId.value.intValue</body>
560 </specification>
561 </ownedRule>
562 <ownedParameter xmi:id="_RvokDFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
563 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
564 </ownedParameter>
565 </ownedOperation>
566 </packagedElement>
567 <packagedElement xmi:type="uml:Class" xmi:id="_RvokDVVUEeWRIqLs5_0Tzg" name="Vcdu">
568 <ownedComment xmi:id="_RvokDlVUEeWRIqLs5_0Tzg">
569 <body>Frame / Virtual Channel Data Unit</body>
570 </ownedComment>
571 <ownedRule xmi:id="_RvokD1VUEeWRIqLs5_0Tzg" name="input_idleFrame" constrainedElement="_RvokDVVUEeWRIqLs5_0Tzg">
572 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokEFVUEeWRIqLs5_0Tzg">
573 <language>OCL</language>
574 <body>self.vcduHeader.virtualChannelId = self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid&#xD;
575 &#xD;
576implies &#xD;
577&#xD;
578self.mpduHeader.oclIsTypeOf(MpduIdleHeader) &#xD;
579and &#xD;
580self.mpduHeader.oclAsType(MpduIdleHeader).value.byte->at(1).intValue = 7 &#xD;
581and &#xD;
582self.mpduHeader.oclAsType(MpduIdleHeader).value.byte->at(2).intValue = -2 &#xD;
583and &#xD;
584self.mpduPacketZone.oclIsTypeOf(MpduIdlePacketZone) &#xD;
585and &#xD;
586self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(1).intValue = -1 &#xD;
587and &#xD;
588self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(2).intValue = -3 &#xD;
589and &#xD;
590self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(3).intValue = 89 &#xD;
591and &#xD;
592self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(4).intValue = 123 &#xD;
593</body>
594 </specification>
595 </ownedRule>
596 <ownedRule xmi:id="_RvokEVVUEeWRIqLs5_0Tzg" name="alloy_IsActiveCadu" constrainedElement="_RvokDVVUEeWRIqLs5_0Tzg">
597 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokElVUEeWRIqLs5_0Tzg">
598 <language>OCL</language>
599 <body>(self.vcduHeader.virtualChannelId = self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid and self.mpduHeader.oclIsTypeOf(MpduIdleHeader) and self.mpduPacketZone.oclIsTypeOf(MpduIdlePacketZone)) &#xD;
600or&#xD;
601(self.vcduHeader.virtualChannelId &lt;> self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid and self.mpduHeader.oclIsTypeOf(MpduActiveHeader) and self.mpduPacketZone.oclIsTypeOf(MpduActivePacketZone))</body>
602 </specification>
603 </ownedRule>
604 <ownedAttribute xmi:id="_RvokE1VUEeWRIqLs5_0Tzg" name="mpduPacketZone" visibility="private" type="_Rvok4FVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomHFVUEeWRIqLs5_0Tzg">
605 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokFVVUEeWRIqLs5_0Tzg" value="1"/>
606 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokFFVUEeWRIqLs5_0Tzg" value="1"/>
607 </ownedAttribute>
608 <ownedAttribute xmi:id="_RvokFlVUEeWRIqLs5_0Tzg" name="vcduHeader" visibility="private" type="_RvojxFVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomG1VUEeWRIqLs5_0Tzg">
609 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokGFVUEeWRIqLs5_0Tzg" value="1"/>
610 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokF1VUEeWRIqLs5_0Tzg" value="1"/>
611 </ownedAttribute>
612 <ownedAttribute xmi:id="_RvokGVVUEeWRIqLs5_0Tzg" name="cadu" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomKlVUEeWRIqLs5_0Tzg">
613 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokG1VUEeWRIqLs5_0Tzg" value="1"/>
614 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokGlVUEeWRIqLs5_0Tzg" value="1"/>
615 </ownedAttribute>
616 <ownedAttribute xmi:id="_RvokHFVUEeWRIqLs5_0Tzg" name="mpduHeader" visibility="private" type="_Rvolm1VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomM1VUEeWRIqLs5_0Tzg">
617 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokHlVUEeWRIqLs5_0Tzg" value="1"/>
618 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokHVVUEeWRIqLs5_0Tzg" value="1"/>
619 </ownedAttribute>
620 <ownedOperation xmi:id="_RvokH1VUEeWRIqLs5_0Tzg" name="getVirtualChannelType" bodyCondition="_RvokIFVUEeWRIqLs5_0Tzg" isQuery="true">
621 <ownedRule xmi:id="_RvokIFVUEeWRIqLs5_0Tzg" name="getVirtualChannelType" constrainedElement="_RvokH1VUEeWRIqLs5_0Tzg">
622 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokIVVUEeWRIqLs5_0Tzg">
623 <language>OCL</language>
624 <body>if self.vcduHeader.virtualChannelId = self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid&#xD;
625 then VirtualChannelType::IDLE &#xD;
626else VirtualChannelType::ACTIVE &#xD;
627endif &#xD;
628</body>
629 </specification>
630 </ownedRule>
631 <ownedParameter xmi:id="_RvokIlVUEeWRIqLs5_0Tzg" name="Parameter1" type="_RvojjFVUEeWRIqLs5_0Tzg" direction="return"/>
632 </ownedOperation>
633 <ownedOperation xmi:id="_RvokI1VUEeWRIqLs5_0Tzg" name="getHeaderAsString" bodyCondition="_RvokJFVUEeWRIqLs5_0Tzg" isQuery="true">
634 <ownedRule xmi:id="_RvokJFVUEeWRIqLs5_0Tzg" name="getHeaderAsString" constrainedElement="_RvokI1VUEeWRIqLs5_0Tzg">
635 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokJVVUEeWRIqLs5_0Tzg">
636 <language>OCL</language>
637 <body>if self.cadu.channelData.caduHeaderIncludesMpdu then&#xD;
638 if self.getVirtualChannelType() = VirtualChannelType::IDLE then&#xD;
639 self.vcduHeader.vcduHeaderAsString.concat(self.mpduHeader.oclAsType(MpduIdleHeader).mpduIdleHeaderAsString)&#xD;
640 else&#xD;
641 self.vcduHeader.vcduHeaderAsString.concat(self.mpduHeader.oclAsType(MpduActiveHeader).mpduActiveHeaderAsString)&#xD;
642 endif&#xD;
643else&#xD;
644 self.vcduHeader.vcduHeaderAsString&#xD;
645endif&#xD;
646</body>
647 </specification>
648 </ownedRule>
649 <ownedParameter xmi:id="_RvokJlVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
650 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
651 </ownedParameter>
652 </ownedOperation>
653 </packagedElement>
654 <packagedElement xmi:type="uml:Class" xmi:id="_RvokJ1VUEeWRIqLs5_0Tzg" name="TmGpsrS1DataFieldHeader">
655 <ownedComment xmi:id="_RvokKFVUEeWRIqLs5_0Tzg">
656 <body>TM GPSR Data Field Header</body>
657 </ownedComment>
658 <generalization xmi:id="_RvokKVVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
659 <ownedAttribute xmi:id="_RvokKlVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
660 <ownedComment xmi:id="_RvokK1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokKlVUEeWRIqLs5_0Tzg">
661 <body>&lt;p>1&amp;nbsp;bit&lt;/p></body>
662 </ownedComment>
663 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokLVVUEeWRIqLs5_0Tzg" value="1"/>
664 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokLFVUEeWRIqLs5_0Tzg" value="1"/>
665 </ownedAttribute>
666 <ownedAttribute xmi:id="_RvokLlVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
667 <ownedComment xmi:id="_RvokL1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokLlVUEeWRIqLs5_0Tzg">
668 <body>&lt;p>3&amp;nbsp;bits&lt;/p></body>
669 </ownedComment>
670 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokMVVUEeWRIqLs5_0Tzg" value="1"/>
671 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokMFVUEeWRIqLs5_0Tzg" value="1"/>
672 </ownedAttribute>
673 <ownedAttribute xmi:id="_RvokMlVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
674 <ownedComment xmi:id="_RvokM1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokMlVUEeWRIqLs5_0Tzg">
675 <body>&lt;p>4&amp;nbsp;bits&lt;/p></body>
676 </ownedComment>
677 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokNVVUEeWRIqLs5_0Tzg" value="1"/>
678 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokNFVUEeWRIqLs5_0Tzg" value="1"/>
679 </ownedAttribute>
680 <ownedAttribute xmi:id="_RvokNlVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
681 <ownedComment xmi:id="_RvokN1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokNlVUEeWRIqLs5_0Tzg">
682 <body>&lt;p>8&amp;nbsp;bits&lt;/p></body>
683 </ownedComment>
684 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokOVVUEeWRIqLs5_0Tzg" value="1"/>
685 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokOFVUEeWRIqLs5_0Tzg" value="1"/>
686 </ownedAttribute>
687 <ownedAttribute xmi:id="_RvokOlVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
688 <ownedComment xmi:id="_RvokO1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokOlVUEeWRIqLs5_0Tzg">
689 <body>&lt;p>8&amp;nbsp;bits&lt;/p></body>
690 </ownedComment>
691 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokPVVUEeWRIqLs5_0Tzg" value="1"/>
692 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokPFVUEeWRIqLs5_0Tzg" value="1"/>
693 </ownedAttribute>
694 <ownedAttribute xmi:id="_RvokPlVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
695 <ownedComment xmi:id="_RvokP1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokPlVUEeWRIqLs5_0Tzg">
696 <body>&lt;p>Destination&amp;nbsp;ID&lt;/p>&lt;p>8&amp;nbsp;bits&lt;/p></body>
697 </ownedComment>
698 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokQVVUEeWRIqLs5_0Tzg" value="1"/>
699 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokQFVUEeWRIqLs5_0Tzg" value="1"/>
700 </ownedAttribute>
701 <ownedAttribute xmi:id="_RvokQlVUEeWRIqLs5_0Tzg" name="tfUndefinedA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
702 <ownedComment xmi:id="_RvokQ1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokQlVUEeWRIqLs5_0Tzg">
703 <body>&lt;p>8&amp;nbsp;bits&lt;/p></body>
704 </ownedComment>
705 </ownedAttribute>
706 <ownedAttribute xmi:id="_RvokRFVUEeWRIqLs5_0Tzg" name="tfSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
707 <ownedComment xmi:id="_RvokRVVUEeWRIqLs5_0Tzg" annotatedElement="_RvokRFVUEeWRIqLs5_0Tzg">
708 <body>&lt;p>4&amp;nbsp;bytes&lt;/p></body>
709 </ownedComment>
710 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokR1VUEeWRIqLs5_0Tzg" value="1"/>
711 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokRlVUEeWRIqLs5_0Tzg" value="1"/>
712 </ownedAttribute>
713 <ownedAttribute xmi:id="_RvokSFVUEeWRIqLs5_0Tzg" name="tfSubSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
714 <ownedComment xmi:id="_RvokSVVUEeWRIqLs5_0Tzg" annotatedElement="_RvokSFVUEeWRIqLs5_0Tzg">
715 <body>&lt;p>8&amp;nbsp;bits&lt;/p></body>
716 </ownedComment>
717 </ownedAttribute>
718 <ownedAttribute xmi:id="_RvokSlVUEeWRIqLs5_0Tzg" name="tfUndefinedB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
719 <ownedComment xmi:id="_RvokS1VUEeWRIqLs5_0Tzg" annotatedElement="_RvokSlVUEeWRIqLs5_0Tzg">
720 <body>&lt;p>2&amp;nbsp;bytes&lt;/p></body>
721 </ownedComment>
722 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokTVVUEeWRIqLs5_0Tzg" value="1"/>
723 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokTFVUEeWRIqLs5_0Tzg" value="1"/>
724 </ownedAttribute>
725 </packagedElement>
726 <packagedElement xmi:type="uml:Class" xmi:id="_RvokTlVUEeWRIqLs5_0Tzg" name="Sync">
727 <ownedComment xmi:id="_RvokT1VUEeWRIqLs5_0Tzg">
728 <body>Sync Marker</body>
729 </ownedComment>
730 <ownedRule xmi:id="_RvokUFVUEeWRIqLs5_0Tzg" name="input_syncMarker" constrainedElement="_RvokTlVUEeWRIqLs5_0Tzg">
731 <ownedComment xmi:id="_RvokUVVUEeWRIqLs5_0Tzg" annotatedElement="_RvokUFVUEeWRIqLs5_0Tzg">
732 <body>&lt;p>We&amp;nbsp;expect&amp;nbsp;that&amp;nbsp;the&amp;nbsp;4&amp;nbsp;byte&amp;nbsp;Sync&amp;nbsp;field&amp;nbsp;should&amp;nbsp;be&amp;nbsp;equal&amp;nbsp;to&amp;nbsp;0x1ACFFC1D&lt;/p>&lt;p>0x1A&amp;nbsp;=&amp;nbsp;26&amp;nbsp;&lt;/p>&lt;p>0xCF&amp;nbsp;=&amp;nbsp;207&lt;/p>&lt;p>0xFC&amp;nbsp;=&amp;nbsp;252&lt;/p>&lt;p>0x1D&amp;nbsp;=&amp;nbsp;29&lt;/p></body>
733 </ownedComment>
734 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokUlVUEeWRIqLs5_0Tzg">
735 <language>OCL</language>
736 <body>self.value.byte->at(1).intValue = 26 and &#xD;
737self.value.byte->at(2).intValue = -49 and &#xD;
738self.value.byte->at(3).intValue = -4 and &#xD;
739self.value.byte->at(4).intValue = 29</body>
740 </specification>
741 </ownedRule>
742 <ownedAttribute xmi:id="_RvokU1VUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
743 <ownedComment xmi:id="_RvokVFVUEeWRIqLs5_0Tzg" annotatedElement="_RvokU1VUEeWRIqLs5_0Tzg">
744 <body>&lt;p>4&amp;nbsp;bytes&lt;/p></body>
745 </ownedComment>
746 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokVlVUEeWRIqLs5_0Tzg" value="1"/>
747 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokVVVUEeWRIqLs5_0Tzg" value="1"/>
748 </ownedAttribute>
749 <ownedAttribute xmi:id="_RvokV1VUEeWRIqLs5_0Tzg" name="cadu" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomHVVUEeWRIqLs5_0Tzg">
750 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokWVVUEeWRIqLs5_0Tzg" value="1"/>
751 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokWFVUEeWRIqLs5_0Tzg" value="1"/>
752 </ownedAttribute>
753 </packagedElement>
754 <packagedElement xmi:type="uml:Class" xmi:id="_RvokWlVUEeWRIqLs5_0Tzg" name="SarS1DataFieldHeader">
755 <ownedComment xmi:id="_RvokW1VUEeWRIqLs5_0Tzg">
756 <body>SAR Data Field Header</body>
757 </ownedComment>
758 <generalization xmi:id="_RvokXFVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
759 <ownedAttribute xmi:id="_RvokXVVUEeWRIqLs5_0Tzg" name="tcCoarseTime" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
760 <ownedComment xmi:id="_RvokXlVUEeWRIqLs5_0Tzg" annotatedElement="_RvokXVVUEeWRIqLs5_0Tzg">
761 <body>&lt;p>32&amp;nbsp;bits&lt;/p></body>
762 </ownedComment>
763 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokYFVUEeWRIqLs5_0Tzg" value="1"/>
764 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokX1VUEeWRIqLs5_0Tzg" value="1"/>
765 </ownedAttribute>
766 <ownedAttribute xmi:id="_RvokYVVUEeWRIqLs5_0Tzg" name="tcFineTime" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
767 <ownedComment xmi:id="_RvokYlVUEeWRIqLs5_0Tzg" annotatedElement="_RvokYVVUEeWRIqLs5_0Tzg">
768 <body>&lt;p>16&amp;nbsp;bits&lt;/p></body>
769 </ownedComment>
770 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokZFVUEeWRIqLs5_0Tzg" value="1"/>
771 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokY1VUEeWRIqLs5_0Tzg" value="1"/>
772 </ownedAttribute>
773 <ownedAttribute xmi:id="_RvokZVVUEeWRIqLs5_0Tzg" name="ancillaryData" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
774 <ownedComment xmi:id="_RvokZlVUEeWRIqLs5_0Tzg" annotatedElement="_RvokZVVUEeWRIqLs5_0Tzg">
775 <body>&lt;p>56  bytes&lt;/p></body>
776 </ownedComment>
777 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokaFVUEeWRIqLs5_0Tzg" value="1"/>
778 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokZ1VUEeWRIqLs5_0Tzg" value="1"/>
779 </ownedAttribute>
780 </packagedElement>
781 <packagedElement xmi:type="uml:Class" xmi:id="_RvokaVVUEeWRIqLs5_0Tzg" name="ReedSolomonCoding">
782 <ownedComment xmi:id="_RvokalVUEeWRIqLs5_0Tzg">
783 <body>Reed Solomon check symbols</body>
784 </ownedComment>
785 <ownedRule xmi:id="_Rvoka1VUEeWRIqLs5_0Tzg" name="input_reedSolomonCheckSymbols" constrainedElement="_RvolZVVUEeWRIqLs5_0Tzg">
786 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokbFVUEeWRIqLs5_0Tzg">
787 <language>OCL</language>
788 <body>self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectFrame = true &#xD;
789 &#xD;
790implies &#xD;
791 &#xD;
792self.rsActualCheckSymbols.byte = self.rsCalculatedCheckSymbols.byte&#xD;
793</body>
794 </specification>
795 </ownedRule>
796 <ownedAttribute xmi:id="_RvokbVVUEeWRIqLs5_0Tzg" name="rsActualCheckSymbols" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
797 <ownedComment xmi:id="_RvokblVUEeWRIqLs5_0Tzg">
798 <body>128 bytes</body>
799 </ownedComment>
800 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokcFVUEeWRIqLs5_0Tzg" value="1"/>
801 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvokb1VUEeWRIqLs5_0Tzg" value="1"/>
802 </ownedAttribute>
803 <ownedAttribute xmi:id="_RvokcVVUEeWRIqLs5_0Tzg" name="rsCalculatedCheckSymbols" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
804 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvokc1VUEeWRIqLs5_0Tzg" value="1"/>
805 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokclVUEeWRIqLs5_0Tzg" value="1"/>
806 </ownedAttribute>
807 <ownedAttribute xmi:id="_RvokdFVUEeWRIqLs5_0Tzg" name="cadu" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomKVVUEeWRIqLs5_0Tzg">
808 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokdlVUEeWRIqLs5_0Tzg" value="1"/>
809 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokdVVUEeWRIqLs5_0Tzg" value="1"/>
810 </ownedAttribute>
811 <ownedOperation xmi:id="_Rvokd1VUEeWRIqLs5_0Tzg" name="calculateRsCoding" visibility="public">
812 <ownedComment xmi:id="_RvokeFVUEeWRIqLs5_0Tzg">
813 <body>return a byte array of 128 bytes</body>
814 </ownedComment>
815 <ownedParameter xmi:id="_RvokeVVUEeWRIqLs5_0Tzg" name="Result" isUnique="false" direction="return" effect="update">
816 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
817 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoke1VUEeWRIqLs5_0Tzg"/>
818 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokelVUEeWRIqLs5_0Tzg" value="*"/>
819 </ownedParameter>
820 <ownedParameter xmi:id="_RvokfFVUEeWRIqLs5_0Tzg" name="vcduBytes" isUnique="false" effect="read">
821 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
822 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokflVUEeWRIqLs5_0Tzg"/>
823 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokfVVUEeWRIqLs5_0Tzg" value="*"/>
824 </ownedParameter>
825 </ownedOperation>
826 </packagedElement>
827 <packagedElement xmi:type="uml:Class" xmi:id="_Rvokf1VUEeWRIqLs5_0Tzg" name="PacketSecondaryHeader" isAbstract="true">
828 <ownedComment xmi:id="_RvokgFVUEeWRIqLs5_0Tzg">
829 <body>Packet Secondary Header / Data Field Header</body>
830 </ownedComment>
831 <ownedRule xmi:id="_RvokgVVUEeWRIqLs5_0Tzg" name="alloy_isUsingCorrectMissionIspInfo" constrainedElement="_Rvokf1VUEeWRIqLs5_0Tzg">
832 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokglVUEeWRIqLs5_0Tzg">
833 <language>OCL</language>
834 <body>self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | &#xD;
835 self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName->exists(y: MissionName |&#xD;
836 y = x.missionName&#xD;
837 )&#xD;
838)&#xD;
839</body>
840 </specification>
841 </ownedRule>
842 <ownedRule xmi:id="_Rvokg1VUEeWRIqLs5_0Tzg" name="alloy_isSecondaryHeaderMatchingIspInfo" constrainedElement="_Rvokf1VUEeWRIqLs5_0Tzg">
843 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokhFVUEeWRIqLs5_0Tzg">
844 <language>OCL</language>
845 <body>self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | &#xD;
846 (&#xD;
847 self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName->exists(y: MissionName | &#xD;
848 y = x.missionName) &#xD;
849 ) &#xD;
850 and &#xD;
851 ( &#xD;
852 ( &#xD;
853 (x.missionName = MissionName::Sentinel1 or x.missionName = MissionName::Sentinel2) &#xD;
854 and &#xD;
855 x.apidValue->exists(y : Apid | &#xD;
856 y.apidPid = self.activePacketDataField.isp.packetPrimaryHeader.apidPid &#xD;
857 and &#xD;
858 y.apidPcat = self.activePacketDataField.isp.packetPrimaryHeader.apidPcat&#xD;
859 ) &#xD;
860 )&#xD;
861 or &#xD;
862 ( &#xD;
863 x.missionName = MissionName::Sentinel3&#xD;
864 and &#xD;
865 x.pidValue->exists(pid : ApidPid | pid = self.activePacketDataField.isp.packetPrimaryHeader.apidPid) &#xD;
866 and &#xD;
867 x.pcatValue->exists(pcat : ApidPcat | pcat = self.activePacketDataField.isp.packetPrimaryHeader.apidPcat)&#xD;
868 )&#xD;
869 ) &#xD;
870 and&#xD;
871 (&#xD;
872 ( (x.packetType = IspPacketTypes::S1_SAR) and self.oclIsTypeOf(SarS1DataFieldHeader) ) or &#xD;
873 ( (x.packetType = IspPacketTypes::S1_GPSR) and self.oclIsTypeOf(TmGpsrS1DataFieldHeader) ) or &#xD;
874 ( (x.packetType = IspPacketTypes::S2_CSW) and self.oclIsTypeOf(TmCswS2DataFieldHeader) ) or &#xD;
875 ( (x.packetType = IspPacketTypes::S2_GPSR) and self.oclIsTypeOf(TmGpsrS2DataFieldHeader) ) or &#xD;
876 ( (x.packetType = IspPacketTypes::S2_MSI) and self.oclIsTypeOf(MsiS2DataFieldHeader) ) or &#xD;
877 ( (x.packetType = IspPacketTypes::S2_STR) and self.oclIsTypeOf(TmStrS2DataFieldHeader) ) or &#xD;
878 ( (x.packetType = IspPacketTypes::S3_OLCI) and self.oclIsTypeOf(OlciS3DataFieldHeader) ) or &#xD;
879 ( (x.packetType = IspPacketTypes::S3_DORIS) and self.oclIsTypeOf(DorisS3DateFieldHeader) ) or &#xD;
880 ( (x.packetType = IspPacketTypes::S3_MWR) and self.oclIsTypeOf(MwrS3DataFieldHeader) ) or &#xD;
881 ( (x.packetType = IspPacketTypes::S3_GPSR) and self.oclIsTypeOf(TmGpsrS3DataFieldHeader) ) or &#xD;
882 ( (x.packetType = IspPacketTypes::S3_SLSTR) and self.oclIsTypeOf(SlstrS3DataFieldHeader) ) or &#xD;
883 ( (x.packetType = IspPacketTypes::S3_NAVATT) and self.oclIsTypeOf(TmNavattS3DataFieldHeader) ) or &#xD;
884 ( (x.packetType = IspPacketTypes::S3_SRAL) and self.oclIsTypeOf(SralS3DataFieldHeader) ) &#xD;
885 ) &#xD;
886) </body>
887 </specification>
888 </ownedRule>
889 <ownedRule xmi:id="_RvokhVVUEeWRIqLs5_0Tzg" name="alloy_isSecondaryHeaderMatchingPacketType" constrainedElement="_Rvokf1VUEeWRIqLs5_0Tzg">
890 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokhlVUEeWRIqLs5_0Tzg">
891 <language>OCL</language>
892 <body>self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | &#xD;
893 ((x.packetType = IspPacketTypes::S1_SAR) and self.oclIsTypeOf(SarS1DataFieldHeader)) or &#xD;
894 ((x.packetType = IspPacketTypes::S1_GPSR) and self.oclIsTypeOf(TmGpsrS1DataFieldHeader)) or&#xD;
895&#xD;
896 ((x.packetType = IspPacketTypes::S2_CSW) and self.oclIsTypeOf(TmCswS2DataFieldHeader)) or&#xD;
897 ((x.packetType = IspPacketTypes::S2_GPSR) and self.oclIsTypeOf(TmGpsrS2DataFieldHeader)) or&#xD;
898 ((x.packetType = IspPacketTypes::S2_MSI) and self.oclIsTypeOf(MsiS2DataFieldHeader)) or &#xD;
899 ((x.packetType = IspPacketTypes::S2_STR) and self.oclIsTypeOf(TmStrS2DataFieldHeader)) or&#xD;
900&#xD;
901 ((x.packetType = IspPacketTypes::S3_OLCI) and self.oclIsTypeOf(OlciS3DataFieldHeader)) or&#xD;
902 ((x.packetType = IspPacketTypes::S3_DORIS) and self.oclIsTypeOf(DorisS3DateFieldHeader)) or&#xD;
903 ((x.packetType = IspPacketTypes::S3_MWR) and self.oclIsTypeOf(MwrS3DataFieldHeader)) or &#xD;
904 ((x.packetType = IspPacketTypes::S3_GPSR) and self.oclIsTypeOf(TmGpsrS3DataFieldHeader)) or&#xD;
905 ((x.packetType = IspPacketTypes::S3_SLSTR) and self.oclIsTypeOf(SlstrS3DataFieldHeader)) or&#xD;
906 ((x.packetType = IspPacketTypes::S3_NAVATT) and self.oclIsTypeOf(TmNavattS3DataFieldHeader)) or&#xD;
907 ((x.packetType = IspPacketTypes::S3_SRAL) and self.oclIsTypeOf(SralS3DataFieldHeader))&#xD;
908)&#xD;
909</body>
910 </specification>
911 </ownedRule>
912 <ownedAttribute xmi:id="_Rvokh1VUEeWRIqLs5_0Tzg" name="activePacketDataField" visibility="private" type="_RvomNFVUEeWRIqLs5_0Tzg" association="_RvomSVVUEeWRIqLs5_0Tzg">
913 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokiVVUEeWRIqLs5_0Tzg" value="1"/>
914 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokiFVUEeWRIqLs5_0Tzg" value="1"/>
915 </ownedAttribute>
916 </packagedElement>
917 <packagedElement xmi:type="uml:Class" xmi:id="_RvokilVUEeWRIqLs5_0Tzg" name="PacketPrimaryHeader">
918 <ownedComment xmi:id="_Rvoki1VUEeWRIqLs5_0Tzg">
919 <body>Packet Primary Header</body>
920 </ownedComment>
921 <ownedRule xmi:id="_RvokjFVUEeWRIqLs5_0Tzg" name="input_packetIdentificationApid" constrainedElement="_Rvok_VVUEeWRIqLs5_0Tzg">
922 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokjVVUEeWRIqLs5_0Tzg">
923 <language>OCL</language>
924 <body>let rtstpsConfig : XsveRtStps = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps in &#xD;
925&#xD;
926rtstpsConfig.vcdusConfig.vcduConfig->select(y | y.vcid = self.isp.mpduActivePacketZone->first().vcdu.vcduHeader.virtualChannelId).ispsConfig.ispConfig.apid->exists(x | &#xD;
927 x.apidPid = self.apidPid and x.apidPcat = self.apidPcat) &#xD;
928or &#xD;
929self.apidPid = rtstpsConfig.idleApid.apidPid and self.apidPcat = rtstpsConfig.idleApid.apidPcat&#xD;
930</body>
931 </specification>
932 </ownedRule>
933 <ownedRule xmi:id="_RvokjlVUEeWRIqLs5_0Tzg" name="input_packetVersionNumber" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
934 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvokj1VUEeWRIqLs5_0Tzg">
935 <language>OCL</language>
936 <body>self.versionNumber.intValue = 0</body>
937 </specification>
938 </ownedRule>
939 <ownedRule xmi:id="_RvokkFVUEeWRIqLs5_0Tzg" name="input_packetIdentificationType" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
940 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokkVVUEeWRIqLs5_0Tzg">
941 <language>OCL</language>
942 <body>self.type.intValue = 0</body>
943 </specification>
944 </ownedRule>
945 <ownedRule xmi:id="_RvokklVUEeWRIqLs5_0Tzg" name="input_packetActiveIdentificationShf" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
946 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvokk1VUEeWRIqLs5_0Tzg">
947 <language>OCL</language>
948 <body>let transmissionData : TransmissionData = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData in &#xD;
949&#xD;
950self.apidPid &lt;> transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid&#xD;
951or&#xD;
952self.apidPcat &lt;> transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat&#xD;
953&#xD;
954implies &#xD;
955&#xD;
956self.shf.intValue = 1&#xD;
957</body>
958 </specification>
959 </ownedRule>
960 <ownedRule xmi:id="_RvoklFVUEeWRIqLs5_0Tzg" name="input_packetSequenceControlGroupingFlags" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
961 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvoklVVUEeWRIqLs5_0Tzg">
962 <language>OCL</language>
963 <body>self.sequenceFlags.intValue = 3</body>
964 </specification>
965 </ownedRule>
966 <ownedRule xmi:id="_RvokllVUEeWRIqLs5_0Tzg" name="input_packetDataLength" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
967 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvokl1VUEeWRIqLs5_0Tzg">
968 <language>OCL</language>
969 <body>self.isp.isTypeOfPacket(IspPacketTypes::S1_SAR)&#xD;
970&#xD;
971implies&#xD;
972&#xD;
973(self.dataLength.intValue + 6 +1).mod(4) = 0 &#xD;
974</body>
975 </specification>
976 </ownedRule>
977 <ownedRule xmi:id="_RvokmFVUEeWRIqLs5_0Tzg" name="input_packetIdleIdentificationShf" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
978 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokmVVUEeWRIqLs5_0Tzg">
979 <language>OCL</language>
980 <body>let transmissionData : TransmissionData = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData in &#xD;
981&#xD;
982self.apidPid = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid&#xD;
983and&#xD;
984self.apidPcat = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat&#xD;
985 &#xD;
986implies &#xD;
987&#xD;
988self.shf.intValue = 0&#xD;
989</body>
990 </specification>
991 </ownedRule>
992 <ownedRule xmi:id="_RvokmlVUEeWRIqLs5_0Tzg" name="input_validPacketType" constrainedElement="_RvokilVUEeWRIqLs5_0Tzg">
993 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvokm1VUEeWRIqLs5_0Tzg">
994 <language>OCL</language>
995 <body>let transmissionData : TransmissionData = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData, &#xD;
996 ispInfoSet : Set(IspInfo) = transmissionData.configuration.validApidsConfig.ispInfo &#xD;
997in &#xD;
998&#xD;
999self.apidPid = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid&#xD;
1000and&#xD;
1001self.apidPcat = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat&#xD;
1002&#xD;
1003or &#xD;
1004&#xD;
1005if transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName = 'S3A' then&#xD;
1006 (ispInfoSet.apidValue.apidPid->exists(x : ApidPid | x = self.apidPid) and &#xD;
1007 ispInfoSet.apidValue.apidPcat->exists(x : ApidPcat | x = self.apidPcat))&#xD;
1008else&#xD;
1009 ispInfoSet.apidValue->exists(x : Apid | x.apidPid = self.apidPid and x.apidPcat = self.apidPcat) &#xD;
1010endif &#xD;
1011</body>
1012 </specification>
1013 </ownedRule>
1014 <ownedAttribute xmi:id="_RvoknFVUEeWRIqLs5_0Tzg" name="versionNumber" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1015 <ownedComment xmi:id="_RvoknVVUEeWRIqLs5_0Tzg" annotatedElement="_RvoknFVUEeWRIqLs5_0Tzg">
1016 <body>&lt;p>3&amp;nbsp;bits&lt;/p></body>
1017 </ownedComment>
1018 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvokn1VUEeWRIqLs5_0Tzg" value="1"/>
1019 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvoknlVUEeWRIqLs5_0Tzg" value="1"/>
1020 </ownedAttribute>
1021 <ownedAttribute xmi:id="_RvokoFVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1022 <ownedComment xmi:id="_RvokoVVUEeWRIqLs5_0Tzg" annotatedElement="_RvokoFVUEeWRIqLs5_0Tzg">
1023 <body>&lt;p>1&amp;nbsp;bit&lt;/p></body>
1024 </ownedComment>
1025 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoko1VUEeWRIqLs5_0Tzg" value="1"/>
1026 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokolVUEeWRIqLs5_0Tzg" value="1"/>
1027 </ownedAttribute>
1028 <ownedAttribute xmi:id="_RvokpFVUEeWRIqLs5_0Tzg" name="shf" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1029 <ownedComment xmi:id="_RvokpVVUEeWRIqLs5_0Tzg" annotatedElement="_RvokpFVUEeWRIqLs5_0Tzg">
1030 <body>&lt;p>Secondary&amp;nbsp;Header&amp;nbsp;Flag&lt;/p>&lt;p>1&amp;nbsp;bit&lt;/p></body>
1031 </ownedComment>
1032 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvokp1VUEeWRIqLs5_0Tzg" value="1"/>
1033 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokplVUEeWRIqLs5_0Tzg" value="1"/>
1034 </ownedAttribute>
1035 <ownedAttribute xmi:id="_RvokqFVUEeWRIqLs5_0Tzg" name="apidPid" visibility="private" type="_RvomilVUEeWRIqLs5_0Tzg">
1036 <ownedComment xmi:id="_RvokqVVUEeWRIqLs5_0Tzg" annotatedElement="_RvokqFVUEeWRIqLs5_0Tzg">
1037 <body>&lt;p>7&amp;nbsp;bits&lt;/p></body>
1038 </ownedComment>
1039 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvokq1VUEeWRIqLs5_0Tzg" value="1"/>
1040 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokqlVUEeWRIqLs5_0Tzg" value="1"/>
1041 </ownedAttribute>
1042 <ownedAttribute xmi:id="_RvokrFVUEeWRIqLs5_0Tzg" name="apidPcat" visibility="private" type="_Rvomh1VUEeWRIqLs5_0Tzg"/>
1043 <ownedAttribute xmi:id="_RvokrVVUEeWRIqLs5_0Tzg" name="sequenceFlags" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1044 <ownedComment xmi:id="_RvokrlVUEeWRIqLs5_0Tzg" annotatedElement="_RvokrVVUEeWRIqLs5_0Tzg">
1045 <body>&lt;p>2&amp;nbsp;bits&lt;/p></body>
1046 </ownedComment>
1047 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvoksFVUEeWRIqLs5_0Tzg" value="1"/>
1048 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvokr1VUEeWRIqLs5_0Tzg" value="1"/>
1049 </ownedAttribute>
1050 <ownedAttribute xmi:id="_RvoksVVUEeWRIqLs5_0Tzg" name="sequenceCount" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1051 <ownedComment xmi:id="_RvokslVUEeWRIqLs5_0Tzg" annotatedElement="_RvoksVVUEeWRIqLs5_0Tzg">
1052 <body>&lt;p>14&amp;nbsp;bits&lt;/p></body>
1053 </ownedComment>
1054 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvoktFVUEeWRIqLs5_0Tzg" value="1"/>
1055 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvoks1VUEeWRIqLs5_0Tzg" value="1"/>
1056 </ownedAttribute>
1057 <ownedAttribute xmi:id="_RvoktVVUEeWRIqLs5_0Tzg" name="dataLength" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1058 <ownedComment xmi:id="_RvoktlVUEeWRIqLs5_0Tzg" annotatedElement="_RvoktVVUEeWRIqLs5_0Tzg">
1059 <body>&lt;p>2&amp;nbsp;bytes&lt;/p></body>
1060 </ownedComment>
1061 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokuFVUEeWRIqLs5_0Tzg" value="1"/>
1062 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvokt1VUEeWRIqLs5_0Tzg" value="1"/>
1063 </ownedAttribute>
1064 <ownedAttribute xmi:id="_RvokuVVUEeWRIqLs5_0Tzg" name="isp" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" association="_RvomH1VUEeWRIqLs5_0Tzg">
1065 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvoku1VUEeWRIqLs5_0Tzg" value="1"/>
1066 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokulVUEeWRIqLs5_0Tzg" value="1"/>
1067 </ownedAttribute>
1068 <ownedAttribute xmi:id="_RvokvFVUEeWRIqLs5_0Tzg" name="headerAsString" visibility="private">
1069 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1070 </ownedAttribute>
1071 </packagedElement>
1072 <packagedElement xmi:type="uml:Class" xmi:id="_RvokvVVUEeWRIqLs5_0Tzg" name="PacketErrorControl">
1073 <ownedComment xmi:id="_RvokvlVUEeWRIqLs5_0Tzg">
1074 <body>Packet Error Control (CRC)</body>
1075 </ownedComment>
1076 <ownedRule xmi:id="_Rvokv1VUEeWRIqLs5_0Tzg" name="input_packetErrorControl" constrainedElement="_Rvok_VVUEeWRIqLs5_0Tzg">
1077 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvokwFVUEeWRIqLs5_0Tzg">
1078 <language>OCL</language>
1079 <body>let rtstpsConfig : XsveRtStps = self.activePacketDataField.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps in &#xD;
1080&#xD;
1081rtstpsConfig.checkCrc &#xD;
1082and (rtstpsConfig.missionName &lt;> 'S1A' &#xD;
1083 or (self.activePacketDataField.isp.packetPrimaryHeader.apidPid.value.intValue*16 &#xD;
1084 + self.activePacketDataField.isp.packetPrimaryHeader.apidPcat.value.intValue) &lt;> 1052) &#xD;
1085&#xD;
1086implies &#xD;
1087&#xD;
1088self.actualValue.byte = self.calculatedValue.byte&#xD;
1089</body>
1090 </specification>
1091 </ownedRule>
1092 <ownedAttribute xmi:id="_RvokwVVUEeWRIqLs5_0Tzg" name="actualValue" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
1093 <ownedComment xmi:id="_RvokwlVUEeWRIqLs5_0Tzg" annotatedElement="_RvokwVVUEeWRIqLs5_0Tzg">
1094 <body>&lt;p>2  bytes&lt;/p></body>
1095 </ownedComment>
1096 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokxFVUEeWRIqLs5_0Tzg" value="1"/>
1097 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvokw1VUEeWRIqLs5_0Tzg" value="1"/>
1098 </ownedAttribute>
1099 <ownedAttribute xmi:id="_RvokxVVUEeWRIqLs5_0Tzg" name="calculatedValue" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
1100 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvokx1VUEeWRIqLs5_0Tzg" value="1"/>
1101 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokxlVUEeWRIqLs5_0Tzg" value="1"/>
1102 </ownedAttribute>
1103 <ownedAttribute xmi:id="_RvokyFVUEeWRIqLs5_0Tzg" name="activePacketDataField" visibility="private" type="_RvomNFVUEeWRIqLs5_0Tzg" association="_RvomS1VUEeWRIqLs5_0Tzg">
1104 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokylVUEeWRIqLs5_0Tzg" value="1"/>
1105 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokyVVUEeWRIqLs5_0Tzg" value="1"/>
1106 </ownedAttribute>
1107 <ownedOperation xmi:id="_Rvoky1VUEeWRIqLs5_0Tzg" name="calculateCrc" visibility="public">
1108 <ownedParameter xmi:id="_RvokzFVUEeWRIqLs5_0Tzg" name="Result" isUnique="false" direction="return" effect="update">
1109 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
1110 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvokzlVUEeWRIqLs5_0Tzg"/>
1111 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvokzVVUEeWRIqLs5_0Tzg" value="1"/>
1112 </ownedParameter>
1113 <ownedParameter xmi:id="_Rvokz1VUEeWRIqLs5_0Tzg" name="dataFieldHeader" isUnique="false" effect="read">
1114 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
1115 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok0VVUEeWRIqLs5_0Tzg"/>
1116 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok0FVUEeWRIqLs5_0Tzg" value="*"/>
1117 </ownedParameter>
1118 <ownedParameter xmi:id="_Rvok0lVUEeWRIqLs5_0Tzg" name="dataFieldHeaderLength" isUnique="false" effect="read">
1119 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1120 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok1FVUEeWRIqLs5_0Tzg"/>
1121 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok01VUEeWRIqLs5_0Tzg" value="1"/>
1122 </ownedParameter>
1123 <ownedParameter xmi:id="_Rvok1VVUEeWRIqLs5_0Tzg" name="data" isUnique="false" effect="read">
1124 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
1125 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok11VUEeWRIqLs5_0Tzg"/>
1126 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok1lVUEeWRIqLs5_0Tzg" value="*"/>
1127 </ownedParameter>
1128 <ownedParameter xmi:id="_Rvok2FVUEeWRIqLs5_0Tzg" name="dataLength" isUnique="false" effect="read">
1129 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1130 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok2lVUEeWRIqLs5_0Tzg"/>
1131 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok2VVUEeWRIqLs5_0Tzg" value="1"/>
1132 </ownedParameter>
1133 </ownedOperation>
1134 </packagedElement>
1135 <packagedElement xmi:type="uml:Class" xmi:id="_Rvok21VUEeWRIqLs5_0Tzg" name="PacketDataField" isAbstract="true">
1136 <ownedComment xmi:id="_Rvok3FVUEeWRIqLs5_0Tzg">
1137 <body>Packet Data Field</body>
1138 </ownedComment>
1139 <ownedAttribute xmi:id="_Rvok3VVUEeWRIqLs5_0Tzg" name="isp" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" association="_RvomHlVUEeWRIqLs5_0Tzg">
1140 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok31VUEeWRIqLs5_0Tzg" value="1"/>
1141 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok3lVUEeWRIqLs5_0Tzg" value="1"/>
1142 </ownedAttribute>
1143 </packagedElement>
1144 <packagedElement xmi:type="uml:Class" xmi:id="_Rvok4FVUEeWRIqLs5_0Tzg" name="MpduPacketZone" isAbstract="true">
1145 <ownedComment xmi:id="_Rvok4VVUEeWRIqLs5_0Tzg">
1146 <body>Multiplexing Protocol Data Unit (M_PDU) Packet Zone</body>
1147 </ownedComment>
1148 <ownedAttribute xmi:id="_Rvok4lVUEeWRIqLs5_0Tzg" name="vcdu" visibility="private" type="_RvokDVVUEeWRIqLs5_0Tzg" association="_RvomHFVUEeWRIqLs5_0Tzg">
1149 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok5FVUEeWRIqLs5_0Tzg" value="1"/>
1150 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok41VUEeWRIqLs5_0Tzg" value="1"/>
1151 </ownedAttribute>
1152 </packagedElement>
1153 <packagedElement xmi:type="uml:Class" xmi:id="_Rvok5VVUEeWRIqLs5_0Tzg" name="MpduIdleHeader">
1154 <ownedComment xmi:id="_Rvok5lVUEeWRIqLs5_0Tzg">
1155 <body>MPDU Idle Header</body>
1156 </ownedComment>
1157 <generalization xmi:id="_Rvok51VUEeWRIqLs5_0Tzg" general="_Rvolm1VUEeWRIqLs5_0Tzg"/>
1158 <ownedAttribute xmi:id="_Rvok6FVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
1159 <ownedComment xmi:id="_Rvok6VVUEeWRIqLs5_0Tzg" annotatedElement="_Rvok6FVUEeWRIqLs5_0Tzg">
1160 <body>&lt;p>2&amp;nbsp;bytes&lt;/p></body>
1161 </ownedComment>
1162 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok61VUEeWRIqLs5_0Tzg" value="1"/>
1163 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok6lVUEeWRIqLs5_0Tzg" value="1"/>
1164 </ownedAttribute>
1165 <ownedAttribute xmi:id="_Rvok7FVUEeWRIqLs5_0Tzg" name="mpduIdleHeaderAsString" visibility="private">
1166 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1167 </ownedAttribute>
1168 </packagedElement>
1169 <packagedElement xmi:type="uml:Class" xmi:id="_Rvok7VVUEeWRIqLs5_0Tzg" name="MpduActiveHeader">
1170 <ownedComment xmi:id="_Rvok7lVUEeWRIqLs5_0Tzg">
1171 <body>Multiplexing Protocol Data Unit (M_PDU) Header</body>
1172 </ownedComment>
1173 <ownedRule xmi:id="_Rvok71VUEeWRIqLs5_0Tzg" name="input_reservedSpare" constrainedElement="_Rvok7VVUEeWRIqLs5_0Tzg">
1174 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvok8FVUEeWRIqLs5_0Tzg">
1175 <language>OCL</language>
1176 <body>self.rsvdSpare.intValue = 0</body>
1177 </specification>
1178 </ownedRule>
1179 <ownedRule xmi:id="_Rvok8VVUEeWRIqLs5_0Tzg" name="input_firstHeaderPointer" constrainedElement="_Rvok7VVUEeWRIqLs5_0Tzg">
1180 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvok8lVUEeWRIqLs5_0Tzg">
1181 <language>OCL</language>
1182 <body>self.firstHeaderPointer.intValue = 2047 &#xD;
1183or &#xD;
1184self.firstHeaderPointer.intValue &lt; 1902</body>
1185 </specification>
1186 </ownedRule>
1187 <generalization xmi:id="_Rvok81VUEeWRIqLs5_0Tzg" general="_Rvolm1VUEeWRIqLs5_0Tzg"/>
1188 <ownedAttribute xmi:id="_Rvok9FVUEeWRIqLs5_0Tzg" name="rsvdSpare" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1189 <ownedComment xmi:id="_Rvok9VVUEeWRIqLs5_0Tzg" annotatedElement="_Rvok9FVUEeWRIqLs5_0Tzg">
1190 <body>&lt;p>5&amp;nbsp;bits&lt;/p></body>
1191 </ownedComment>
1192 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok91VUEeWRIqLs5_0Tzg" value="1"/>
1193 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok9lVUEeWRIqLs5_0Tzg" value="1"/>
1194 </ownedAttribute>
1195 <ownedAttribute xmi:id="_Rvok-FVUEeWRIqLs5_0Tzg" name="firstHeaderPointer" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg">
1196 <ownedComment xmi:id="_Rvok-VVUEeWRIqLs5_0Tzg" annotatedElement="_Rvok-FVUEeWRIqLs5_0Tzg">
1197 <body>&lt;p>11&amp;nbsp;bits&lt;/p></body>
1198 </ownedComment>
1199 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvok-1VUEeWRIqLs5_0Tzg" value="1"/>
1200 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvok-lVUEeWRIqLs5_0Tzg" value="1"/>
1201 </ownedAttribute>
1202 <ownedAttribute xmi:id="_Rvok_FVUEeWRIqLs5_0Tzg" name="mpduActiveHeaderAsString" visibility="private">
1203 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1204 </ownedAttribute>
1205 </packagedElement>
1206 <packagedElement xmi:type="uml:Class" xmi:id="_Rvok_VVUEeWRIqLs5_0Tzg" name="Isp">
1207 <ownedComment xmi:id="_Rvok_lVUEeWRIqLs5_0Tzg">
1208 <body>Instrument Source Packet</body>
1209 </ownedComment>
1210 <ownedRule xmi:id="_Rvok_1VUEeWRIqLs5_0Tzg" name="input_packetSequenceControlSourceSequenceCountMax" constrainedElement="_Rvok_VVUEeWRIqLs5_0Tzg">
1211 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolAFVUEeWRIqLs5_0Tzg">
1212 <language>OCL</language>
1213 <body>let &#xD;
1214 config : Configuration = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration, &#xD;
1215 counterWrapValue : Set(ApidSuffixAndMaxCounter) = config.maxCounterPerApidSuffixConfig.apidSuffixAndMaxCounter->select(x : ApidSuffixAndMaxCounter | x.apidSuffix = self.packetPrimaryHeader.apidPcat) &#xD;
1216in &#xD;
1217&#xD;
1218config.rtStpsConfig.xsveRtStps.missionName = 'S2A' &#xD;
1219and &#xD;
1220self.packetDataField.oclIsTypeOf(IdlePacketDataField) = false &#xD;
1221 &#xD;
1222implies &#xD;
1223&#xD;
1224counterWrapValue->size() = 1 &#xD;
1225&#xD;
1226and &#xD;
1227&#xD;
1228self.packetPrimaryHeader.sequenceCount.intValue &lt;= counterWrapValue->asOrderedSet()->first().maxSscCounterValue&#xD;
1229</body>
1230 </specification>
1231 </ownedRule>
1232 <ownedRule xmi:id="_RvolAVVUEeWRIqLs5_0Tzg" name="input_idleIspMarker" constrainedElement="_Rvok_VVUEeWRIqLs5_0Tzg">
1233 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolAlVUEeWRIqLs5_0Tzg">
1234 <language>OCL</language>
1235 <body>let transmissionData : TransmissionData = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData, &#xD;
1236rtStpsConfig : XsveRtStps = transmissionData.configuration.rtStpsConfig.xsveRtStps &#xD;
1237in &#xD;
1238&#xD;
1239self.packetPrimaryHeader->notEmpty() &#xD;
1240and &#xD;
1241self.packetPrimaryHeader.apidPid = rtStpsConfig.idleApid.apidPid and self.packetPrimaryHeader.apidPcat = rtStpsConfig.idleApid.apidPcat &#xD;
1242&#xD;
1243and&#xD;
1244&#xD;
1245self.packetDataField.oclIsTypeOf(IdlePacketDataField) &#xD;
1246&#xD;
1247and &#xD;
1248&#xD;
1249self.packetPrimaryHeader.versionNumber.intValue = 0 &#xD;
1250and self.packetPrimaryHeader.type.intValue = 0 &#xD;
1251and self.packetPrimaryHeader.shf.intValue = 0 &#xD;
1252and self.packetPrimaryHeader.sequenceFlags.intValue = 3 &#xD;
1253and self.packetPrimaryHeader.sequenceCount.intValue = 0 &#xD;
1254and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(1).intValue = 85&#xD;
1255and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(2).intValue = 85&#xD;
1256and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(3).intValue = 85&#xD;
1257and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(4).intValue = 85&#xD;
1258</body>
1259 </specification>
1260 </ownedRule>
1261 <ownedRule xmi:id="_RvolA1VUEeWRIqLs5_0Tzg" name="input_packetSequenceControlSourceSequenceCount" constrainedElement="_RvolTVVUEeWRIqLs5_0Tzg">
1262 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolBFVUEeWRIqLs5_0Tzg">
1263 <language>OCL</language>
1264 <body>let &#xD;
1265 ispSequenceCount : Integer = self.packetPrimaryHeader.sequenceCount.intValue, &#xD;
1266 prevIsp : Isp = self.prevOnChannelOfSameApid, &#xD;
1267 prevSequenceCount : Integer = prevIsp.packetPrimaryHeader.sequenceCount.intValue, &#xD;
1268 config : Configuration = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration, &#xD;
1269 apidCountWrapList : Set(ApidSuffixAndMaxCounter) = config.maxCounterPerApidSuffixConfig.apidSuffixAndMaxCounter, &#xD;
1270 maxSscCounterValue : Integer = apidCountWrapList->select(i : ApidSuffixAndMaxCounter | i.apidSuffix = prevIsp.packetPrimaryHeader.apidPcat)->asOrderedSet()->first().maxSscCounterValue &#xD;
1271in &#xD;
1272&#xD;
1273not self.prevOnChannelOfSameApid->isEmpty() &#xD;
1274and &#xD;
1275(self.packetPrimaryHeader.apidPid &lt;> config.rtStpsConfig.xsveRtStps.idleApid.apidPid or self.packetPrimaryHeader.apidPcat &lt;>config.rtStpsConfig.xsveRtStps.idleApid.apidPcat)&#xD;
1276&#xD;
1277implies &#xD;
1278&#xD;
1279if config.rtStpsConfig.xsveRtStps.missionName = 'S2A' &#xD;
1280 then &#xD;
1281 if prevSequenceCount &lt; maxSscCounterValue &#xD;
1282 then ispSequenceCount = prevSequenceCount + 1 &#xD;
1283 else prevSequenceCount = maxSscCounterValue and ispSequenceCount = 0 &#xD;
1284 endif &#xD;
1285else &#xD;
1286 if prevSequenceCount &lt; 16383 &#xD;
1287 then ispSequenceCount = prevSequenceCount + 1 &#xD;
1288 else prevSequenceCount = 16383 and ispSequenceCount = 0 &#xD;
1289 endif &#xD;
1290endif &#xD;
1291</body>
1292 </specification>
1293 </ownedRule>
1294 <ownedRule xmi:id="_RvolBVVUEeWRIqLs5_0Tzg" name="input_timeCodeCoarseTimeAndFineTime" constrainedElement="_RvokWlVUEeWRIqLs5_0Tzg">
1295 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolBlVUEeWRIqLs5_0Tzg">
1296 <language>OCL</language>
1297 <body>let &#xD;
1298 prevIsp : Isp = self.prevOnChannelOfSameApid &#xD;
1299in &#xD;
1300&#xD;
1301prevIsp.packetDataField.oclIsTypeOf(ActivePacketDataField) = true and &#xD;
1302self.packetDataField.oclIsTypeOf(ActivePacketDataField) = true and &#xD;
1303prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclIsTypeOf(SarS1DataFieldHeader) = true and &#xD;
1304self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclIsTypeOf(SarS1DataFieldHeader) = true &#xD;
1305&#xD;
1306implies &#xD;
1307&#xD;
1308prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue &lt; &#xD;
1309 self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue &#xD;
1310or &#xD;
1311( &#xD;
1312 prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue = &#xD;
1313 self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue &#xD;
1314 and &#xD;
1315 prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcFineTime.intValue &lt;= &#xD;
1316 self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcFineTime.intValue &#xD;
1317) &#xD;
1318</body>
1319 </specification>
1320 </ownedRule>
1321 <ownedRule xmi:id="_RvolB1VUEeWRIqLs5_0Tzg" name="input_packetAssembly" constrainedElement="_RvolTVVUEeWRIqLs5_0Tzg">
1322 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolCFVUEeWRIqLs5_0Tzg">
1323 <language>OCL</language>
1324 <body>if self.lastPacket = false then&#xD;
1325 self.isPacketComplete() = true&#xD;
1326else&#xD;
1327 true&#xD;
1328endif</body>
1329 </specification>
1330 </ownedRule>
1331 <ownedRule xmi:id="_RvolCVVUEeWRIqLs5_0Tzg" name="alloy_IsActivePacket" constrainedElement="_Rvok_VVUEeWRIqLs5_0Tzg">
1332 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolClVUEeWRIqLs5_0Tzg">
1333 <language>OCL</language>
1334 <body>(self.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid->exists(x : Apid | x.apidPid = self.packetPrimaryHeader.apidPid and x.apidPcat = self.packetPrimaryHeader.apidPcat) and self.packetDataField.oclIsTypeOf(IdlePacketDataField))&#xD;
1335or&#xD;
1336(self.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid->exists(x : Apid | x.apidPid &lt;> self.packetPrimaryHeader.apidPid or x.apidPcat &lt;> self.packetPrimaryHeader.apidPcat) and self.packetDataField.oclIsTypeOf(ActivePacketDataField))&#xD;
1337</body>
1338 </specification>
1339 </ownedRule>
1340 <ownedAttribute xmi:id="_RvolC1VUEeWRIqLs5_0Tzg" name="packetPrimaryHeader" visibility="private" type="_RvokilVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomH1VUEeWRIqLs5_0Tzg">
1341 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolDVVUEeWRIqLs5_0Tzg"/>
1342 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolDFVUEeWRIqLs5_0Tzg" value="1"/>
1343 </ownedAttribute>
1344 <ownedAttribute xmi:id="_RvolDlVUEeWRIqLs5_0Tzg" name="packetDataField" visibility="private" type="_Rvok21VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomHlVUEeWRIqLs5_0Tzg">
1345 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolEFVUEeWRIqLs5_0Tzg" value="1"/>
1346 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolD1VUEeWRIqLs5_0Tzg" value="1"/>
1347 </ownedAttribute>
1348 <ownedAttribute xmi:id="_RvolEVVUEeWRIqLs5_0Tzg" name="mpduActivePacketZone" visibility="private" type="_Rvolh1VUEeWRIqLs5_0Tzg" isOrdered="true" association="_RvomIFVUEeWRIqLs5_0Tzg">
1349 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolE1VUEeWRIqLs5_0Tzg" value="1"/>
1350 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolElVUEeWRIqLs5_0Tzg" value="*"/>
1351 </ownedAttribute>
1352 <ownedAttribute xmi:id="_RvolFFVUEeWRIqLs5_0Tzg" name="prevOnChannel" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" association="_RvomIVVUEeWRIqLs5_0Tzg">
1353 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolFlVUEeWRIqLs5_0Tzg"/>
1354 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolFVVUEeWRIqLs5_0Tzg" value="1"/>
1355 </ownedAttribute>
1356 <ownedAttribute xmi:id="_RvolF1VUEeWRIqLs5_0Tzg" name="prevOnChannelOfSameApid" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" association="_RvomJVVUEeWRIqLs5_0Tzg">
1357 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolGVVUEeWRIqLs5_0Tzg"/>
1358 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolGFVUEeWRIqLs5_0Tzg" value="1"/>
1359 </ownedAttribute>
1360 <ownedAttribute xmi:id="_RvolGlVUEeWRIqLs5_0Tzg" name="completedLoading" visibility="private">
1361 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1362 </ownedAttribute>
1363 <ownedAttribute xmi:id="_RvolG1VUEeWRIqLs5_0Tzg" name="firstSpanStartIndex" visibility="private">
1364 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1365 </ownedAttribute>
1366 <ownedAttribute xmi:id="_RvolHFVUEeWRIqLs5_0Tzg" name="firstSpanLength" visibility="private">
1367 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1368 </ownedAttribute>
1369 <ownedAttribute xmi:id="_RvolHVVUEeWRIqLs5_0Tzg" name="lastPacket" visibility="private">
1370 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1371 </ownedAttribute>
1372 <ownedAttribute xmi:id="_RvolHlVUEeWRIqLs5_0Tzg" name="loadedFromStart" visibility="private">
1373 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1374 </ownedAttribute>
1375 <ownedAttribute xmi:id="_RvolH1VUEeWRIqLs5_0Tzg" name="channelDataPerVcid" visibility="private" type="_RvomYVVUEeWRIqLs5_0Tzg" association="_RvomalVUEeWRIqLs5_0Tzg">
1376 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolIVVUEeWRIqLs5_0Tzg" value="1"/>
1377 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolIFVUEeWRIqLs5_0Tzg" value="1"/>
1378 </ownedAttribute>
1379 <ownedAttribute xmi:id="_RvolIlVUEeWRIqLs5_0Tzg" name="packetTime" visibility="private">
1380 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
1381 </ownedAttribute>
1382 <ownedOperation xmi:id="_RvolI1VUEeWRIqLs5_0Tzg" name="getPacketType" bodyCondition="_RvolJFVUEeWRIqLs5_0Tzg" isQuery="true">
1383 <ownedRule xmi:id="_RvolJFVUEeWRIqLs5_0Tzg" name="getPacketType" constrainedElement="_RvolI1VUEeWRIqLs5_0Tzg">
1384 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolJVVUEeWRIqLs5_0Tzg">
1385 <language>OCL</language>
1386 <body>let transmissionData : TransmissionData = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData, &#xD;
1387 rtStpsConfig : XsveRtStps = transmissionData.configuration.rtStpsConfig.xsveRtStps&#xD;
1388in &#xD;
1389&#xD;
1390if self.packetPrimaryHeader->notEmpty() and (self.completedLoading = true)&#xD;
1391 then&#xD;
1392 if (self.packetPrimaryHeader.apidPid = rtStpsConfig.idleApid.apidPid) and (self.packetPrimaryHeader.apidPcat = rtStpsConfig.idleApid.apidPcat)&#xD;
1393 then PacketType::IDLE&#xD;
1394 else PacketType::ACTIVE&#xD;
1395 endif&#xD;
1396else PacketType::UNDEFINED&#xD;
1397endif&#xD;
1398</body>
1399 </specification>
1400 </ownedRule>
1401 <ownedParameter xmi:id="_RvolJlVUEeWRIqLs5_0Tzg" name="Parameter1" type="_RvojlVVUEeWRIqLs5_0Tzg" direction="return"/>
1402 </ownedOperation>
1403 <ownedOperation xmi:id="_RvolJ1VUEeWRIqLs5_0Tzg" name="getSpanNumber" bodyCondition="_RvolKFVUEeWRIqLs5_0Tzg" isQuery="true">
1404 <ownedRule xmi:id="_RvolKFVUEeWRIqLs5_0Tzg" name="getSpanNumber" constrainedElement="_RvolJ1VUEeWRIqLs5_0Tzg">
1405 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolKVVUEeWRIqLs5_0Tzg">
1406 <language>OCL</language>
1407 <body>self.mpduActivePacketZone->indexOf(packetZone)</body>
1408 </specification>
1409 </ownedRule>
1410 <ownedParameter xmi:id="_RvolKlVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1411 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1412 </ownedParameter>
1413 <ownedParameter xmi:id="_RvolK1VUEeWRIqLs5_0Tzg" name="packetZone" type="_Rvolh1VUEeWRIqLs5_0Tzg"/>
1414 </ownedOperation>
1415 <ownedOperation xmi:id="_RvolLFVUEeWRIqLs5_0Tzg" name="hasPrimaryHeader" bodyCondition="_RvolLVVUEeWRIqLs5_0Tzg" isQuery="true">
1416 <ownedRule xmi:id="_RvolLVVUEeWRIqLs5_0Tzg" name="hasPrimaryHeader" constrainedElement="_RvolLFVUEeWRIqLs5_0Tzg">
1417 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolLlVUEeWRIqLs5_0Tzg">
1418 <language>OCL</language>
1419 <body>self.loadedFromStart and ((self.firstSpanLength >= 6) or self.completedLoading)</body>
1420 </specification>
1421 </ownedRule>
1422 <ownedParameter xmi:id="_RvolL1VUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1423 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1424 </ownedParameter>
1425 </ownedOperation>
1426 <ownedOperation xmi:id="_RvolMFVUEeWRIqLs5_0Tzg" name="isPacketComplete" bodyCondition="_RvolMVVUEeWRIqLs5_0Tzg" isQuery="true">
1427 <ownedRule xmi:id="_RvolMVVUEeWRIqLs5_0Tzg" name="isPacketComplete" constrainedElement="_RvolMFVUEeWRIqLs5_0Tzg">
1428 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolMlVUEeWRIqLs5_0Tzg">
1429 <language>OCL</language>
1430 <body>self.packetPrimaryHeader->size() > 0 and (self.packetDataField.oclIsTypeOf(IdlePacketDataField) or self.packetDataField.oclIsTypeOf(ActivePacketDataField))&#xD;
1431</body>
1432 </specification>
1433 </ownedRule>
1434 <ownedParameter xmi:id="_RvolM1VUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1435 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1436 </ownedParameter>
1437 </ownedOperation>
1438 <ownedOperation xmi:id="_RvolNFVUEeWRIqLs5_0Tzg" name="isTypeOfPacket" bodyCondition="_RvolNVVUEeWRIqLs5_0Tzg" isQuery="true">
1439 <ownedRule xmi:id="_RvolNVVUEeWRIqLs5_0Tzg" name="isTypeOfPacket" constrainedElement="_RvolNFVUEeWRIqLs5_0Tzg">
1440 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolNlVUEeWRIqLs5_0Tzg">
1441 <language>OCL</language>
1442 <body>self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | &#xD;
1443 x.packetType = packetType and &#xD;
1444 x.missionName = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName and &#xD;
1445 x.apidValue->exists(y : Apid | y.apidPid = self.packetPrimaryHeader.apidPid and y.apidPcat = self.packetPrimaryHeader.apidPcat) &#xD;
1446)&#xD;
1447</body>
1448 </specification>
1449 </ownedRule>
1450 <ownedParameter xmi:id="_RvolN1VUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1451 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1452 </ownedParameter>
1453 <ownedParameter xmi:id="_RvolOFVUEeWRIqLs5_0Tzg" name="packetType" type="_RvojnFVUEeWRIqLs5_0Tzg"/>
1454 </ownedOperation>
1455 <ownedOperation xmi:id="_RvolOVVUEeWRIqLs5_0Tzg" name="getFirstSpanStartIndex" bodyCondition="_RvolOlVUEeWRIqLs5_0Tzg" isQuery="true">
1456 <ownedRule xmi:id="_RvolOlVUEeWRIqLs5_0Tzg" name="getFirstSpanStartIndex" constrainedElement="_RvolOVVUEeWRIqLs5_0Tzg">
1457 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolO1VUEeWRIqLs5_0Tzg">
1458 <language>OCL</language>
1459 <body>self.firstSpanStartIndex</body>
1460 </specification>
1461 </ownedRule>
1462 <ownedParameter xmi:id="_RvolPFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1463 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1464 </ownedParameter>
1465 </ownedOperation>
1466 <ownedOperation xmi:id="_RvolPVVUEeWRIqLs5_0Tzg" name="getPacketLength" bodyCondition="_RvolPlVUEeWRIqLs5_0Tzg" isQuery="true">
1467 <ownedRule xmi:id="_RvolPlVUEeWRIqLs5_0Tzg" name="getPacketLength" constrainedElement="_RvolPVVUEeWRIqLs5_0Tzg">
1468 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolP1VUEeWRIqLs5_0Tzg">
1469 <language>OCL</language>
1470 <body>if self.packetPrimaryHeader->size() > 0 then&#xD;
1471 self.packetPrimaryHeader.dataLength.intValue&#xD;
1472else -1&#xD;
1473endif&#xD;
1474</body>
1475 </specification>
1476 </ownedRule>
1477 <ownedParameter xmi:id="_RvolQFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1478 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1479 </ownedParameter>
1480 </ownedOperation>
1481 <ownedOperation xmi:id="_RvolQVVUEeWRIqLs5_0Tzg" name="getApidValue" bodyCondition="_RvolQlVUEeWRIqLs5_0Tzg" isQuery="true">
1482 <ownedRule xmi:id="_RvolQlVUEeWRIqLs5_0Tzg" name="getApidValue" constrainedElement="_RvolQVVUEeWRIqLs5_0Tzg">
1483 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolQ1VUEeWRIqLs5_0Tzg">
1484 <language>OCL</language>
1485 <body>if self.packetPrimaryHeader->size() >0 then&#xD;
1486 self.packetPrimaryHeader.apidPid.value.intValue * 16 + self.packetPrimaryHeader.apidPcat.value.intValue&#xD;
1487else&#xD;
1488 -1&#xD;
1489endif&#xD;
1490</body>
1491 </specification>
1492 </ownedRule>
1493 <ownedParameter xmi:id="_RvolRFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1494 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1495 </ownedParameter>
1496 </ownedOperation>
1497 <ownedOperation xmi:id="_RvolRVVUEeWRIqLs5_0Tzg" name="getIdleApidValue" bodyCondition="_RvolRlVUEeWRIqLs5_0Tzg" isQuery="true">
1498 <ownedRule xmi:id="_RvolRlVUEeWRIqLs5_0Tzg" name="getIdleApidValue" constrainedElement="_RvolRVVUEeWRIqLs5_0Tzg">
1499 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolR1VUEeWRIqLs5_0Tzg">
1500 <language>OCL</language>
1501 <body>self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid.value.intValue*16 &#xD;
1502+ self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat.value.intValue</body>
1503 </specification>
1504 </ownedRule>
1505 <ownedParameter xmi:id="_RvolSFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1506 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1507 </ownedParameter>
1508 </ownedOperation>
1509 <ownedOperation xmi:id="_RvolSVVUEeWRIqLs5_0Tzg" name="getStartCaduIndex" bodyCondition="_RvolSlVUEeWRIqLs5_0Tzg" isQuery="true">
1510 <ownedRule xmi:id="_RvolSlVUEeWRIqLs5_0Tzg" name="getStartCaduIndex" constrainedElement="_RvolSVVUEeWRIqLs5_0Tzg">
1511 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolS1VUEeWRIqLs5_0Tzg">
1512 <language>OCL</language>
1513 <body>self.mpduActivePacketZone->first().vcdu.cadu.index</body>
1514 </specification>
1515 </ownedRule>
1516 <ownedParameter xmi:id="_RvolTFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1517 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1518 </ownedParameter>
1519 </ownedOperation>
1520 </packagedElement>
1521 <packagedElement xmi:type="uml:Class" xmi:id="_RvolTVVUEeWRIqLs5_0Tzg" name="TransmissionData">
1522 <ownedComment xmi:id="_RvolTlVUEeWRIqLs5_0Tzg">
1523 <body>X-Band System Validation Equipment (XSVE) System Input File</body>
1524 </ownedComment>
1525 <ownedRule xmi:id="_RvolT1VUEeWRIqLs5_0Tzg" name="input_channelDataExists" constrainedElement="_RvolTVVUEeWRIqLs5_0Tzg">
1526 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolUFVUEeWRIqLs5_0Tzg">
1527 <language>OCL</language>
1528 <body>self.channelData->size() > 0</body>
1529 </specification>
1530 </ownedRule>
1531 <ownedAttribute xmi:id="_RvolUVVUEeWRIqLs5_0Tzg" name="configuration" visibility="private" type="_RvojclVUEeWRIqLs5_0Tzg" association="_RvomTFVUEeWRIqLs5_0Tzg">
1532 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolU1VUEeWRIqLs5_0Tzg" value="1"/>
1533 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolUlVUEeWRIqLs5_0Tzg" value="1"/>
1534 </ownedAttribute>
1535 <ownedAttribute xmi:id="_RvolVFVUEeWRIqLs5_0Tzg" name="channelData" visibility="private" type="_RvomTVVUEeWRIqLs5_0Tzg" isOrdered="true" aggregation="composite" association="_RvomXVVUEeWRIqLs5_0Tzg">
1536 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolVlVUEeWRIqLs5_0Tzg"/>
1537 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolVVVUEeWRIqLs5_0Tzg" value="*"/>
1538 </ownedAttribute>
1539 </packagedElement>
1540 <packagedElement xmi:type="uml:Class" xmi:id="_RvolV1VUEeWRIqLs5_0Tzg" name="MpduIdlePacketZone">
1541 <generalization xmi:id="_RvolWFVUEeWRIqLs5_0Tzg" general="_Rvok4FVUEeWRIqLs5_0Tzg"/>
1542 <ownedAttribute xmi:id="_RvolWVVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
1543 <ownedComment xmi:id="_RvolWlVUEeWRIqLs5_0Tzg" annotatedElement="_RvolWVVUEeWRIqLs5_0Tzg">
1544 <body>&lt;p>1902&amp;nbsp;&amp;nbsp;bytes&lt;/p></body>
1545 </ownedComment>
1546 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolXFVUEeWRIqLs5_0Tzg" value="1"/>
1547 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolW1VUEeWRIqLs5_0Tzg" value="1"/>
1548 </ownedAttribute>
1549 </packagedElement>
1550 <packagedElement xmi:type="uml:Class" xmi:id="_RvolXVVUEeWRIqLs5_0Tzg" name="PacketData">
1551 <ownedAttribute xmi:id="_RvolXlVUEeWRIqLs5_0Tzg" name="dataArray" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
1552 <ownedComment xmi:id="_RvolX1VUEeWRIqLs5_0Tzg" annotatedElement="_RvolXlVUEeWRIqLs5_0Tzg">
1553 <body>&lt;p>variable&amp;nbsp;length&amp;nbsp;byte&amp;nbsp;array&lt;/p></body>
1554 </ownedComment>
1555 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolYVVUEeWRIqLs5_0Tzg" value="1"/>
1556 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolYFVUEeWRIqLs5_0Tzg" value="1"/>
1557 </ownedAttribute>
1558 <ownedAttribute xmi:id="_RvolYlVUEeWRIqLs5_0Tzg" name="activePacketDataField" visibility="private" type="_RvomNFVUEeWRIqLs5_0Tzg" association="_RvomSlVUEeWRIqLs5_0Tzg">
1559 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolZFVUEeWRIqLs5_0Tzg" value="1"/>
1560 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolY1VUEeWRIqLs5_0Tzg" value="1"/>
1561 </ownedAttribute>
1562 </packagedElement>
1563 <packagedElement xmi:type="uml:Class" xmi:id="_RvolZVVUEeWRIqLs5_0Tzg" name="Cadu">
1564 <ownedComment xmi:id="_RvolZlVUEeWRIqLs5_0Tzg" annotatedElement="_RvolZVVUEeWRIqLs5_0Tzg">
1565 <body>&lt;p>Channel&amp;nbsp;Access&amp;nbsp;Data&amp;nbsp;Unit&lt;/p>&lt;p>2044&amp;nbsp;bytes&lt;/p></body>
1566 </ownedComment>
1567 <ownedRule xmi:id="_RvolZ1VUEeWRIqLs5_0Tzg" name="input_virtualChannelFrameCount" constrainedElement="_RvolZVVUEeWRIqLs5_0Tzg">
1568 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolaFVUEeWRIqLs5_0Tzg">
1569 <language>OCL</language>
1570 <body>let &#xD;
1571 caduFrameCount : Integer = self.vcdu.vcduHeader.virtualChannelFrameCount.intValue, &#xD;
1572 prevCaduFrameCount : Integer = self.prevOnChannel.vcdu.vcduHeader.virtualChannelFrameCount.intValue &#xD;
1573in &#xD;
1574&#xD;
1575not self.prevOnChannel->isEmpty() &#xD;
1576&#xD;
1577implies &#xD;
1578&#xD;
1579if prevCaduFrameCount &lt; 16777215 &#xD;
1580 then caduFrameCount = prevCaduFrameCount + 1 &#xD;
1581else prevCaduFrameCount = 16777215 and caduFrameCount = 0 &#xD;
1582endif&#xD;
1583</body>
1584 </specification>
1585 </ownedRule>
1586 <ownedAttribute xmi:id="_RvolaVVUEeWRIqLs5_0Tzg" name="sync" visibility="private" type="_RvokTlVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomHVVUEeWRIqLs5_0Tzg">
1587 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvola1VUEeWRIqLs5_0Tzg" value="1"/>
1588 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolalVUEeWRIqLs5_0Tzg" value="1"/>
1589 </ownedAttribute>
1590 <ownedAttribute xmi:id="_RvolbFVUEeWRIqLs5_0Tzg" name="reedSolomonCoding" visibility="private" type="_RvokaVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomKVVUEeWRIqLs5_0Tzg">
1591 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolblVUEeWRIqLs5_0Tzg" value="1"/>
1592 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolbVVUEeWRIqLs5_0Tzg" value="1"/>
1593 </ownedAttribute>
1594 <ownedAttribute xmi:id="_Rvolb1VUEeWRIqLs5_0Tzg" name="vcdu" visibility="private" type="_RvokDVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomKlVUEeWRIqLs5_0Tzg">
1595 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolcVVUEeWRIqLs5_0Tzg" value="1"/>
1596 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolcFVUEeWRIqLs5_0Tzg" value="1"/>
1597 </ownedAttribute>
1598 <ownedAttribute xmi:id="_RvolclVUEeWRIqLs5_0Tzg" name="prev" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomK1VUEeWRIqLs5_0Tzg">
1599 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvoldFVUEeWRIqLs5_0Tzg"/>
1600 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvolc1VUEeWRIqLs5_0Tzg" value="1"/>
1601 </ownedAttribute>
1602 <ownedAttribute xmi:id="_RvoldVVUEeWRIqLs5_0Tzg" name="prevOnChannel" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomL1VUEeWRIqLs5_0Tzg">
1603 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvold1VUEeWRIqLs5_0Tzg"/>
1604 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvoldlVUEeWRIqLs5_0Tzg" value="1"/>
1605 </ownedAttribute>
1606 <ownedAttribute xmi:id="_RvoleFVUEeWRIqLs5_0Tzg" name="channelData" visibility="private" type="_RvomTVVUEeWRIqLs5_0Tzg" association="_RvomXFVUEeWRIqLs5_0Tzg">
1607 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolelVUEeWRIqLs5_0Tzg" value="1"/>
1608 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvoleVVUEeWRIqLs5_0Tzg" value="1"/>
1609 </ownedAttribute>
1610 <ownedAttribute xmi:id="_Rvole1VUEeWRIqLs5_0Tzg" name="extendedCaduInfo" visibility="private" type="_Rvoma1VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomcFVUEeWRIqLs5_0Tzg">
1611 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolfVVUEeWRIqLs5_0Tzg"/>
1612 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolfFVUEeWRIqLs5_0Tzg" value="1"/>
1613 </ownedAttribute>
1614 <ownedAttribute xmi:id="_RvolflVUEeWRIqLs5_0Tzg" name="index" visibility="private">
1615 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1616 </ownedAttribute>
1617 <ownedOperation xmi:id="_Rvolf1VUEeWRIqLs5_0Tzg" name="hasExtendedCadu" bodyCondition="_RvolgFVUEeWRIqLs5_0Tzg" isQuery="true">
1618 <ownedRule xmi:id="_RvolgFVUEeWRIqLs5_0Tzg" name="hasExtendedCadu" constrainedElement="_Rvolf1VUEeWRIqLs5_0Tzg">
1619 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolgVVUEeWRIqLs5_0Tzg">
1620 <language>OCL</language>
1621 <body>self.channelData.hasExtendedCadu&#xD;
1622</body>
1623 </specification>
1624 </ownedRule>
1625 <ownedParameter xmi:id="_RvolglVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1626 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1627 </ownedParameter>
1628 </ownedOperation>
1629 <ownedOperation xmi:id="_Rvolg1VUEeWRIqLs5_0Tzg" name="getCaduIndex" bodyCondition="_RvolhFVUEeWRIqLs5_0Tzg" isQuery="true">
1630 <ownedRule xmi:id="_RvolhFVUEeWRIqLs5_0Tzg" name="getCaduIndex" constrainedElement="_Rvolg1VUEeWRIqLs5_0Tzg">
1631 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolhVVUEeWRIqLs5_0Tzg">
1632 <language>OCL</language>
1633 <body>self.index</body>
1634 </specification>
1635 </ownedRule>
1636 <ownedParameter xmi:id="_RvolhlVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
1637 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
1638 </ownedParameter>
1639 </ownedOperation>
1640 </packagedElement>
1641 <packagedElement xmi:type="uml:Class" xmi:id="_Rvolh1VUEeWRIqLs5_0Tzg" name="MpduActivePacketZone">
1642 <ownedRule xmi:id="_RvoliFVUEeWRIqLs5_0Tzg" name="alloy_checkVcidAndApid" constrainedElement="_Rvolh1VUEeWRIqLs5_0Tzg">
1643 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvoliVVUEeWRIqLs5_0Tzg">
1644 <language>OCL</language>
1645 <body>self.isp->forAll(x : Isp | &#xD;
1646 self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.vcdusConfig.vcduConfig->select(y | &#xD;
1647 y.vcid = self.vcdu.vcduHeader.virtualChannelId).ispsConfig.ispConfig.apid->exists(z | &#xD;
1648 z.apidPid = x.packetPrimaryHeader.apidPid and z.apidPcat = x.packetPrimaryHeader.apidPcat)&#xD;
1649 or &#xD;
1650 (x.packetPrimaryHeader.apidPid = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid and &#xD;
1651 x.packetPrimaryHeader.apidPcat = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat)&#xD;
1652)&#xD;
1653</body>
1654 </specification>
1655 </ownedRule>
1656 <generalization xmi:id="_RvolilVUEeWRIqLs5_0Tzg" general="_Rvok4FVUEeWRIqLs5_0Tzg"/>
1657 <ownedAttribute xmi:id="_Rvoli1VUEeWRIqLs5_0Tzg" name="isp" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" isOrdered="true" association="_RvomIFVUEeWRIqLs5_0Tzg">
1658 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvoljVVUEeWRIqLs5_0Tzg" value="1"/>
1659 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvoljFVUEeWRIqLs5_0Tzg" value="*"/>
1660 </ownedAttribute>
1661 <ownedAttribute xmi:id="_RvoljlVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg"/>
1662 <ownedOperation xmi:id="_Rvolj1VUEeWRIqLs5_0Tzg" name="getStartingIsps" bodyCondition="_RvolkFVUEeWRIqLs5_0Tzg" isQuery="true">
1663 <ownedRule xmi:id="_RvolkFVUEeWRIqLs5_0Tzg" name="getStartingIsps" constrainedElement="_Rvolj1VUEeWRIqLs5_0Tzg">
1664 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvolkVVUEeWRIqLs5_0Tzg">
1665 <language>OCL</language>
1666 <body>self.isp->select(i : Isp | i.mpduActivePacketZone->at(1) = self)</body>
1667 </specification>
1668 </ownedRule>
1669 <ownedParameter xmi:id="_RvolklVUEeWRIqLs5_0Tzg" name="Parameter1" type="_Rvok_VVUEeWRIqLs5_0Tzg" isOrdered="true" direction="return">
1670 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvollFVUEeWRIqLs5_0Tzg"/>
1671 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rvolk1VUEeWRIqLs5_0Tzg" value="*"/>
1672 </ownedParameter>
1673 </ownedOperation>
1674 <ownedOperation xmi:id="_RvollVVUEeWRIqLs5_0Tzg" name="getAssociatedIsps" bodyCondition="_RvolllVUEeWRIqLs5_0Tzg" isQuery="true">
1675 <ownedRule xmi:id="_RvolllVUEeWRIqLs5_0Tzg" name="getAssociatedIsps" constrainedElement="_RvollVVUEeWRIqLs5_0Tzg">
1676 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvoll1VUEeWRIqLs5_0Tzg">
1677 <language>OCL</language>
1678 <body>self.isp</body>
1679 </specification>
1680 </ownedRule>
1681 <ownedParameter xmi:id="_RvolmFVUEeWRIqLs5_0Tzg" name="Parameter1" type="_Rvok_VVUEeWRIqLs5_0Tzg" isOrdered="true" direction="return">
1682 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolmlVUEeWRIqLs5_0Tzg"/>
1683 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolmVVUEeWRIqLs5_0Tzg" value="*"/>
1684 </ownedParameter>
1685 </ownedOperation>
1686 </packagedElement>
1687 <packagedElement xmi:type="uml:Class" xmi:id="_Rvolm1VUEeWRIqLs5_0Tzg" name="MpduHeader" isAbstract="true">
1688 <ownedAttribute xmi:id="_RvolnFVUEeWRIqLs5_0Tzg" name="vcdu" visibility="private" type="_RvokDVVUEeWRIqLs5_0Tzg" association="_RvomM1VUEeWRIqLs5_0Tzg">
1689 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvolnlVUEeWRIqLs5_0Tzg" value="1"/>
1690 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvolnVVUEeWRIqLs5_0Tzg" value="1"/>
1691 </ownedAttribute>
1692 </packagedElement>
1693 <packagedElement xmi:type="uml:Class" xmi:id="_Rvoln1VUEeWRIqLs5_0Tzg" name="MsiS2DataFieldHeader">
1694 <generalization xmi:id="_RvoloFVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1695 <ownedAttribute xmi:id="_RvoloVVUEeWRIqLs5_0Tzg" name="startTimeCoarse" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1696 <ownedAttribute xmi:id="_RvololVUEeWRIqLs5_0Tzg" name="startTimeFine" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1697 <ownedAttribute xmi:id="_Rvolo1VUEeWRIqLs5_0Tzg" name="timeCorrectionValue" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1698 <ownedAttribute xmi:id="_RvolpFVUEeWRIqLs5_0Tzg" name="syncStatusValidity" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1699 <ownedAttribute xmi:id="_RvolpVVUEeWRIqLs5_0Tzg" name="syncStatusFlag" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1700 <ownedAttribute xmi:id="_RvolplVUEeWRIqLs5_0Tzg" name="systemOperationMode" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1701 <ownedAttribute xmi:id="_Rvolp1VUEeWRIqLs5_0Tzg" name="compressionStatus" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1702 </packagedElement>
1703 <packagedElement xmi:type="uml:Class" xmi:id="_RvolqFVUEeWRIqLs5_0Tzg" name="TmGpsrS2DataFieldHeader">
1704 <generalization xmi:id="_RvolqVVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1705 <ownedAttribute xmi:id="_RvolqlVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1706 <ownedAttribute xmi:id="_Rvolq1VUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1707 <ownedAttribute xmi:id="_RvolrFVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1708 <ownedAttribute xmi:id="_RvolrVVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1709 <ownedAttribute xmi:id="_RvolrlVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1710 <ownedAttribute xmi:id="_Rvolr1VUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1711 <ownedAttribute xmi:id="_RvolsFVUEeWRIqLs5_0Tzg" name="tfSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1712 <ownedAttribute xmi:id="_RvolsVVUEeWRIqLs5_0Tzg" name="tfSubSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1713 <ownedAttribute xmi:id="_RvolslVUEeWRIqLs5_0Tzg" name="tfUndefinedA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1714 </packagedElement>
1715 <packagedElement xmi:type="uml:Class" xmi:id="_Rvols1VUEeWRIqLs5_0Tzg" name="TmStrS2DataFieldHeader">
1716 <generalization xmi:id="_RvoltFVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1717 <ownedAttribute xmi:id="_RvoltVVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1718 <ownedAttribute xmi:id="_RvoltlVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1719 <ownedAttribute xmi:id="_Rvolt1VUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1720 <ownedAttribute xmi:id="_RvoluFVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1721 <ownedAttribute xmi:id="_RvoluVVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1722 <ownedAttribute xmi:id="_RvolulVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1723 <ownedAttribute xmi:id="_Rvolu1VUEeWRIqLs5_0Tzg" name="tfSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1724 <ownedAttribute xmi:id="_RvolvFVUEeWRIqLs5_0Tzg" name="tfSubSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1725 <ownedAttribute xmi:id="_RvolvVVUEeWRIqLs5_0Tzg" name="syncA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1726 <ownedAttribute xmi:id="_RvolvlVUEeWRIqLs5_0Tzg" name="syncB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1727 </packagedElement>
1728 <packagedElement xmi:type="uml:Class" xmi:id="_Rvolv1VUEeWRIqLs5_0Tzg" name="TmCswS2DataFieldHeader">
1729 <generalization xmi:id="_RvolwFVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1730 <ownedAttribute xmi:id="_RvolwVVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1731 <ownedAttribute xmi:id="_RvolwlVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1732 <ownedAttribute xmi:id="_Rvolw1VUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1733 <ownedAttribute xmi:id="_RvolxFVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1734 <ownedAttribute xmi:id="_RvolxVVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1735 <ownedAttribute xmi:id="_RvolxlVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1736 <ownedAttribute xmi:id="_Rvolx1VUEeWRIqLs5_0Tzg" name="tfSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1737 <ownedAttribute xmi:id="_RvolyFVUEeWRIqLs5_0Tzg" name="tfSubSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1738 <ownedAttribute xmi:id="_RvolyVVUEeWRIqLs5_0Tzg" name="syncA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1739 <ownedAttribute xmi:id="_RvolylVUEeWRIqLs5_0Tzg" name="syncB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1740 </packagedElement>
1741 <packagedElement xmi:type="uml:Class" xmi:id="_Rvoly1VUEeWRIqLs5_0Tzg" name="OlciS3DataFieldHeader">
1742 <generalization xmi:id="_RvolzFVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1743 <ownedAttribute xmi:id="_RvolzVVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1744 <ownedAttribute xmi:id="_RvolzlVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1745 <ownedAttribute xmi:id="_Rvolz1VUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1746 <ownedAttribute xmi:id="_Rvol0FVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1747 <ownedAttribute xmi:id="_Rvol0VVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1748 <ownedAttribute xmi:id="_Rvol0lVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1749 <ownedAttribute xmi:id="_Rvol01VUEeWRIqLs5_0Tzg" name="tfScienceTimeMsp" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1750 <ownedAttribute xmi:id="_Rvol1FVUEeWRIqLs5_0Tzg" name="tfScienceTimeLsp" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1751 <ownedAttribute xmi:id="_Rvol1VVUEeWRIqLs5_0Tzg" name="tfStat" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1752 </packagedElement>
1753 <packagedElement xmi:type="uml:Class" xmi:id="_Rvol1lVUEeWRIqLs5_0Tzg" name="SlstrS3DataFieldHeader">
1754 <generalization xmi:id="_Rvol11VUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1755 <ownedAttribute xmi:id="_Rvol2FVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1756 <ownedAttribute xmi:id="_Rvol2VVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1757 <ownedAttribute xmi:id="_Rvol2lVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1758 <ownedAttribute xmi:id="_Rvol21VUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1759 <ownedAttribute xmi:id="_Rvol3FVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1760 <ownedAttribute xmi:id="_Rvol3VVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1761 <ownedAttribute xmi:id="_Rvol3lVUEeWRIqLs5_0Tzg" name="tfTime" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1762 <ownedAttribute xmi:id="_Rvol31VUEeWRIqLs5_0Tzg" name="tfStat" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1763 </packagedElement>
1764 <packagedElement xmi:type="uml:Class" xmi:id="_Rvol4FVUEeWRIqLs5_0Tzg" name="DorisS3DateFieldHeader">
1765 <generalization xmi:id="_Rvol4VVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1766 <ownedAttribute xmi:id="_Rvol4lVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1767 <ownedAttribute xmi:id="_Rvol41VUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1768 <ownedAttribute xmi:id="_Rvol5FVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1769 <ownedAttribute xmi:id="_Rvol5VVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1770 <ownedAttribute xmi:id="_Rvol5lVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1771 <ownedAttribute xmi:id="_Rvol51VUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1772 <ownedAttribute xmi:id="_Rvol6FVUEeWRIqLs5_0Tzg" name="tfTime" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1773 <ownedAttribute xmi:id="_Rvol6VVUEeWRIqLs5_0Tzg" name="spare" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1774 </packagedElement>
1775 <packagedElement xmi:type="uml:Class" xmi:id="_Rvol6lVUEeWRIqLs5_0Tzg" name="TmNavattS3DataFieldHeader">
1776 <generalization xmi:id="_Rvol61VUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1777 <ownedAttribute xmi:id="_Rvol7FVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1778 <ownedAttribute xmi:id="_Rvol7VVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1779 <ownedAttribute xmi:id="_Rvol7lVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1780 <ownedAttribute xmi:id="_Rvol71VUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1781 <ownedAttribute xmi:id="_Rvol8FVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1782 <ownedAttribute xmi:id="_Rvol8VVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1783 <ownedAttribute xmi:id="_Rvol8lVUEeWRIqLs5_0Tzg" name="tfCoarse" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1784 <ownedAttribute xmi:id="_Rvol81VUEeWRIqLs5_0Tzg" name="tfFine" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1785 <ownedAttribute xmi:id="_Rvol9FVUEeWRIqLs5_0Tzg" name="tfStat" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1786 </packagedElement>
1787 <packagedElement xmi:type="uml:Class" xmi:id="_Rvol9VVUEeWRIqLs5_0Tzg" name="MwrS3DataFieldHeader">
1788 <generalization xmi:id="_Rvol9lVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1789 <ownedAttribute xmi:id="_Rvol91VUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1790 <ownedAttribute xmi:id="_Rvol-FVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1791 <ownedAttribute xmi:id="_Rvol-VVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1792 <ownedAttribute xmi:id="_Rvol-lVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1793 <ownedAttribute xmi:id="_Rvol-1VUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1794 <ownedAttribute xmi:id="_Rvol_FVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1795 <ownedAttribute xmi:id="_Rvol_VVUEeWRIqLs5_0Tzg" name="tfOverSecond" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1796 <ownedAttribute xmi:id="_Rvol_lVUEeWRIqLs5_0Tzg" name="tfSubSecond" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1797 <ownedAttribute xmi:id="_Rvol_1VUEeWRIqLs5_0Tzg" name="tfStat" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1798 </packagedElement>
1799 <packagedElement xmi:type="uml:Class" xmi:id="_RvomAFVUEeWRIqLs5_0Tzg" name="SralS3DataFieldHeader">
1800 <generalization xmi:id="_RvomAVVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1801 <ownedAttribute xmi:id="_RvomAlVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1802 <ownedAttribute xmi:id="_RvomA1VUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1803 <ownedAttribute xmi:id="_RvomBFVUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1804 <ownedAttribute xmi:id="_RvomBVVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1805 <ownedAttribute xmi:id="_RvomBlVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1806 <ownedAttribute xmi:id="_RvomB1VUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1807 <ownedAttribute xmi:id="_RvomCFVUEeWRIqLs5_0Tzg" name="tfCoarse" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1808 <ownedAttribute xmi:id="_RvomCVVUEeWRIqLs5_0Tzg" name="tfFine" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1809 <ownedAttribute xmi:id="_RvomClVUEeWRIqLs5_0Tzg" name="tfStat" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1810 </packagedElement>
1811 <packagedElement xmi:type="uml:Class" xmi:id="_RvomC1VUEeWRIqLs5_0Tzg" name="TmGpsrS3DataFieldHeader">
1812 <generalization xmi:id="_RvomDFVUEeWRIqLs5_0Tzg" general="_Rvokf1VUEeWRIqLs5_0Tzg"/>
1813 <ownedAttribute xmi:id="_RvomDVVUEeWRIqLs5_0Tzg" name="fillerA" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1814 <ownedAttribute xmi:id="_RvomDlVUEeWRIqLs5_0Tzg" name="version" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1815 <ownedAttribute xmi:id="_RvomD1VUEeWRIqLs5_0Tzg" name="fillerB" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1816 <ownedAttribute xmi:id="_RvomEFVUEeWRIqLs5_0Tzg" name="type" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1817 <ownedAttribute xmi:id="_RvomEVVUEeWRIqLs5_0Tzg" name="subtype" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1818 <ownedAttribute xmi:id="_RvomElVUEeWRIqLs5_0Tzg" name="destinationId" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1819 <ownedAttribute xmi:id="_RvomE1VUEeWRIqLs5_0Tzg" name="tfSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1820 <ownedAttribute xmi:id="_RvomFFVUEeWRIqLs5_0Tzg" name="tfSubSeconds" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1821 <ownedAttribute xmi:id="_RvomFVVUEeWRIqLs5_0Tzg" name="tfBlank" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
1822 </packagedElement>
1823 <packagedElement xmi:type="uml:Class" xmi:id="_RvomFlVUEeWRIqLs5_0Tzg" name="IdlePacketDataField">
1824 <generalization xmi:id="_RvomF1VUEeWRIqLs5_0Tzg" general="_Rvok21VUEeWRIqLs5_0Tzg"/>
1825 <ownedAttribute xmi:id="_RvomGFVUEeWRIqLs5_0Tzg" name="idleDataArray" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg">
1826 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomGlVUEeWRIqLs5_0Tzg" value="1"/>
1827 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomGVVUEeWRIqLs5_0Tzg" value="1"/>
1828 </ownedAttribute>
1829 </packagedElement>
1830 <packagedElement xmi:type="uml:Association" xmi:id="_RvomG1VUEeWRIqLs5_0Tzg" memberEnd="_Rvoj9VVUEeWRIqLs5_0Tzg _RvokFlVUEeWRIqLs5_0Tzg"/>
1831 <packagedElement xmi:type="uml:Association" xmi:id="_RvomHFVUEeWRIqLs5_0Tzg" memberEnd="_Rvok4lVUEeWRIqLs5_0Tzg _RvokE1VUEeWRIqLs5_0Tzg"/>
1832 <packagedElement xmi:type="uml:Association" xmi:id="_RvomHVVUEeWRIqLs5_0Tzg" memberEnd="_RvokV1VUEeWRIqLs5_0Tzg _RvolaVVUEeWRIqLs5_0Tzg"/>
1833 <packagedElement xmi:type="uml:Association" xmi:id="_RvomHlVUEeWRIqLs5_0Tzg" memberEnd="_Rvok3VVUEeWRIqLs5_0Tzg _RvolDlVUEeWRIqLs5_0Tzg"/>
1834 <packagedElement xmi:type="uml:Association" xmi:id="_RvomH1VUEeWRIqLs5_0Tzg" memberEnd="_RvokuVVUEeWRIqLs5_0Tzg _RvolC1VUEeWRIqLs5_0Tzg"/>
1835 <packagedElement xmi:type="uml:Association" xmi:id="_RvomIFVUEeWRIqLs5_0Tzg" memberEnd="_RvolEVVUEeWRIqLs5_0Tzg _Rvoli1VUEeWRIqLs5_0Tzg"/>
1836 <packagedElement xmi:type="uml:Association" xmi:id="_RvomIVVUEeWRIqLs5_0Tzg" memberEnd="_RvolFFVUEeWRIqLs5_0Tzg _RvomIlVUEeWRIqLs5_0Tzg">
1837 <ownedEnd xmi:id="_RvomIlVUEeWRIqLs5_0Tzg" name="" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" association="_RvomIVVUEeWRIqLs5_0Tzg">
1838 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomJFVUEeWRIqLs5_0Tzg" value="1"/>
1839 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomI1VUEeWRIqLs5_0Tzg" value="1"/>
1840 </ownedEnd>
1841 </packagedElement>
1842 <packagedElement xmi:type="uml:Association" xmi:id="_RvomJVVUEeWRIqLs5_0Tzg" memberEnd="_RvolF1VUEeWRIqLs5_0Tzg _RvomJlVUEeWRIqLs5_0Tzg">
1843 <ownedEnd xmi:id="_RvomJlVUEeWRIqLs5_0Tzg" name="" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" association="_RvomJVVUEeWRIqLs5_0Tzg">
1844 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomKFVUEeWRIqLs5_0Tzg" value="1"/>
1845 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomJ1VUEeWRIqLs5_0Tzg" value="1"/>
1846 </ownedEnd>
1847 </packagedElement>
1848 <packagedElement xmi:type="uml:Association" xmi:id="_RvomKVVUEeWRIqLs5_0Tzg" memberEnd="_RvokdFVUEeWRIqLs5_0Tzg _RvolbFVUEeWRIqLs5_0Tzg"/>
1849 <packagedElement xmi:type="uml:Association" xmi:id="_RvomKlVUEeWRIqLs5_0Tzg" memberEnd="_RvokGVVUEeWRIqLs5_0Tzg _Rvolb1VUEeWRIqLs5_0Tzg"/>
1850 <packagedElement xmi:type="uml:Association" xmi:id="_RvomK1VUEeWRIqLs5_0Tzg" memberEnd="_RvolclVUEeWRIqLs5_0Tzg _RvomLFVUEeWRIqLs5_0Tzg">
1851 <ownedEnd xmi:id="_RvomLFVUEeWRIqLs5_0Tzg" name="" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomK1VUEeWRIqLs5_0Tzg">
1852 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomLlVUEeWRIqLs5_0Tzg" value="1"/>
1853 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomLVVUEeWRIqLs5_0Tzg" value="1"/>
1854 </ownedEnd>
1855 </packagedElement>
1856 <packagedElement xmi:type="uml:Association" xmi:id="_RvomL1VUEeWRIqLs5_0Tzg" memberEnd="_RvoldVVUEeWRIqLs5_0Tzg _RvomMFVUEeWRIqLs5_0Tzg">
1857 <ownedEnd xmi:id="_RvomMFVUEeWRIqLs5_0Tzg" name="" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomL1VUEeWRIqLs5_0Tzg">
1858 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomMlVUEeWRIqLs5_0Tzg" value="1"/>
1859 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomMVVUEeWRIqLs5_0Tzg" value="1"/>
1860 </ownedEnd>
1861 </packagedElement>
1862 <packagedElement xmi:type="uml:Association" xmi:id="_RvomM1VUEeWRIqLs5_0Tzg" memberEnd="_RvolnFVUEeWRIqLs5_0Tzg _RvokHFVUEeWRIqLs5_0Tzg"/>
1863 <packagedElement xmi:type="uml:Class" xmi:id="_RvomNFVUEeWRIqLs5_0Tzg" name="ActivePacketDataField">
1864 <ownedRule xmi:id="_RvomNVVUEeWRIqLs5_0Tzg" name="alloy_isSecondaryHeaderConsistent" constrainedElement="_RvomNFVUEeWRIqLs5_0Tzg">
1865 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomNlVUEeWRIqLs5_0Tzg">
1866 <language>OCL</language>
1867 <body>self.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps->exists(x: XsveRtStps | x.missionName = MissionName::Sentinel1)&#xD;
1868 and (self.packetSecondaryHeader.oclIsTypeOf(SarS1DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmGpsrS1DataFieldHeader))&#xD;
1869or&#xD;
1870self.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps->exists(x: XsveRtStps | x.missionName = MissionName::Sentinel2)&#xD;
1871 and (self.packetSecondaryHeader.oclIsTypeOf(MsiS2DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmGpsrS2DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmStrS2DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmCswS2DataFieldHeader))&#xD;
1872or&#xD;
1873self.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps->exists(x: XsveRtStps | x.missionName = MissionName::Sentinel3)&#xD;
1874 and (self.packetSecondaryHeader.oclIsTypeOf(OlciS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(DorisS3DateFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(MwrS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmGpsrS3DataFieldHeader) or&#xD;
1875 self.packetSecondaryHeader.oclIsTypeOf(SlstrS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmNavattS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(SralS3DataFieldHeader) )&#xD;
1876</body>
1877 </specification>
1878 </ownedRule>
1879 <ownedRule xmi:id="_RvomN1VUEeWRIqLs5_0Tzg" name="alloy_isSecondaryHeaderConsistent2" constrainedElement="_RvomNFVUEeWRIqLs5_0Tzg">
1880 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomOFVUEeWRIqLs5_0Tzg">
1881 <language>OCL</language>
1882 <body>if self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.extendedCadu&#xD;
1883 then true&#xD;
1884else false&#xD;
1885endif&#xD;
1886&#xD;
1887&#xD;
1888--SarS1DataFieldHeader&#xD;
1889--TmGpsrS1DataFieldHeader&#xD;
1890-- MsiS2DataFieldHeader&#xD;
1891--TmGpsrS2DataFiefldHeader&#xD;
1892--TmStrS2DataFieldHeader&#xD;
1893--TmCswS2DataFieldHeader&#xD;
1894</body>
1895 </specification>
1896 </ownedRule>
1897 <generalization xmi:id="_RvomOVVUEeWRIqLs5_0Tzg" general="_Rvok21VUEeWRIqLs5_0Tzg"/>
1898 <ownedAttribute xmi:id="_RvomOlVUEeWRIqLs5_0Tzg" name="packetSecondaryHeader" visibility="private" type="_Rvokf1VUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomSVVUEeWRIqLs5_0Tzg">
1899 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomPFVUEeWRIqLs5_0Tzg"/>
1900 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomO1VUEeWRIqLs5_0Tzg" value="1"/>
1901 </ownedAttribute>
1902 <ownedAttribute xmi:id="_RvomPVVUEeWRIqLs5_0Tzg" name="packetData" visibility="private" type="_RvolXVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomSlVUEeWRIqLs5_0Tzg">
1903 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomP1VUEeWRIqLs5_0Tzg" value="1"/>
1904 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomPlVUEeWRIqLs5_0Tzg" value="1"/>
1905 </ownedAttribute>
1906 <ownedAttribute xmi:id="_RvomQFVUEeWRIqLs5_0Tzg" name="packetErrorControl" visibility="private" type="_RvokvVVUEeWRIqLs5_0Tzg" aggregation="composite" association="_RvomS1VUEeWRIqLs5_0Tzg">
1907 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomQlVUEeWRIqLs5_0Tzg" value="1"/>
1908 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomQVVUEeWRIqLs5_0Tzg" value="1"/>
1909 </ownedAttribute>
1910 <ownedOperation xmi:id="_RvomQ1VUEeWRIqLs5_0Tzg" name="getActivePacketType" bodyCondition="_RvomRFVUEeWRIqLs5_0Tzg" isQuery="true">
1911 <ownedRule xmi:id="_RvomRFVUEeWRIqLs5_0Tzg" name="getActivePacketType" constrainedElement="_RvomQ1VUEeWRIqLs5_0Tzg">
1912 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomRVVUEeWRIqLs5_0Tzg">
1913 <language>OCL</language>
1914 <body>let &#xD;
1915 setOfEnums : Set(IspPacketTypes) = IspPacketTypes.allInstances() &#xD;
1916in &#xD;
1917&#xD;
1918if self.isp.packetPrimaryHeader->notEmpty() then &#xD;
1919 if setOfEnums->select(i : IspPacketTypes | self.isp.isTypeOfPacket(i))->asOrderedSet()->notEmpty() then &#xD;
1920 setOfEnums->select(i : IspPacketTypes | self.isp.isTypeOfPacket(i))->asOrderedSet()->first() &#xD;
1921 else IspPacketTypes::UNDEFINED &#xD;
1922 endif &#xD;
1923else IspPacketTypes::UNDEFINED &#xD;
1924endif&#xD;
1925</body>
1926 </specification>
1927 </ownedRule>
1928 <ownedParameter xmi:id="_RvomRlVUEeWRIqLs5_0Tzg" name="Parameter1" type="_RvojnFVUEeWRIqLs5_0Tzg" direction="return">
1929 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomSFVUEeWRIqLs5_0Tzg" value="1"/>
1930 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomR1VUEeWRIqLs5_0Tzg" value="1"/>
1931 </ownedParameter>
1932 </ownedOperation>
1933 </packagedElement>
1934 <packagedElement xmi:type="uml:Association" xmi:id="_RvomSVVUEeWRIqLs5_0Tzg" memberEnd="_RvomOlVUEeWRIqLs5_0Tzg _Rvokh1VUEeWRIqLs5_0Tzg"/>
1935 <packagedElement xmi:type="uml:Association" xmi:id="_RvomSlVUEeWRIqLs5_0Tzg" memberEnd="_RvomPVVUEeWRIqLs5_0Tzg _RvolYlVUEeWRIqLs5_0Tzg"/>
1936 <packagedElement xmi:type="uml:Association" xmi:id="_RvomS1VUEeWRIqLs5_0Tzg" memberEnd="_RvomQFVUEeWRIqLs5_0Tzg _RvokyFVUEeWRIqLs5_0Tzg"/>
1937 <packagedElement xmi:type="uml:Association" xmi:id="_RvomTFVUEeWRIqLs5_0Tzg" memberEnd="_RvolUVVUEeWRIqLs5_0Tzg _Rvojc1VUEeWRIqLs5_0Tzg"/>
1938 <packagedElement xmi:type="uml:Class" xmi:id="_RvomTVVUEeWRIqLs5_0Tzg" name="ChannelData">
1939 <ownedComment xmi:id="_RvomTlVUEeWRIqLs5_0Tzg" annotatedElement="_RvomTVVUEeWRIqLs5_0Tzg">
1940 <body>&lt;p>For&amp;nbsp;each&amp;nbsp;physical&amp;nbsp;channel&amp;nbsp;of&amp;nbsp;the&amp;nbsp;satellite.&lt;/p></body>
1941 </ownedComment>
1942 <ownedRule xmi:id="_RvomT1VUEeWRIqLs5_0Tzg" name="input_caduDataExists" constrainedElement="_RvomTVVUEeWRIqLs5_0Tzg">
1943 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomUFVUEeWRIqLs5_0Tzg">
1944 <language>OCL</language>
1945 <body>self.cadu->size() > 0</body>
1946 </specification>
1947 </ownedRule>
1948 <ownedAttribute xmi:id="_RvomUVVUEeWRIqLs5_0Tzg" name="cadu" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" isOrdered="true" aggregation="composite" association="_RvomXFVUEeWRIqLs5_0Tzg">
1949 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomU1VUEeWRIqLs5_0Tzg"/>
1950 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomUlVUEeWRIqLs5_0Tzg" value="*"/>
1951 </ownedAttribute>
1952 <ownedAttribute xmi:id="_RvomVFVUEeWRIqLs5_0Tzg" name="transmissionData" visibility="private" type="_RvolTVVUEeWRIqLs5_0Tzg" association="_RvomXVVUEeWRIqLs5_0Tzg">
1953 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomVlVUEeWRIqLs5_0Tzg" value="1"/>
1954 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomVVVUEeWRIqLs5_0Tzg" value="1"/>
1955 </ownedAttribute>
1956 <ownedAttribute xmi:id="_RvomV1VUEeWRIqLs5_0Tzg" name="channelDataPerVcid" visibility="private" type="_RvomYVVUEeWRIqLs5_0Tzg" association="_RvomaVVUEeWRIqLs5_0Tzg">
1957 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomWVVUEeWRIqLs5_0Tzg" value="1"/>
1958 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomWFVUEeWRIqLs5_0Tzg" value="1"/>
1959 </ownedAttribute>
1960 <ownedAttribute xmi:id="_RvomWlVUEeWRIqLs5_0Tzg" name="hasExtendedCadu" visibility="private">
1961 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1962 </ownedAttribute>
1963 <ownedAttribute xmi:id="_RvomW1VUEeWRIqLs5_0Tzg" name="caduHeaderIncludesMpdu" visibility="private">
1964 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
1965 </ownedAttribute>
1966 </packagedElement>
1967 <packagedElement xmi:type="uml:Association" xmi:id="_RvomXFVUEeWRIqLs5_0Tzg" memberEnd="_RvomUVVUEeWRIqLs5_0Tzg _RvoleFVUEeWRIqLs5_0Tzg"/>
1968 <packagedElement xmi:type="uml:Association" xmi:id="_RvomXVVUEeWRIqLs5_0Tzg" memberEnd="_RvolVFVUEeWRIqLs5_0Tzg _RvomVFVUEeWRIqLs5_0Tzg"/>
1969 <packagedElement xmi:type="uml:Class" xmi:id="_RvomXlVUEeWRIqLs5_0Tzg" name="FragmentPacketDataField">
1970 <generalization xmi:id="_RvomX1VUEeWRIqLs5_0Tzg" general="_Rvok21VUEeWRIqLs5_0Tzg"/>
1971 <ownedAttribute xmi:id="_RvomYFVUEeWRIqLs5_0Tzg" name="dataArray" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg"/>
1972 </packagedElement>
1973 <packagedElement xmi:type="uml:Class" xmi:id="_RvomYVVUEeWRIqLs5_0Tzg" name="ChannelDataPerVcid">
1974 <ownedAttribute xmi:id="_RvomYlVUEeWRIqLs5_0Tzg" name="virtualChannelId" visibility="private" type="_RvomoVVUEeWRIqLs5_0Tzg"/>
1975 <ownedAttribute xmi:id="_RvomY1VUEeWRIqLs5_0Tzg" name="channelData" visibility="private" type="_RvomTVVUEeWRIqLs5_0Tzg" association="_RvomaVVUEeWRIqLs5_0Tzg">
1976 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomZVVUEeWRIqLs5_0Tzg" value="1"/>
1977 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomZFVUEeWRIqLs5_0Tzg" value="*"/>
1978 </ownedAttribute>
1979 <ownedAttribute xmi:id="_RvomZlVUEeWRIqLs5_0Tzg" name="isp" visibility="private" type="_Rvok_VVUEeWRIqLs5_0Tzg" isOrdered="true" association="_RvomalVUEeWRIqLs5_0Tzg">
1980 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvomaFVUEeWRIqLs5_0Tzg" value="1"/>
1981 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomZ1VUEeWRIqLs5_0Tzg" value="*"/>
1982 </ownedAttribute>
1983 </packagedElement>
1984 <packagedElement xmi:type="uml:Association" xmi:id="_RvomaVVUEeWRIqLs5_0Tzg" memberEnd="_RvomV1VUEeWRIqLs5_0Tzg _RvomY1VUEeWRIqLs5_0Tzg"/>
1985 <packagedElement xmi:type="uml:Association" xmi:id="_RvomalVUEeWRIqLs5_0Tzg" memberEnd="_RvolH1VUEeWRIqLs5_0Tzg _RvomZlVUEeWRIqLs5_0Tzg"/>
1986 <packagedElement xmi:type="uml:Class" xmi:id="_Rvoma1VUEeWRIqLs5_0Tzg" name="ExtendedCaduInfo">
1987 <ownedAttribute xmi:id="_RvombFVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojhVVUEeWRIqLs5_0Tzg"/>
1988 <ownedAttribute xmi:id="_RvombVVUEeWRIqLs5_0Tzg" name="cadu" visibility="private" type="_RvolZVVUEeWRIqLs5_0Tzg" association="_RvomcFVUEeWRIqLs5_0Tzg">
1989 <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rvomb1VUEeWRIqLs5_0Tzg" value="1"/>
1990 <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvomblVUEeWRIqLs5_0Tzg" value="1"/>
1991 </ownedAttribute>
1992 </packagedElement>
1993 <packagedElement xmi:type="uml:Association" xmi:id="_RvomcFVUEeWRIqLs5_0Tzg" memberEnd="_RvombVVUEeWRIqLs5_0Tzg _Rvole1VUEeWRIqLs5_0Tzg"/>
1994 <packagedElement xmi:type="uml:Association" xmi:id="_RvomcVVUEeWRIqLs5_0Tzg" memberEnd="_RvojeVVUEeWRIqLs5_0Tzg _RvojOFVUEeWRIqLs5_0Tzg"/>
1995 <packagedElement xmi:type="uml:Association" xmi:id="_RvomclVUEeWRIqLs5_0Tzg" memberEnd="_RvojdlVUEeWRIqLs5_0Tzg _RvojSVVUEeWRIqLs5_0Tzg"/>
1996 <packagedElement xmi:type="uml:Association" xmi:id="_Rvomc1VUEeWRIqLs5_0Tzg" memberEnd="_RvojfFVUEeWRIqLs5_0Tzg _RvojP1VUEeWRIqLs5_0Tzg"/>
1997 <packagedElement xmi:type="uml:Association" xmi:id="_RvomdFVUEeWRIqLs5_0Tzg" memberEnd="_RvojblVUEeWRIqLs5_0Tzg _RvojUFVUEeWRIqLs5_0Tzg"/>
1998 <packagedElement xmi:type="uml:Association" xmi:id="_RvomdVVUEeWRIqLs5_0Tzg" memberEnd="_RvojTVVUEeWRIqLs5_0Tzg _RvojNFVUEeWRIqLs5_0Tzg"/>
1999 <packagedElement xmi:type="uml:Association" xmi:id="_RvomdlVUEeWRIqLs5_0Tzg" memberEnd="_RvojRlVUEeWRIqLs5_0Tzg _RvojglVUEeWRIqLs5_0Tzg"/>
2000 <packagedElement xmi:type="uml:Association" xmi:id="_Rvomd1VUEeWRIqLs5_0Tzg" memberEnd="_RvojQlVUEeWRIqLs5_0Tzg _RvojH1VUEeWRIqLs5_0Tzg"/>
2001 <packagedElement xmi:type="uml:Association" xmi:id="_RvomeFVUEeWRIqLs5_0Tzg" memberEnd="_RvojO1VUEeWRIqLs5_0Tzg _RvojZFVUEeWRIqLs5_0Tzg"/>
2002 <packagedElement xmi:type="uml:Association" xmi:id="_RvomeVVUEeWRIqLs5_0Tzg" memberEnd="_RvojKlVUEeWRIqLs5_0Tzg _RvojJlVUEeWRIqLs5_0Tzg"/>
2003 <packagedElement xmi:type="uml:Association" xmi:id="_RvomelVUEeWRIqLs5_0Tzg" memberEnd="_RvojG1VUEeWRIqLs5_0Tzg _RvojI1VUEeWRIqLs5_0Tzg"/>
2004 <packagedElement xmi:type="uml:Class" xmi:id="_Rvome1VUEeWRIqLs5_0Tzg" name="XmlNumber">
2005 <ownedAttribute xmi:id="_RvomfFVUEeWRIqLs5_0Tzg" name="value" visibility="private">
2006 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
2007 </ownedAttribute>
2008 <ownedAttribute xmi:id="_RvomfVVUEeWRIqLs5_0Tzg" name="unit" visibility="private" type="_RvomflVUEeWRIqLs5_0Tzg"/>
2009 </packagedElement>
2010 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvomflVUEeWRIqLs5_0Tzg" name="UnitType">
2011 <ownedLiteral xmi:id="_Rvomf1VUEeWRIqLs5_0Tzg" name="byte"/>
2012 </packagedElement>
2013 <packagedElement xmi:type="uml:Enumeration" xmi:id="_RvomgFVUEeWRIqLs5_0Tzg" name="MissionName">
2014 <ownedLiteral xmi:id="_RvomgVVUEeWRIqLs5_0Tzg" name="Sentinel1">
2015 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomglVUEeWRIqLs5_0Tzg">
2016 <body>S1</body>
2017 </specification>
2018 </ownedLiteral>
2019 <ownedLiteral xmi:id="_Rvomg1VUEeWRIqLs5_0Tzg" name="Sentinel2">
2020 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomhFVUEeWRIqLs5_0Tzg">
2021 <body>S2</body>
2022 </specification>
2023 </ownedLiteral>
2024 <ownedLiteral xmi:id="_RvomhVVUEeWRIqLs5_0Tzg" name="Sentinel3">
2025 <specification xmi:type="uml:OpaqueExpression" xmi:id="_RvomhlVUEeWRIqLs5_0Tzg">
2026 <body>S3</body>
2027 </specification>
2028 </ownedLiteral>
2029 </packagedElement>
2030 <packagedElement xmi:type="uml:Class" xmi:id="_Rvomh1VUEeWRIqLs5_0Tzg" name="ApidPcat">
2031 <ownedComment xmi:id="_RvomiFVUEeWRIqLs5_0Tzg" annotatedElement="_Rvomh1VUEeWRIqLs5_0Tzg">
2032 <body>&lt;p>Last&amp;nbsp;4&amp;nbsp;bits&amp;nbsp;of&amp;nbsp;apid.&lt;/p></body>
2033 </ownedComment>
2034 <ownedAttribute xmi:id="_RvomiVVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
2035 </packagedElement>
2036 <packagedElement xmi:type="uml:Class" xmi:id="_RvomilVUEeWRIqLs5_0Tzg" name="ApidPid">
2037 <ownedComment xmi:id="_Rvomi1VUEeWRIqLs5_0Tzg" annotatedElement="_RvomilVUEeWRIqLs5_0Tzg">
2038 <body>&lt;p>First&amp;nbsp;7&amp;nbsp;bits&amp;nbsp;of&amp;nbsp;apid.&lt;/p></body>
2039 </ownedComment>
2040 <ownedAttribute xmi:id="_RvomjFVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
2041 </packagedElement>
2042 <packagedElement xmi:type="uml:Class" xmi:id="_RvomjVVUEeWRIqLs5_0Tzg" name="Apid">
2043 <ownedAttribute xmi:id="_RvomjlVUEeWRIqLs5_0Tzg" name="apidPid" visibility="private" type="_RvomilVUEeWRIqLs5_0Tzg"/>
2044 <ownedAttribute xmi:id="_Rvomj1VUEeWRIqLs5_0Tzg" name="apidPcat" visibility="private" type="_Rvomh1VUEeWRIqLs5_0Tzg"/>
2045 <ownedAttribute xmi:id="_RvomkFVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
2046 <ownedOperation xmi:id="_RvomkVVUEeWRIqLs5_0Tzg" name="getApidPidValue" bodyCondition="_RvomklVUEeWRIqLs5_0Tzg" isQuery="true">
2047 <ownedRule xmi:id="_RvomklVUEeWRIqLs5_0Tzg" name="getApidPidValue" constrainedElement="_RvomkVVUEeWRIqLs5_0Tzg">
2048 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvomk1VUEeWRIqLs5_0Tzg">
2049 <language>OCL</language>
2050 <body>self.value.intValue.div(16)</body>
2051 </specification>
2052 </ownedRule>
2053 <ownedParameter xmi:id="_RvomlFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
2054 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
2055 </ownedParameter>
2056 </ownedOperation>
2057 <ownedOperation xmi:id="_RvomlVVUEeWRIqLs5_0Tzg" name="getApidPcatValue" bodyCondition="_RvomllVUEeWRIqLs5_0Tzg" isQuery="true">
2058 <ownedRule xmi:id="_RvomllVUEeWRIqLs5_0Tzg" name="getApidPcatValue" constrainedElement="_RvomlVVUEeWRIqLs5_0Tzg">
2059 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvoml1VUEeWRIqLs5_0Tzg">
2060 <language>OCL</language>
2061 <body>self.value.intValue.mod(16)</body>
2062 </specification>
2063 </ownedRule>
2064 <ownedParameter xmi:id="_RvommFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
2065 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
2066 </ownedParameter>
2067 </ownedOperation>
2068 <ownedOperation xmi:id="_RvommVVUEeWRIqLs5_0Tzg" name="getApidPidBitSize" bodyCondition="_RvommlVUEeWRIqLs5_0Tzg" isQuery="true">
2069 <ownedRule xmi:id="_RvommlVUEeWRIqLs5_0Tzg" name="getApidPidBitSize" constrainedElement="_RvommVVUEeWRIqLs5_0Tzg">
2070 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvomm1VUEeWRIqLs5_0Tzg">
2071 <language>OCL</language>
2072 <body>7</body>
2073 </specification>
2074 </ownedRule>
2075 <ownedParameter xmi:id="_RvomnFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
2076 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
2077 </ownedParameter>
2078 </ownedOperation>
2079 <ownedOperation xmi:id="_RvomnVVUEeWRIqLs5_0Tzg" name="getApidPcatBitSize" bodyCondition="_RvomnlVUEeWRIqLs5_0Tzg" isQuery="true">
2080 <ownedRule xmi:id="_RvomnlVUEeWRIqLs5_0Tzg" name="getApidPcatBitSize" constrainedElement="_RvomnVVUEeWRIqLs5_0Tzg">
2081 <specification xmi:type="uml:OpaqueExpression" xmi:id="_Rvomn1VUEeWRIqLs5_0Tzg">
2082 <language>OCL</language>
2083 <body>4</body>
2084 </specification>
2085 </ownedRule>
2086 <ownedParameter xmi:id="_RvomoFVUEeWRIqLs5_0Tzg" name="Parameter1" direction="return">
2087 <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
2088 </ownedParameter>
2089 </ownedOperation>
2090 </packagedElement>
2091 <packagedElement xmi:type="uml:Class" xmi:id="_RvomoVVUEeWRIqLs5_0Tzg" name="Vcid">
2092 <ownedAttribute xmi:id="_RvomolVUEeWRIqLs5_0Tzg" name="value" visibility="private" type="_RvojiVVUEeWRIqLs5_0Tzg"/>
2093 </packagedElement>
2094</uml:Package>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.classpath b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.classpath
new file mode 100644
index 00000000..29ba3981
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.classpath
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="src" path="src-gen"/>
8 <classpathentry kind="output" path="bin"/>
9</classpath>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project
new file mode 100644
index 00000000..f6cc6b58
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.project
@@ -0,0 +1,62 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>case.study.a.queries</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.ocl.pivot.ui.oclbuilder</name>
10 <arguments>
11 <dictionary>
12 <key>disabledExtensions</key>
13 <value>*,essentialocl</value>
14 </dictionary>
15 <dictionary>
16 <key>disabledPaths</key>
17 <value>bin/**,target/**</value>
18 </dictionary>
19 <dictionary>
20 <key>enabledExtensions</key>
21 <value>ecore,ocl,oclinecore,oclstdlib,uml</value>
22 </dictionary>
23 <dictionary>
24 <key>enabledPaths</key>
25 <value>**</value>
26 </dictionary>
27 </arguments>
28 </buildCommand>
29 <buildCommand>
30 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
31 <arguments>
32 </arguments>
33 </buildCommand>
34 <buildCommand>
35 <name>org.eclipse.viatra.query.tooling.ui.projectbuilder</name>
36 <arguments>
37 </arguments>
38 </buildCommand>
39 <buildCommand>
40 <name>org.eclipse.jdt.core.javabuilder</name>
41 <arguments>
42 </arguments>
43 </buildCommand>
44 <buildCommand>
45 <name>org.eclipse.pde.ManifestBuilder</name>
46 <arguments>
47 </arguments>
48 </buildCommand>
49 <buildCommand>
50 <name>org.eclipse.pde.SchemaBuilder</name>
51 <arguments>
52 </arguments>
53 </buildCommand>
54 </buildSpec>
55 <natures>
56 <nature>org.eclipse.pde.PluginNature</nature>
57 <nature>org.eclipse.jdt.core.javanature</nature>
58 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
59 <nature>org.eclipse.viatra.query.projectnature</nature>
60 <nature>org.eclipse.ocl.pivot.ui.oclnature</nature>
61 </natures>
62</projectDescription>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.core.resources.prefs b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..4824b802
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
1eclipse.preferences.version=1
2encoding/<project>=UTF-8
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.jdt.core.prefs b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..295926d9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.pde.core.prefs b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 00000000..13325c95
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,3 @@
1eclipse.preferences.version=1
2pluginProject.equinox=false
3resolve.requirebundle=false
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..c1bf0110
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: case.study.a.queries
4Bundle-SymbolicName: case.study.a.queries;singleton:=true
5Bundle-Version: 0.0.1.qualifier
6Export-Package: queries
7Require-Bundle: org.eclipse.emf.ecore,
8 org.eclipse.viatra.query.runtime,
9 org.eclipse.viatra.query.runtime.rete,
10 org.eclipse.viatra.query.runtime.localsearch,
11 org.eclipse.viatra.addon.querybasedfeatures.runtime;bundle-version="2.3.0",
12 org.eclipse.xtext.xbase.lib,
13 case.study.a.model;bundle-version="1.0.0",
14 test;bundle-version="0.1.0",
15 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
16 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0",
17 hu.bme.mit.inf.dslreasoner.logic2ecore;bundle-version="1.0.0",
18 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0",
19 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;bundle-version="1.0.0",
20 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0",
21 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner;bundle-version="1.0.0",
22 hu.bme.mit.inf.dslreasoner.visualisation;bundle-version="1.0.0"
23Bundle-RequiredExecutionEnvironment: JavaSE-1.8
24Import-Package: org.apache.log4j
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore
new file mode 100644
index 00000000..16afa8c0
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/.gitignore
@@ -0,0 +1,75 @@
1/.Inv17.java._trace
2/.Inv20.java._trace
3/.Inv33_con.java._trace
4/.Inv34.java._trace
5/.Inv35.java._trace
6/.Inv47.java._trace
7/.Inv48.java._trace
8/.Inv48_helper.java._trace
9/.Case_study_A.java._trace
10/.Inv49.java._trace
11/.Inv49_con.java._trace
12/.Inv49_helper.java._trace
13/.H_inv49.java._trace
14/.Ocl_inv49.java._trace
15/.Vql_inv49.java._trace
16/.Vql_inv492.java._trace
17/.H1_inv48.java._trace
18/.H2_inv48.java._trace
19/.Vql_inv48.java._trace
20/.H3_inv48.java._trace
21/.H1_inv49.java._trace
22/.H2_inv49.java._trace
23/.H_inv47.java._trace
24/.Inv35test.java._trace
25/.Inv33.java._trace
26/.X.java._trace
27/.H_inv16_moreThan1.java._trace
28/.H_inv48_1.java._trace
29/.H_inv48_2.java._trace
30/.H_inv48_3.java._trace
31/.H_inv49_1.java._trace
32/.H_inv49_2.java._trace
33/.Inv16.java._trace
34/.Inv15.java._trace
35/.H_inv13.java._trace
36/.Inv13.java._trace
37/.Inv12.java._trace
38/.H_inv12_notNonRes.java._trace
39/.H_inv12_notZZ.java._trace
40/.H_inv11_incOver100.java._trace
41/.Inv11.java._trace
42/.H_inv11_incNotOver100.java._trace
43/.H_inv8_notEI.java._trace
44/.Inv8.java._trace
45/.H_inv08_notEI.java._trace
46/.Inv08.java._trace
47/.H_inv08_inRange.java._trace
48/.X_inv08_inRange.java._trace
49/.X_inv08_notEI.java._trace
50/.X_inv11_incNotOver100.java._trace
51/.X_inv11_incOver100.java._trace
52/.X_inv12_notNonRes.java._trace
53/.X_inv12_notZZ.java._trace
54/.X_inv13.java._trace
55/.X_inv47.java._trace
56/.X_inv48_1.java._trace
57/.X_inv48_2.java._trace
58/.X_inv48_3.java._trace
59/.X_inv49_1.java._trace
60/.X_inv49_2.java._trace
61/.X_inv48_Dis.java._trace
62/.X_inv48_notDis.java._trace
63/.X_inv08_noType.java._trace
64/.X_inv08_invalidType.java._trace
65/.Inv06.java._trace
66/.X_inv06_inRange.java._trace
67/.Inv05.java._trace
68/.X_inv05_inRange.java._trace
69/.Inv03.java._trace
70/.X_inv03_noAll.java._trace
71/.X_inv03_eligAll.java._trace
72/.X_inv03_hasAll.java._trace
73/.Inv07.java._trace
74/.Inv10.java._trace
75/.X_inv15.java._trace
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/NewOCLFileX.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/NewOCLFileX.ocl
new file mode 100644
index 00000000..66ae728e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/NewOCLFileX.ocl
@@ -0,0 +1,45 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/case.study.a.model/model/Taxation.ecore'
2
3package Taxation
4
5--context Income inv inv8:
6--if(not self.income_type.oclIsTypeOf(Employment_Income)) then
7--self.details->forAll(d| d.distance = 0)
8--else
9--self.details->forAll(d| d.distance >= 0.0 and d.distance <= 100)
10--endif
11--
12--context Legal_Union_Record inv inv490:
13--self.individual_A.oclIsKindOf(Tax_Payer)
14--
15--context Legal_Union_Record inv inv491:
16--self.individual_B->forAll(i | i.oclIsKindOf(Physical_Person) )
17--
18--context Legal_Union_Record inv inv492:
19--self.individual_B->forAll(i | not i.oclIsTypeOf(Dependent) )
20--
21--context Legal_Union_Record inv inv493:
22--self.individual_A <> self.individual_B
23--
24--context Tax_Payer inv inv13:
25-- self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country=Country::ZZ)
26--implies
27-- self.oclIsTypeOf(Resident_Tax_Payer)
28
29 context Income inv inv7:
30let val:Real =self.details->asOrderedSet()->first().distance in
31self.details->forAll(d: Income_Detail|d.distance = val)
32
33--context External_Allowance inv inv15:
34--let child:Dependent = self.person in
35--let h:Household = Household.allInstances()->select(children->includes(child))->asOrderedSet()->first() in
36--let t1:Set(Physical_Person) = Set{h.parents.individual_A}->union(h.parents.individual_B)->select(oclIsKindOf(Tax_Payer)) in
37--if(t1->size()=1) then
38--self.reciver = t1->asOrderedSet()->first()
39--else
40--self.reciver = t1->asOrderedSet()->at(2) or self.reciver = t1->asOrderedSet()->at(1)
41--endif
42
43
44
45endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/case_study_A.vql b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/case_study_A.vql
new file mode 100644
index 00000000..5d46bf42
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/queries/case_study_A.vql
@@ -0,0 +1,334 @@
1package queries
2
3import "http:///TaxCard.ecore"
4
5//AttributeRemoved -> DF
6
7//inv1-External_Allowance.amount is a derived feature (TODOcheck)
8//inv2-Tax_Card.income.taxPayer.taxesDue is a derived feature (TODOcheck)
9
10//inv3-multiplicity adjusted
11@Constraint(message = "inv03", severity = "error", key = {dep})
12pattern inv03(dep : Dependent) {
13 find x_inv03_eligAll(dep);
14 neg find x_inv03_hasAll(dep);
15} or {
16 Dependent.birth_year(dep, by);
17 check(2018-by > 21);
18 Dependent.continued_studies(dep, false);
19 Dependent.allowances(dep, _);
20}
21pattern x_inv03_eligAll(dep : Dependent) {
22 Dependent.birth_year(dep, by);
23 check(2018-by <= 21);
24} or {
25 Dependent.continued_studies(dep, true);
26}
27pattern x_inv03_hasAll(dep : Dependent) {
28 Dependent.allowances(dep, _);
29}
30
31//inv5 - oclIsTypeOf - handled here
32@Constraint(message = "inv05", severity = "error", key = {inc})
33pattern inv05(inc : Income) {
34 //income_type: None
35 neg find x_inv08_noType(inc);
36 Income.details.worked_days(inc, wd);
37 check(wd != 0);
38} or {
39 //income_type: Not Employment_Income
40 Income.income_type(inc, type);
41 neg find x_inv08_notEI(type);
42 Income.details.worked_days(inc, wd);
43 check(wd != 0);
44} or {
45 //income_type: Employment Income
46 Income.income_type(inc, type);
47 Employment_Income(type);
48 find x_inv05_inRange(inc);
49}
50pattern x_inv05_inRange(inc : Income) {
51 Income.details.worked_days(inc, wd);
52 check(wd < 1);
53} or {
54 Income.details.worked_days(inc, wd);
55 check(wd > 25);
56}
57
58//inv6-Does not make sens, but directly from OCL
59//first part of or from definition of getAge()
60@Constraint(message = "inv06", severity = "error", key = {tp})
61pattern inv06(tp : Tax_Payer) {
62 Tax_Payer.dependents(tp, _);
63 Tax_Payer.birth_year(tp, TPBy);
64 check(2018 - TPBy > 2018-16);
65} or {
66 Tax_Payer.birth_year(tp, TPBy);
67 Tax_Payer.dependents(tp, dep);
68 Dependent.birth_year(dep, DepBy);
69 check(2018-DepBy <= 2018-TPBy-16);
70}
71
72//inv7-OrderedSet
73@Constraint(message = "inv07", severity = "error", key = {inc})
74pattern inv07(inc : Income) {
75 Income.details.distance(inc, d1);
76 Income.details.distance(inc, d2);
77 check(d1 != d2);//compare values
78}
79
80//user_complete_details-AttributeRemoved
81
82//inv8 - oclIsTypeOf - handled here
83@Constraint(message = "inv08", severity = "error", key = {inc})
84pattern inv08(inc : Income) {
85 //income_type: None
86 neg find x_inv08_noType(inc);
87 Income.details.distance(inc, dist);
88 check(dist != 0);
89} or {
90 //income_type: Not Employment_Income
91 Income.income_type(inc, type);
92 neg find x_inv08_notEI(type);
93 Income.details.distance(inc, dist);
94 check(dist != 0);
95} or {
96 //income_type: Employment Income
97 Income.income_type(inc, type);
98 Employment_Income(type);
99 find x_inv08_inRange(inc);
100}
101pattern x_inv08_notEI(type : Employment_Income) {
102 Employment_Income(type);
103}
104pattern x_inv08_noType(inc : Income) {
105 Income.income_type(inc, _);
106}
107pattern x_inv08_inRange(inc : Income) {
108 Income.details.distance(inc, dist);
109 check(dist < 0);
110} or {
111 Income.details.distance(inc, dist);
112 check(dist > 100);
113}
114//inv9-DerivedFeature
115
116//inv10-Ordered Sets
117@Constraint(message = "inv10", severity = "error", key = {inc})
118pattern inv10(inc : Income) {
119 Income.details.amount(inc, a1);
120 Income.details.amount(inc, a2);
121 check(a1 != a2);//compare values
122}
123
124//inv11-attributes-handled by multiplicity
125@Constraint(message = "inv11", severity = "error", key = {exp})
126pattern inv11(exp : Expense) {
127 find x_inv11_incOver100(exp);
128 find x_inv11_incNotOver100(exp);
129}
130pattern x_inv11_incOver100(exp : Expense) {
131 Expense.income.income_amount(exp, incVal);
132 check(incVal / 2 > 50);
133
134} or {
135 Expense.declared_amount(exp, decl);
136 check(decl != 50);
137}
138pattern x_inv11_incNotOver100(exp : Expense) {
139 Expense.income.income_amount(exp, incVal);
140 check(incVal / 2 <= 50);
141} or {
142 Expense.declared_amount(exp, decl);
143 check(decl < 50);
144} or {
145 Expense.income.income_amount(exp, incVal);
146 Expense.declared_amount(exp, decl);
147 check(decl > incVal/2);
148}
149
150//inv12
151//exists - handled logically
152@Constraint(message = "inv12", severity = "error", key = {tp})
153pattern inv12(tp : Tax_Payer) {
154 Tax_Payer.addresses(tp, hab_add);
155 Habitual_Address(hab_add);
156 neg find x_inv12_notZZ(hab_add);
157 Tax_Payer.incomes(tp, inc);
158 Local_Income(inc);
159 neg find x_inv12_notNonRes(tp);
160}
161pattern x_inv12_notNonRes(tp : Non_Resident_Tax_Payer) {
162 Non_Resident_Tax_Payer(tp);
163}
164pattern x_inv12_notZZ(hab_add : Habitual_Address) {
165 Address.country(hab_add, ::ZZ);
166}
167
168//inv13 - Added new containment rel Phys_Pers->Address
169//exists - handled logically
170@Constraint(message = "inv13", severity = "error", key = {tp})
171pattern inv13(tp : Tax_Payer) {
172 Tax_Payer.addresses(tp, hab_add);
173 Habitual_Address(hab_add);
174 Address.country(hab_add, ::ZZ);
175 neg find x_inv13(tp);
176}
177pattern x_inv13(tp : Resident_Tax_Payer) {
178 Resident_Tax_Payer(tp);
179}
180
181//inv14-MultiplicityChanged
182
183//inv15-Ordered Sets in assignment if block
184//ERROR if no household object
185@Constraint(message = "inv15", severity = "error", key = {ea})
186pattern inv15(ea : External_Allowance) {
187 neg find x_inv15(ea);
188}
189pattern x_inv15(ea : External_Allowance) {
190 External_Allowance.person(ea, child);
191 Household.children(h, child);//only one due to multiplicity
192 Household.parents.individual_A(h, iA);
193 Tax_Payer(iA);
194 External_Allowance.reciver(ea, iA);
195} or {
196 External_Allowance.person(ea, child);
197 Household.children(h, child);//only one due to multiplicity
198 Household.parents.individual_B(h, iB);
199 Tax_Payer(iB);
200 External_Allowance.reciver(ea, iB);
201}
202
203//inv16-Tax_Card.tax_card_type is a derived feature
204
205//inv17-attribute-handled by multiplicity
206@Constraint(message = "inv17", severity = "error", key = {lur})
207pattern inv17(lur : Legal_Union_Record) {
208 Legal_Union_Record.start_year(lur, sy);
209 check(sy < 1950);
210} or {
211 Legal_Union_Record.start_year(lur, sy);
212 check(sy > 2018);
213}
214
215//inv18-MultiplicityChecked
216//inv19-MultiplicityChecked
217
218//inv20-Useless constraint since both edges are containment (TODOCheck)
219//OclIsUndefined-Handled by multiplicity
220@Constraint(message = "inv20", severity = "error", key = {lur})
221pattern inv20(lur : Legal_Union_Record) {
222 Legal_Union_Record.individual_A(lur, iA);
223 Legal_Union_Record.individual_B(lur, iB);
224 iA == iB;
225}
226//inv21-MultiplicityChecked
227//inv22-MultiplicityChecked
228//inv23-MultiplicityChecked
229//inv24-MultiplicityChecked
230//inv25-MultiplicityChecked
231//inv26-MultiplicityChanged
232//inv27-dupOfInv24
233//inv28-dubOfInv23
234//inv29-MultiplicityChanged
235//inv30-AttributeRemoved
236//inv31-AttributeRemoved
237//inv32-AttributeRemoved
238
239//inv33-attribute-handled by multiplicity
240@Constraint(message = "inv33", severity = "error", key = {p})
241pattern inv33(p : Physical_Person) {
242 Physical_Person.birth_year(p, by);
243 check(2018-by < 0);
244} or {
245 Physical_Person.birth_year(p, by);
246 check(2018-by > 100);
247}
248
249//inv34-attribute-handled by multiplicity
250@Constraint(message = "inv34", severity = "error", key = {p})
251pattern inv34(p : Physical_Person) {
252 Physical_Person.birth_month(p, birthMonth);
253 check(birthMonth < 1);
254} or {
255 Physical_Person.birth_month(p, birthMonth);
256 check(birthMonth > 12);
257}
258
259//inv35-attribute-handled by multiplicity
260@Constraint(message = "inv35", severity = "error", key = {p})
261pattern inv35(p : Physical_Person) {
262 Physical_Person.birth_day(p, birthDay);
263 check(birthDay < 1);
264} or {
265 Physical_Person.birth_day(p, birthDay);
266 check(birthDay > 28);
267}
268
269//inv36-AttributeRemoved
270//inv37-AttributeRemoved
271//inv38-AttributeRemoved
272//inv39-AttributeRemoved
273//inv40-AttributeRemoved
274//inv41-AttributeRemoved
275//inv42-AttributeRemoved
276//inv43-AttributeRemoved
277//inv44-AttributeRemoved
278//inv45-AttributeRemoved
279//inv46-AttributeRemoved
280
281//inv47-attributes-handled by multiplicity
282@Constraint(message = "inv47", severity = "error", key = {lur})
283pattern inv47(lur : Legal_Union_Record) {
284 Legal_Union_Record.end_year(lur, endY);
285 Legal_Union_Record.start_year(lur, startY);
286 neg find x_inv47(lur);
287 check(startY >= endY);
288}
289pattern x_inv47(lur : Legal_Union_Record) {
290 Legal_Union_Record.separation_cause(lur, ::NONE);
291 Legal_Union_Record.end_year(lur, -1);
292}
293
294//inv48-attributes-handled by multiplicity
295@Constraint(message = "inv48", severity = "error", key = {p})
296pattern inv48(p : Physical_Person) {
297 neg find x_inv48_notDis(p);
298 neg find x_inv48_Dis(p);
299}
300pattern x_inv48_notDis(p : Physical_Person) {
301 Physical_Person.disability_type(p, ::NONE);
302 Physical_Person.disability_percentage(p, 0.0);
303}
304pattern x_inv48_Dis(p : Physical_Person) {
305 neg find x_inv48_3(p);
306 Physical_Person.disability_percentage(p, disPer);
307 check(disPer > 0.0);
308 check(disPer <= 1.0);
309}
310pattern x_inv48_3(p : Physical_Person) {
311 Physical_Person.disability_type(p, ::NONE);
312}
313
314//inv49-OclKindOf-handled by multiplicity
315@Constraint(message = "inv49", severity = "error", key = {lur})
316pattern inv49(lur : Legal_Union_Record) {
317 neg find x_inv49_1(lur);
318}
319pattern x_inv49_1(lur : Legal_Union_Record) {
320 Legal_Union_Record.individual_A(lur, iA);
321 Legal_Union_Record.individual_B(lur, iB);
322 Tax_Payer(iA);
323 Physical_Person(iB);
324 neg find x_inv49_2(iB);
325 iA != iB;
326}
327pattern x_inv49_2(iB: Dependent) {
328 Dependent(iB);
329}
330
331//inv50-MultiplicityChecked
332//inv51-MultiplicityChecked
333//inv52-MultiplicityChecked
334//inv53-MultiplicityChecked \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin
new file mode 100644
index 00000000..325fee79
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.RunGenerator.xtendbin
Binary files differ
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore
new file mode 100644
index 00000000..bd13352d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/bin/run/.gitignore
@@ -0,0 +1,2 @@
1/.GenerateScenarios.java._trace
2/.checkQueries.java._trace
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/build.properties b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/build.properties
new file mode 100644
index 00000000..88d3713e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/build.properties
@@ -0,0 +1,6 @@
1bin.includes = META-INF/,\
2 .,\
3 plugin.xml
4source.. = src/,\
5 src-gen/
6output.. = bin/
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/ocl/queries.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/ocl/queries.ocl
new file mode 100644
index 00000000..de770240
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/ocl/queries.ocl
@@ -0,0 +1,14 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/original.PLEDGE.case.studies/model/CD_Case_A.uml'
2--e.g., import 'file:/Users/User_X/CD_Case_A.uml'
3
4package Taxation
5
6context Income inv x:
7 let involved_details:Set(Income_Detail)=self.details->select(i:Income_Detail| i.is_worked=true) in
8 involved_details.amount->sum()
9
10context Expense inv inv11:
11let max:Real = if((self.income.income_amount / 2)>50) then self.income.income_amount / 2 else 50 endif in
12self.declared_amount >= 50 and self.declared_amount <= max
13
14endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/plugin.xml b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/plugin.xml
new file mode 100644
index 00000000..63aa0b02
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/plugin.xml
@@ -0,0 +1,42 @@
1<?xml version="1.0" encoding="UTF-8"?><plugin>
2 <extension id="queries.Case_study_A" point="org.eclipse.viatra.query.runtime.queryspecification">
3 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:queries.Case_study_A" id="queries.Case_study_A">
4 <query-specification fqn="queries.inv03"/>
5 <query-specification fqn="queries.x_inv03_eligAll"/>
6 <query-specification fqn="queries.x_inv03_hasAll"/>
7 <query-specification fqn="queries.inv05"/>
8 <query-specification fqn="queries.x_inv05_inRange"/>
9 <query-specification fqn="queries.inv06"/>
10 <query-specification fqn="queries.inv07"/>
11 <query-specification fqn="queries.inv08"/>
12 <query-specification fqn="queries.x_inv08_notEI"/>
13 <query-specification fqn="queries.x_inv08_noType"/>
14 <query-specification fqn="queries.x_inv08_inRange"/>
15 <query-specification fqn="queries.inv10"/>
16 <query-specification fqn="queries.inv11"/>
17 <query-specification fqn="queries.x_inv11_incOver100"/>
18 <query-specification fqn="queries.x_inv11_incNotOver100"/>
19 <query-specification fqn="queries.inv12"/>
20 <query-specification fqn="queries.x_inv12_notNonRes"/>
21 <query-specification fqn="queries.x_inv12_notZZ"/>
22 <query-specification fqn="queries.inv13"/>
23 <query-specification fqn="queries.x_inv13"/>
24 <query-specification fqn="queries.inv15"/>
25 <query-specification fqn="queries.x_inv15"/>
26 <query-specification fqn="queries.inv17"/>
27 <query-specification fqn="queries.inv20"/>
28 <query-specification fqn="queries.inv33"/>
29 <query-specification fqn="queries.inv34"/>
30 <query-specification fqn="queries.inv35"/>
31 <query-specification fqn="queries.inv47"/>
32 <query-specification fqn="queries.x_inv47"/>
33 <query-specification fqn="queries.inv48"/>
34 <query-specification fqn="queries.x_inv48_notDis"/>
35 <query-specification fqn="queries.x_inv48_Dis"/>
36 <query-specification fqn="queries.x_inv48_3"/>
37 <query-specification fqn="queries.inv49"/>
38 <query-specification fqn="queries.x_inv49_1"/>
39 <query-specification fqn="queries.x_inv49_2"/>
40 </group>
41 </extension>
42</plugin>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore
new file mode 100644
index 00000000..16afa8c0
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/.gitignore
@@ -0,0 +1,75 @@
1/.Inv17.java._trace
2/.Inv20.java._trace
3/.Inv33_con.java._trace
4/.Inv34.java._trace
5/.Inv35.java._trace
6/.Inv47.java._trace
7/.Inv48.java._trace
8/.Inv48_helper.java._trace
9/.Case_study_A.java._trace
10/.Inv49.java._trace
11/.Inv49_con.java._trace
12/.Inv49_helper.java._trace
13/.H_inv49.java._trace
14/.Ocl_inv49.java._trace
15/.Vql_inv49.java._trace
16/.Vql_inv492.java._trace
17/.H1_inv48.java._trace
18/.H2_inv48.java._trace
19/.Vql_inv48.java._trace
20/.H3_inv48.java._trace
21/.H1_inv49.java._trace
22/.H2_inv49.java._trace
23/.H_inv47.java._trace
24/.Inv35test.java._trace
25/.Inv33.java._trace
26/.X.java._trace
27/.H_inv16_moreThan1.java._trace
28/.H_inv48_1.java._trace
29/.H_inv48_2.java._trace
30/.H_inv48_3.java._trace
31/.H_inv49_1.java._trace
32/.H_inv49_2.java._trace
33/.Inv16.java._trace
34/.Inv15.java._trace
35/.H_inv13.java._trace
36/.Inv13.java._trace
37/.Inv12.java._trace
38/.H_inv12_notNonRes.java._trace
39/.H_inv12_notZZ.java._trace
40/.H_inv11_incOver100.java._trace
41/.Inv11.java._trace
42/.H_inv11_incNotOver100.java._trace
43/.H_inv8_notEI.java._trace
44/.Inv8.java._trace
45/.H_inv08_notEI.java._trace
46/.Inv08.java._trace
47/.H_inv08_inRange.java._trace
48/.X_inv08_inRange.java._trace
49/.X_inv08_notEI.java._trace
50/.X_inv11_incNotOver100.java._trace
51/.X_inv11_incOver100.java._trace
52/.X_inv12_notNonRes.java._trace
53/.X_inv12_notZZ.java._trace
54/.X_inv13.java._trace
55/.X_inv47.java._trace
56/.X_inv48_1.java._trace
57/.X_inv48_2.java._trace
58/.X_inv48_3.java._trace
59/.X_inv49_1.java._trace
60/.X_inv49_2.java._trace
61/.X_inv48_Dis.java._trace
62/.X_inv48_notDis.java._trace
63/.X_inv08_noType.java._trace
64/.X_inv08_invalidType.java._trace
65/.Inv06.java._trace
66/.X_inv06_inRange.java._trace
67/.Inv05.java._trace
68/.X_inv05_inRange.java._trace
69/.Inv03.java._trace
70/.X_inv03_noAll.java._trace
71/.X_inv03_eligAll.java._trace
72/.X_inv03_hasAll.java._trace
73/.Inv07.java._trace
74/.Inv10.java._trace
75/.X_inv15.java._trace
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java
new file mode 100644
index 00000000..a8ab2996
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Case_study_A.java
@@ -0,0 +1,438 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
7import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup;
8import queries.Inv03;
9import queries.Inv05;
10import queries.Inv06;
11import queries.Inv07;
12import queries.Inv08;
13import queries.Inv10;
14import queries.Inv11;
15import queries.Inv12;
16import queries.Inv13;
17import queries.Inv15;
18import queries.Inv17;
19import queries.Inv20;
20import queries.Inv33;
21import queries.Inv34;
22import queries.Inv35;
23import queries.Inv47;
24import queries.Inv48;
25import queries.Inv49;
26import queries.X_inv03_eligAll;
27import queries.X_inv03_hasAll;
28import queries.X_inv05_inRange;
29import queries.X_inv08_inRange;
30import queries.X_inv08_noType;
31import queries.X_inv08_notEI;
32import queries.X_inv11_incNotOver100;
33import queries.X_inv11_incOver100;
34import queries.X_inv12_notNonRes;
35import queries.X_inv12_notZZ;
36import queries.X_inv13;
37import queries.X_inv15;
38import queries.X_inv47;
39import queries.X_inv48_3;
40import queries.X_inv48_Dis;
41import queries.X_inv48_notDis;
42import queries.X_inv49_1;
43import queries.X_inv49_2;
44
45/**
46 * A pattern group formed of all public patterns defined in case_study_A.vql.
47 *
48 * <p>Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare
49 * a VIATRA Query engine for matching all patterns originally defined in file case_study_A.vql,
50 * in order to achieve better performance than one-by-one on-demand matcher initialization.
51 *
52 * <p> From package queries, the group contains the definition of the following patterns: <ul>
53 * <li>inv03</li>
54 * <li>x_inv03_eligAll</li>
55 * <li>x_inv03_hasAll</li>
56 * <li>inv05</li>
57 * <li>x_inv05_inRange</li>
58 * <li>inv06</li>
59 * <li>inv07</li>
60 * <li>inv08</li>
61 * <li>x_inv08_notEI</li>
62 * <li>x_inv08_noType</li>
63 * <li>x_inv08_inRange</li>
64 * <li>inv10</li>
65 * <li>inv11</li>
66 * <li>x_inv11_incOver100</li>
67 * <li>x_inv11_incNotOver100</li>
68 * <li>inv12</li>
69 * <li>x_inv12_notNonRes</li>
70 * <li>x_inv12_notZZ</li>
71 * <li>inv13</li>
72 * <li>x_inv13</li>
73 * <li>inv15</li>
74 * <li>x_inv15</li>
75 * <li>inv17</li>
76 * <li>inv20</li>
77 * <li>inv33</li>
78 * <li>inv34</li>
79 * <li>inv35</li>
80 * <li>inv47</li>
81 * <li>x_inv47</li>
82 * <li>inv48</li>
83 * <li>x_inv48_notDis</li>
84 * <li>x_inv48_Dis</li>
85 * <li>x_inv48_3</li>
86 * <li>inv49</li>
87 * <li>x_inv49_1</li>
88 * <li>x_inv49_2</li>
89 * </ul>
90 *
91 * @see IQueryGroup
92 *
93 */
94@SuppressWarnings("all")
95public final class Case_study_A extends BaseGeneratedPatternGroup {
96 /**
97 * Access the pattern group.
98 *
99 * @return the singleton instance of the group
100 * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications
101 *
102 */
103 public static Case_study_A instance() {
104 if (INSTANCE == null) {
105 INSTANCE = new Case_study_A();
106 }
107 return INSTANCE;
108 }
109
110 private static Case_study_A INSTANCE;
111
112 private Case_study_A() {
113 querySpecifications.add(Inv03.instance());
114 querySpecifications.add(X_inv03_eligAll.instance());
115 querySpecifications.add(X_inv03_hasAll.instance());
116 querySpecifications.add(Inv05.instance());
117 querySpecifications.add(X_inv05_inRange.instance());
118 querySpecifications.add(Inv06.instance());
119 querySpecifications.add(Inv07.instance());
120 querySpecifications.add(Inv08.instance());
121 querySpecifications.add(X_inv08_notEI.instance());
122 querySpecifications.add(X_inv08_noType.instance());
123 querySpecifications.add(X_inv08_inRange.instance());
124 querySpecifications.add(Inv10.instance());
125 querySpecifications.add(Inv11.instance());
126 querySpecifications.add(X_inv11_incOver100.instance());
127 querySpecifications.add(X_inv11_incNotOver100.instance());
128 querySpecifications.add(Inv12.instance());
129 querySpecifications.add(X_inv12_notNonRes.instance());
130 querySpecifications.add(X_inv12_notZZ.instance());
131 querySpecifications.add(Inv13.instance());
132 querySpecifications.add(X_inv13.instance());
133 querySpecifications.add(Inv15.instance());
134 querySpecifications.add(X_inv15.instance());
135 querySpecifications.add(Inv17.instance());
136 querySpecifications.add(Inv20.instance());
137 querySpecifications.add(Inv33.instance());
138 querySpecifications.add(Inv34.instance());
139 querySpecifications.add(Inv35.instance());
140 querySpecifications.add(Inv47.instance());
141 querySpecifications.add(X_inv47.instance());
142 querySpecifications.add(Inv48.instance());
143 querySpecifications.add(X_inv48_notDis.instance());
144 querySpecifications.add(X_inv48_Dis.instance());
145 querySpecifications.add(X_inv48_3.instance());
146 querySpecifications.add(Inv49.instance());
147 querySpecifications.add(X_inv49_1.instance());
148 querySpecifications.add(X_inv49_2.instance());
149 }
150
151 public Inv03 getInv03() {
152 return Inv03.instance();
153 }
154
155 public Inv03.Matcher getInv03(final ViatraQueryEngine engine) {
156 return Inv03.Matcher.on(engine);
157 }
158
159 public X_inv03_eligAll getX_inv03_eligAll() {
160 return X_inv03_eligAll.instance();
161 }
162
163 public X_inv03_eligAll.Matcher getX_inv03_eligAll(final ViatraQueryEngine engine) {
164 return X_inv03_eligAll.Matcher.on(engine);
165 }
166
167 public X_inv03_hasAll getX_inv03_hasAll() {
168 return X_inv03_hasAll.instance();
169 }
170
171 public X_inv03_hasAll.Matcher getX_inv03_hasAll(final ViatraQueryEngine engine) {
172 return X_inv03_hasAll.Matcher.on(engine);
173 }
174
175 public Inv05 getInv05() {
176 return Inv05.instance();
177 }
178
179 public Inv05.Matcher getInv05(final ViatraQueryEngine engine) {
180 return Inv05.Matcher.on(engine);
181 }
182
183 public X_inv05_inRange getX_inv05_inRange() {
184 return X_inv05_inRange.instance();
185 }
186
187 public X_inv05_inRange.Matcher getX_inv05_inRange(final ViatraQueryEngine engine) {
188 return X_inv05_inRange.Matcher.on(engine);
189 }
190
191 public Inv06 getInv06() {
192 return Inv06.instance();
193 }
194
195 public Inv06.Matcher getInv06(final ViatraQueryEngine engine) {
196 return Inv06.Matcher.on(engine);
197 }
198
199 public Inv07 getInv07() {
200 return Inv07.instance();
201 }
202
203 public Inv07.Matcher getInv07(final ViatraQueryEngine engine) {
204 return Inv07.Matcher.on(engine);
205 }
206
207 public Inv08 getInv08() {
208 return Inv08.instance();
209 }
210
211 public Inv08.Matcher getInv08(final ViatraQueryEngine engine) {
212 return Inv08.Matcher.on(engine);
213 }
214
215 public X_inv08_notEI getX_inv08_notEI() {
216 return X_inv08_notEI.instance();
217 }
218
219 public X_inv08_notEI.Matcher getX_inv08_notEI(final ViatraQueryEngine engine) {
220 return X_inv08_notEI.Matcher.on(engine);
221 }
222
223 public X_inv08_noType getX_inv08_noType() {
224 return X_inv08_noType.instance();
225 }
226
227 public X_inv08_noType.Matcher getX_inv08_noType(final ViatraQueryEngine engine) {
228 return X_inv08_noType.Matcher.on(engine);
229 }
230
231 public X_inv08_inRange getX_inv08_inRange() {
232 return X_inv08_inRange.instance();
233 }
234
235 public X_inv08_inRange.Matcher getX_inv08_inRange(final ViatraQueryEngine engine) {
236 return X_inv08_inRange.Matcher.on(engine);
237 }
238
239 public Inv10 getInv10() {
240 return Inv10.instance();
241 }
242
243 public Inv10.Matcher getInv10(final ViatraQueryEngine engine) {
244 return Inv10.Matcher.on(engine);
245 }
246
247 public Inv11 getInv11() {
248 return Inv11.instance();
249 }
250
251 public Inv11.Matcher getInv11(final ViatraQueryEngine engine) {
252 return Inv11.Matcher.on(engine);
253 }
254
255 public X_inv11_incOver100 getX_inv11_incOver100() {
256 return X_inv11_incOver100.instance();
257 }
258
259 public X_inv11_incOver100.Matcher getX_inv11_incOver100(final ViatraQueryEngine engine) {
260 return X_inv11_incOver100.Matcher.on(engine);
261 }
262
263 public X_inv11_incNotOver100 getX_inv11_incNotOver100() {
264 return X_inv11_incNotOver100.instance();
265 }
266
267 public X_inv11_incNotOver100.Matcher getX_inv11_incNotOver100(final ViatraQueryEngine engine) {
268 return X_inv11_incNotOver100.Matcher.on(engine);
269 }
270
271 public Inv12 getInv12() {
272 return Inv12.instance();
273 }
274
275 public Inv12.Matcher getInv12(final ViatraQueryEngine engine) {
276 return Inv12.Matcher.on(engine);
277 }
278
279 public X_inv12_notNonRes getX_inv12_notNonRes() {
280 return X_inv12_notNonRes.instance();
281 }
282
283 public X_inv12_notNonRes.Matcher getX_inv12_notNonRes(final ViatraQueryEngine engine) {
284 return X_inv12_notNonRes.Matcher.on(engine);
285 }
286
287 public X_inv12_notZZ getX_inv12_notZZ() {
288 return X_inv12_notZZ.instance();
289 }
290
291 public X_inv12_notZZ.Matcher getX_inv12_notZZ(final ViatraQueryEngine engine) {
292 return X_inv12_notZZ.Matcher.on(engine);
293 }
294
295 public Inv13 getInv13() {
296 return Inv13.instance();
297 }
298
299 public Inv13.Matcher getInv13(final ViatraQueryEngine engine) {
300 return Inv13.Matcher.on(engine);
301 }
302
303 public X_inv13 getX_inv13() {
304 return X_inv13.instance();
305 }
306
307 public X_inv13.Matcher getX_inv13(final ViatraQueryEngine engine) {
308 return X_inv13.Matcher.on(engine);
309 }
310
311 public Inv15 getInv15() {
312 return Inv15.instance();
313 }
314
315 public Inv15.Matcher getInv15(final ViatraQueryEngine engine) {
316 return Inv15.Matcher.on(engine);
317 }
318
319 public X_inv15 getX_inv15() {
320 return X_inv15.instance();
321 }
322
323 public X_inv15.Matcher getX_inv15(final ViatraQueryEngine engine) {
324 return X_inv15.Matcher.on(engine);
325 }
326
327 public Inv17 getInv17() {
328 return Inv17.instance();
329 }
330
331 public Inv17.Matcher getInv17(final ViatraQueryEngine engine) {
332 return Inv17.Matcher.on(engine);
333 }
334
335 public Inv20 getInv20() {
336 return Inv20.instance();
337 }
338
339 public Inv20.Matcher getInv20(final ViatraQueryEngine engine) {
340 return Inv20.Matcher.on(engine);
341 }
342
343 public Inv33 getInv33() {
344 return Inv33.instance();
345 }
346
347 public Inv33.Matcher getInv33(final ViatraQueryEngine engine) {
348 return Inv33.Matcher.on(engine);
349 }
350
351 public Inv34 getInv34() {
352 return Inv34.instance();
353 }
354
355 public Inv34.Matcher getInv34(final ViatraQueryEngine engine) {
356 return Inv34.Matcher.on(engine);
357 }
358
359 public Inv35 getInv35() {
360 return Inv35.instance();
361 }
362
363 public Inv35.Matcher getInv35(final ViatraQueryEngine engine) {
364 return Inv35.Matcher.on(engine);
365 }
366
367 public Inv47 getInv47() {
368 return Inv47.instance();
369 }
370
371 public Inv47.Matcher getInv47(final ViatraQueryEngine engine) {
372 return Inv47.Matcher.on(engine);
373 }
374
375 public X_inv47 getX_inv47() {
376 return X_inv47.instance();
377 }
378
379 public X_inv47.Matcher getX_inv47(final ViatraQueryEngine engine) {
380 return X_inv47.Matcher.on(engine);
381 }
382
383 public Inv48 getInv48() {
384 return Inv48.instance();
385 }
386
387 public Inv48.Matcher getInv48(final ViatraQueryEngine engine) {
388 return Inv48.Matcher.on(engine);
389 }
390
391 public X_inv48_notDis getX_inv48_notDis() {
392 return X_inv48_notDis.instance();
393 }
394
395 public X_inv48_notDis.Matcher getX_inv48_notDis(final ViatraQueryEngine engine) {
396 return X_inv48_notDis.Matcher.on(engine);
397 }
398
399 public X_inv48_Dis getX_inv48_Dis() {
400 return X_inv48_Dis.instance();
401 }
402
403 public X_inv48_Dis.Matcher getX_inv48_Dis(final ViatraQueryEngine engine) {
404 return X_inv48_Dis.Matcher.on(engine);
405 }
406
407 public X_inv48_3 getX_inv48_3() {
408 return X_inv48_3.instance();
409 }
410
411 public X_inv48_3.Matcher getX_inv48_3(final ViatraQueryEngine engine) {
412 return X_inv48_3.Matcher.on(engine);
413 }
414
415 public Inv49 getInv49() {
416 return Inv49.instance();
417 }
418
419 public Inv49.Matcher getInv49(final ViatraQueryEngine engine) {
420 return Inv49.Matcher.on(engine);
421 }
422
423 public X_inv49_1 getX_inv49_1() {
424 return X_inv49_1.instance();
425 }
426
427 public X_inv49_1.Matcher getX_inv49_1(final ViatraQueryEngine engine) {
428 return X_inv49_1.Matcher.on(engine);
429 }
430
431 public X_inv49_2 getX_inv49_2() {
432 return X_inv49_2.instance();
433 }
434
435 public X_inv49_2.Matcher getX_inv49_2(final ViatraQueryEngine engine) {
436 return X_inv49_2.Matcher.on(engine);
437 }
438}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java
new file mode 100644
index 00000000..cfe496bd
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv03.java
@@ -0,0 +1,652 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Dependent;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
41import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
42import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
43import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
44import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
45import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
46import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
47import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
48import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
49import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
50import queries.X_inv03_eligAll;
51import queries.X_inv03_hasAll;
52
53/**
54 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
55 *
56 * <p>Original source:
57 * <code><pre>
58 * //AttributeRemoved -{@literal >} DF
59 *
60 * //inv1-External_Allowance.amount is a derived feature (TODOcheck)
61 * //inv2-Tax_Card.income.taxPayer.taxesDue is a derived feature (TODOcheck)
62 *
63 * //inv3-multiplicity adjusted
64 * {@literal @}Constraint(message = "inv03", severity = "error", key = {dep})
65 * pattern inv03(dep : Dependent) {
66 * find x_inv03_eligAll(dep);
67 * neg find x_inv03_hasAll(dep);
68 * } or {
69 * Dependent.birth_year(dep, by);
70 * check(2018-by {@literal >} 21);
71 * Dependent.continued_studies(dep, false);
72 * Dependent.allowances(dep, _);
73 * }
74 * </pre></code>
75 *
76 * @see Matcher
77 * @see Match
78 *
79 */
80@SuppressWarnings("all")
81public final class Inv03 extends BaseGeneratedEMFQuerySpecification<Inv03.Matcher> {
82 /**
83 * Pattern-specific match representation of the queries.inv03 pattern,
84 * to be used in conjunction with {@link Matcher}.
85 *
86 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
87 * Each instance is a (possibly partial) substitution of pattern parameters,
88 * usable to represent a match of the pattern in the result of a query,
89 * or to specify the bound (fixed) input parameters when issuing a query.
90 *
91 * @see Matcher
92 *
93 */
94 public static abstract class Match extends BasePatternMatch {
95 private Dependent fDep;
96
97 private static List<String> parameterNames = makeImmutableList("dep");
98
99 private Match(final Dependent pDep) {
100 this.fDep = pDep;
101 }
102
103 @Override
104 public Object get(final String parameterName) {
105 switch(parameterName) {
106 case "dep": return this.fDep;
107 default: return null;
108 }
109 }
110
111 @Override
112 public Object get(final int index) {
113 switch(index) {
114 case 0: return this.fDep;
115 default: return null;
116 }
117 }
118
119 public Dependent getDep() {
120 return this.fDep;
121 }
122
123 @Override
124 public boolean set(final String parameterName, final Object newValue) {
125 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
126 if ("dep".equals(parameterName) ) {
127 this.fDep = (Dependent) newValue;
128 return true;
129 }
130 return false;
131 }
132
133 public void setDep(final Dependent pDep) {
134 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
135 this.fDep = pDep;
136 }
137
138 @Override
139 public String patternName() {
140 return "queries.inv03";
141 }
142
143 @Override
144 public List<String> parameterNames() {
145 return Inv03.Match.parameterNames;
146 }
147
148 @Override
149 public Object[] toArray() {
150 return new Object[]{fDep};
151 }
152
153 @Override
154 public Inv03.Match toImmutable() {
155 return isMutable() ? newMatch(fDep) : this;
156 }
157
158 @Override
159 public String prettyPrint() {
160 StringBuilder result = new StringBuilder();
161 result.append("\"dep\"=" + prettyPrintValue(fDep));
162 return result.toString();
163 }
164
165 @Override
166 public int hashCode() {
167 return Objects.hash(fDep);
168 }
169
170 @Override
171 public boolean equals(final Object obj) {
172 if (this == obj)
173 return true;
174 if (obj == null) {
175 return false;
176 }
177 if ((obj instanceof Inv03.Match)) {
178 Inv03.Match other = (Inv03.Match) obj;
179 return Objects.equals(fDep, other.fDep);
180 } else {
181 // this should be infrequent
182 if (!(obj instanceof IPatternMatch)) {
183 return false;
184 }
185 IPatternMatch otherSig = (IPatternMatch) obj;
186 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
187 }
188 }
189
190 @Override
191 public Inv03 specification() {
192 return Inv03.instance();
193 }
194
195 /**
196 * Returns an empty, mutable match.
197 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
198 *
199 * @return the empty match.
200 *
201 */
202 public static Inv03.Match newEmptyMatch() {
203 return new Mutable(null);
204 }
205
206 /**
207 * Returns a mutable (partial) match.
208 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
209 *
210 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
211 * @return the new, mutable (partial) match object.
212 *
213 */
214 public static Inv03.Match newMutableMatch(final Dependent pDep) {
215 return new Mutable(pDep);
216 }
217
218 /**
219 * Returns a new (partial) match.
220 * This can be used e.g. to call the matcher with a partial match.
221 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
222 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
223 * @return the (partial) match object.
224 *
225 */
226 public static Inv03.Match newMatch(final Dependent pDep) {
227 return new Immutable(pDep);
228 }
229
230 private static final class Mutable extends Inv03.Match {
231 Mutable(final Dependent pDep) {
232 super(pDep);
233 }
234
235 @Override
236 public boolean isMutable() {
237 return true;
238 }
239 }
240
241 private static final class Immutable extends Inv03.Match {
242 Immutable(final Dependent pDep) {
243 super(pDep);
244 }
245
246 @Override
247 public boolean isMutable() {
248 return false;
249 }
250 }
251 }
252
253 /**
254 * Generated pattern matcher API of the queries.inv03 pattern,
255 * providing pattern-specific query methods.
256 *
257 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
258 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
259 *
260 * <p>Matches of the pattern will be represented as {@link Match}.
261 *
262 * <p>Original source:
263 * <code><pre>
264 * //AttributeRemoved -{@literal >} DF
265 *
266 * //inv1-External_Allowance.amount is a derived feature (TODOcheck)
267 * //inv2-Tax_Card.income.taxPayer.taxesDue is a derived feature (TODOcheck)
268 *
269 * //inv3-multiplicity adjusted
270 * {@literal @}Constraint(message = "inv03", severity = "error", key = {dep})
271 * pattern inv03(dep : Dependent) {
272 * find x_inv03_eligAll(dep);
273 * neg find x_inv03_hasAll(dep);
274 * } or {
275 * Dependent.birth_year(dep, by);
276 * check(2018-by {@literal >} 21);
277 * Dependent.continued_studies(dep, false);
278 * Dependent.allowances(dep, _);
279 * }
280 * </pre></code>
281 *
282 * @see Match
283 * @see Inv03
284 *
285 */
286 public static class Matcher extends BaseMatcher<Inv03.Match> {
287 /**
288 * Initializes the pattern matcher within an existing VIATRA Query engine.
289 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
290 *
291 * @param engine the existing VIATRA Query engine in which this matcher will be created.
292 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
293 *
294 */
295 public static Inv03.Matcher on(final ViatraQueryEngine engine) {
296 // check if matcher already exists
297 Matcher matcher = engine.getExistingMatcher(querySpecification());
298 if (matcher == null) {
299 matcher = (Matcher)engine.getMatcher(querySpecification());
300 }
301 return matcher;
302 }
303
304 /**
305 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
306 * @return an initialized matcher
307 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
308 *
309 */
310 public static Inv03.Matcher create() {
311 return new Matcher();
312 }
313
314 private static final int POSITION_DEP = 0;
315
316 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv03.Matcher.class);
317
318 /**
319 * Initializes the pattern matcher within an existing VIATRA Query engine.
320 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
321 *
322 * @param engine the existing VIATRA Query engine in which this matcher will be created.
323 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
324 *
325 */
326 private Matcher() {
327 super(querySpecification());
328 }
329
330 /**
331 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
332 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
333 * @return matches represented as a Match object.
334 *
335 */
336 public Collection<Inv03.Match> getAllMatches(final Dependent pDep) {
337 return rawStreamAllMatches(new Object[]{pDep}).collect(Collectors.toSet());
338 }
339
340 /**
341 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
342 * </p>
343 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
344 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
345 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
346 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
347 * @return a stream of matches represented as a Match object.
348 *
349 */
350 public Stream<Inv03.Match> streamAllMatches(final Dependent pDep) {
351 return rawStreamAllMatches(new Object[]{pDep});
352 }
353
354 /**
355 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
356 * Neither determinism nor randomness of selection is guaranteed.
357 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
358 * @return a match represented as a Match object, or null if no match is found.
359 *
360 */
361 public Optional<Inv03.Match> getOneArbitraryMatch(final Dependent pDep) {
362 return rawGetOneArbitraryMatch(new Object[]{pDep});
363 }
364
365 /**
366 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
367 * under any possible substitution of the unspecified parameters (if any).
368 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
369 * @return true if the input is a valid (partial) match of the pattern.
370 *
371 */
372 public boolean hasMatch(final Dependent pDep) {
373 return rawHasMatch(new Object[]{pDep});
374 }
375
376 /**
377 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
378 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
379 * @return the number of pattern matches found.
380 *
381 */
382 public int countMatches(final Dependent pDep) {
383 return rawCountMatches(new Object[]{pDep});
384 }
385
386 /**
387 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
388 * Neither determinism nor randomness of selection is guaranteed.
389 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
390 * @param processor the action that will process the selected match.
391 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
392 *
393 */
394 public boolean forOneArbitraryMatch(final Dependent pDep, final Consumer<? super Inv03.Match> processor) {
395 return rawForOneArbitraryMatch(new Object[]{pDep}, processor);
396 }
397
398 /**
399 * Returns a new (partial) match.
400 * This can be used e.g. to call the matcher with a partial match.
401 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
402 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
403 * @return the (partial) match object.
404 *
405 */
406 public Inv03.Match newMatch(final Dependent pDep) {
407 return Inv03.Match.newMatch(pDep);
408 }
409
410 /**
411 * Retrieve the set of values that occur in matches for dep.
412 * @return the Set of all values or empty set if there are no matches
413 *
414 */
415 protected Stream<Dependent> rawStreamAllValuesOfdep(final Object[] parameters) {
416 return rawStreamAllValues(POSITION_DEP, parameters).map(Dependent.class::cast);
417 }
418
419 /**
420 * Retrieve the set of values that occur in matches for dep.
421 * @return the Set of all values or empty set if there are no matches
422 *
423 */
424 public Set<Dependent> getAllValuesOfdep() {
425 return rawStreamAllValuesOfdep(emptyArray()).collect(Collectors.toSet());
426 }
427
428 /**
429 * Retrieve the set of values that occur in matches for dep.
430 * @return the Set of all values or empty set if there are no matches
431 *
432 */
433 public Stream<Dependent> streamAllValuesOfdep() {
434 return rawStreamAllValuesOfdep(emptyArray());
435 }
436
437 @Override
438 protected Inv03.Match tupleToMatch(final Tuple t) {
439 try {
440 return Inv03.Match.newMatch((Dependent) t.get(POSITION_DEP));
441 } catch(ClassCastException e) {
442 LOGGER.error("Element(s) in tuple not properly typed!",e);
443 return null;
444 }
445 }
446
447 @Override
448 protected Inv03.Match arrayToMatch(final Object[] match) {
449 try {
450 return Inv03.Match.newMatch((Dependent) match[POSITION_DEP]);
451 } catch(ClassCastException e) {
452 LOGGER.error("Element(s) in array not properly typed!",e);
453 return null;
454 }
455 }
456
457 @Override
458 protected Inv03.Match arrayToMatchMutable(final Object[] match) {
459 try {
460 return Inv03.Match.newMutableMatch((Dependent) match[POSITION_DEP]);
461 } catch(ClassCastException e) {
462 LOGGER.error("Element(s) in array not properly typed!",e);
463 return null;
464 }
465 }
466
467 /**
468 * @return the singleton instance of the query specification of this pattern
469 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
470 *
471 */
472 public static IQuerySpecification<Inv03.Matcher> querySpecification() {
473 return Inv03.instance();
474 }
475 }
476
477 private Inv03() {
478 super(GeneratedPQuery.INSTANCE);
479 }
480
481 /**
482 * @return the singleton instance of the query specification
483 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
484 *
485 */
486 public static Inv03 instance() {
487 try{
488 return LazyHolder.INSTANCE;
489 } catch (ExceptionInInitializerError err) {
490 throw processInitializerError(err);
491 }
492 }
493
494 @Override
495 protected Inv03.Matcher instantiate(final ViatraQueryEngine engine) {
496 return Inv03.Matcher.on(engine);
497 }
498
499 @Override
500 public Inv03.Matcher instantiate() {
501 return Inv03.Matcher.create();
502 }
503
504 @Override
505 public Inv03.Match newEmptyMatch() {
506 return Inv03.Match.newEmptyMatch();
507 }
508
509 @Override
510 public Inv03.Match newMatch(final Object... parameters) {
511 return Inv03.Match.newMatch((Taxation.Dependent) parameters[0]);
512 }
513
514 /**
515 * Inner class allowing the singleton instance of {@link Inv03} to be created
516 * <b>not</b> at the class load time of the outer class,
517 * but rather at the first call to {@link Inv03#instance()}.
518 *
519 * <p> This workaround is required e.g. to support recursion.
520 *
521 */
522 private static class LazyHolder {
523 private static final Inv03 INSTANCE = new Inv03();
524
525 /**
526 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
527 * This initialization order is required to support indirect recursion.
528 *
529 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
530 *
531 */
532 private static final Object STATIC_INITIALIZER = ensureInitialized();
533
534 public static Object ensureInitialized() {
535 INSTANCE.ensureInitializedInternal();
536 return null;
537 }
538 }
539
540 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
541 private static final Inv03.GeneratedPQuery INSTANCE = new GeneratedPQuery();
542
543 private final PParameter parameter_dep = new PParameter("dep", "Taxation.Dependent", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Dependent")), PParameterDirection.INOUT);
544
545 private final List<PParameter> parameters = Arrays.asList(parameter_dep);
546
547 private GeneratedPQuery() {
548 super(PVisibility.PUBLIC);
549 }
550
551 @Override
552 public String getFullyQualifiedName() {
553 return "queries.inv03";
554 }
555
556 @Override
557 public List<String> getParameterNames() {
558 return Arrays.asList("dep");
559 }
560
561 @Override
562 public List<PParameter> getParameters() {
563 return parameters;
564 }
565
566 @Override
567 public Set<PBody> doGetContainedBodies() {
568 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
569 Set<PBody> bodies = new LinkedHashSet<>();
570 {
571 PBody body = new PBody(this);
572 PVariable var_dep = body.getOrCreateVariableByName("dep");
573 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
574 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
575 new ExportedParameter(body, var_dep, parameter_dep)
576 ));
577 // find x_inv03_eligAll(dep)
578 new PositivePatternCall(body, Tuples.flatTupleOf(var_dep), X_inv03_eligAll.instance().getInternalQueryRepresentation());
579 // neg find x_inv03_hasAll(dep)
580 new NegativePatternCall(body, Tuples.flatTupleOf(var_dep), X_inv03_hasAll.instance().getInternalQueryRepresentation());
581 bodies.add(body);
582 }
583 {
584 PBody body = new PBody(this);
585 PVariable var_dep = body.getOrCreateVariableByName("dep");
586 PVariable var_by = body.getOrCreateVariableByName("by");
587 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
588 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
589 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
590 new ExportedParameter(body, var_dep, parameter_dep)
591 ));
592 // Dependent.birth_year(dep, by)
593 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
594 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
595 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
596 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
597 new Equality(body, var__virtual_0_, var_by);
598 // check(2018-by > 21)
599 new ExpressionEvaluation(body, new IExpressionEvaluator() {
600
601 @Override
602 public String getShortDescription() {
603 return "Expression evaluation from pattern inv03";
604 }
605
606 @Override
607 public Iterable<String> getInputParameterNames() {
608 return Arrays.asList("by");}
609
610 @Override
611 public Object evaluateExpression(IValueProvider provider) throws Exception {
612 Integer by = (Integer) provider.getValue("by");
613 return evaluateExpression_2_1(by);
614 }
615 }, null);
616 // Dependent.continued_studies(dep, false)
617 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
618 new ConstantValue(body, var__virtual_1_, false);
619 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
620 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
621 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Dependent", "continued_studies")));
622 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EBoolean")));
623 new Equality(body, var__virtual_2_, var__virtual_1_);
624 // Dependent.allowances(dep, _)
625 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
626 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
627 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Dependent", "allowances")));
628 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
629 new Equality(body, var__virtual_3_, var___0_);
630 bodies.add(body);
631 }
632 {
633 PAnnotation annotation = new PAnnotation("Constraint");
634 annotation.addAttribute("message", "inv03");
635 annotation.addAttribute("severity", "error");
636 annotation.addAttribute("key", Arrays.asList(new Object[] {
637 new ParameterReference("dep")
638 }));
639 addAnnotation(annotation);
640 }
641 return bodies;
642 }
643 }
644
645 private static boolean evaluateExpression_2_1(final Integer by) {
646 return ((2018 - (by).intValue()) > 21);
647 }
648
649 private static boolean evaluateExpression_2_2() {
650 return false;
651 }
652}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java
new file mode 100644
index 00000000..ba1f8552
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv05.java
@@ -0,0 +1,701 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
41import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
42import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
44import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
45import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
46import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
47import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
48import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
49import queries.X_inv05_inRange;
50import queries.X_inv08_noType;
51import queries.X_inv08_notEI;
52
53/**
54 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
55 *
56 * <p>Original source:
57 * <code><pre>
58 * //inv5 - oclIsTypeOf - handled here
59 * {@literal @}Constraint(message = "inv05", severity = "error", key = {inc})
60 * pattern inv05(inc : Income) {
61 * //income_type: None
62 * neg find x_inv08_noType(inc);
63 * Income.details.worked_days(inc, wd);
64 * check(wd != 0);
65 * } or {
66 * //income_type: Not Employment_Income
67 * Income.income_type(inc, type);
68 * neg find x_inv08_notEI(type);
69 * Income.details.worked_days(inc, wd);
70 * check(wd != 0);
71 * } or {
72 * //income_type: Employment Income
73 * Income.income_type(inc, type);
74 * Employment_Income(type);
75 * find x_inv05_inRange(inc);
76 * }
77 * </pre></code>
78 *
79 * @see Matcher
80 * @see Match
81 *
82 */
83@SuppressWarnings("all")
84public final class Inv05 extends BaseGeneratedEMFQuerySpecification<Inv05.Matcher> {
85 /**
86 * Pattern-specific match representation of the queries.inv05 pattern,
87 * to be used in conjunction with {@link Matcher}.
88 *
89 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
90 * Each instance is a (possibly partial) substitution of pattern parameters,
91 * usable to represent a match of the pattern in the result of a query,
92 * or to specify the bound (fixed) input parameters when issuing a query.
93 *
94 * @see Matcher
95 *
96 */
97 public static abstract class Match extends BasePatternMatch {
98 private Income fInc;
99
100 private static List<String> parameterNames = makeImmutableList("inc");
101
102 private Match(final Income pInc) {
103 this.fInc = pInc;
104 }
105
106 @Override
107 public Object get(final String parameterName) {
108 switch(parameterName) {
109 case "inc": return this.fInc;
110 default: return null;
111 }
112 }
113
114 @Override
115 public Object get(final int index) {
116 switch(index) {
117 case 0: return this.fInc;
118 default: return null;
119 }
120 }
121
122 public Income getInc() {
123 return this.fInc;
124 }
125
126 @Override
127 public boolean set(final String parameterName, final Object newValue) {
128 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
129 if ("inc".equals(parameterName) ) {
130 this.fInc = (Income) newValue;
131 return true;
132 }
133 return false;
134 }
135
136 public void setInc(final Income pInc) {
137 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
138 this.fInc = pInc;
139 }
140
141 @Override
142 public String patternName() {
143 return "queries.inv05";
144 }
145
146 @Override
147 public List<String> parameterNames() {
148 return Inv05.Match.parameterNames;
149 }
150
151 @Override
152 public Object[] toArray() {
153 return new Object[]{fInc};
154 }
155
156 @Override
157 public Inv05.Match toImmutable() {
158 return isMutable() ? newMatch(fInc) : this;
159 }
160
161 @Override
162 public String prettyPrint() {
163 StringBuilder result = new StringBuilder();
164 result.append("\"inc\"=" + prettyPrintValue(fInc));
165 return result.toString();
166 }
167
168 @Override
169 public int hashCode() {
170 return Objects.hash(fInc);
171 }
172
173 @Override
174 public boolean equals(final Object obj) {
175 if (this == obj)
176 return true;
177 if (obj == null) {
178 return false;
179 }
180 if ((obj instanceof Inv05.Match)) {
181 Inv05.Match other = (Inv05.Match) obj;
182 return Objects.equals(fInc, other.fInc);
183 } else {
184 // this should be infrequent
185 if (!(obj instanceof IPatternMatch)) {
186 return false;
187 }
188 IPatternMatch otherSig = (IPatternMatch) obj;
189 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
190 }
191 }
192
193 @Override
194 public Inv05 specification() {
195 return Inv05.instance();
196 }
197
198 /**
199 * Returns an empty, mutable match.
200 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
201 *
202 * @return the empty match.
203 *
204 */
205 public static Inv05.Match newEmptyMatch() {
206 return new Mutable(null);
207 }
208
209 /**
210 * Returns a mutable (partial) match.
211 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
212 *
213 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
214 * @return the new, mutable (partial) match object.
215 *
216 */
217 public static Inv05.Match newMutableMatch(final Income pInc) {
218 return new Mutable(pInc);
219 }
220
221 /**
222 * Returns a new (partial) match.
223 * This can be used e.g. to call the matcher with a partial match.
224 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
225 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
226 * @return the (partial) match object.
227 *
228 */
229 public static Inv05.Match newMatch(final Income pInc) {
230 return new Immutable(pInc);
231 }
232
233 private static final class Mutable extends Inv05.Match {
234 Mutable(final Income pInc) {
235 super(pInc);
236 }
237
238 @Override
239 public boolean isMutable() {
240 return true;
241 }
242 }
243
244 private static final class Immutable extends Inv05.Match {
245 Immutable(final Income pInc) {
246 super(pInc);
247 }
248
249 @Override
250 public boolean isMutable() {
251 return false;
252 }
253 }
254 }
255
256 /**
257 * Generated pattern matcher API of the queries.inv05 pattern,
258 * providing pattern-specific query methods.
259 *
260 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
261 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
262 *
263 * <p>Matches of the pattern will be represented as {@link Match}.
264 *
265 * <p>Original source:
266 * <code><pre>
267 * //inv5 - oclIsTypeOf - handled here
268 * {@literal @}Constraint(message = "inv05", severity = "error", key = {inc})
269 * pattern inv05(inc : Income) {
270 * //income_type: None
271 * neg find x_inv08_noType(inc);
272 * Income.details.worked_days(inc, wd);
273 * check(wd != 0);
274 * } or {
275 * //income_type: Not Employment_Income
276 * Income.income_type(inc, type);
277 * neg find x_inv08_notEI(type);
278 * Income.details.worked_days(inc, wd);
279 * check(wd != 0);
280 * } or {
281 * //income_type: Employment Income
282 * Income.income_type(inc, type);
283 * Employment_Income(type);
284 * find x_inv05_inRange(inc);
285 * }
286 * </pre></code>
287 *
288 * @see Match
289 * @see Inv05
290 *
291 */
292 public static class Matcher extends BaseMatcher<Inv05.Match> {
293 /**
294 * Initializes the pattern matcher within an existing VIATRA Query engine.
295 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
296 *
297 * @param engine the existing VIATRA Query engine in which this matcher will be created.
298 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
299 *
300 */
301 public static Inv05.Matcher on(final ViatraQueryEngine engine) {
302 // check if matcher already exists
303 Matcher matcher = engine.getExistingMatcher(querySpecification());
304 if (matcher == null) {
305 matcher = (Matcher)engine.getMatcher(querySpecification());
306 }
307 return matcher;
308 }
309
310 /**
311 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
312 * @return an initialized matcher
313 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
314 *
315 */
316 public static Inv05.Matcher create() {
317 return new Matcher();
318 }
319
320 private static final int POSITION_INC = 0;
321
322 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv05.Matcher.class);
323
324 /**
325 * Initializes the pattern matcher within an existing VIATRA Query engine.
326 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
327 *
328 * @param engine the existing VIATRA Query engine in which this matcher will be created.
329 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
330 *
331 */
332 private Matcher() {
333 super(querySpecification());
334 }
335
336 /**
337 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
338 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
339 * @return matches represented as a Match object.
340 *
341 */
342 public Collection<Inv05.Match> getAllMatches(final Income pInc) {
343 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
344 }
345
346 /**
347 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
348 * </p>
349 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
350 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
351 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
352 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
353 * @return a stream of matches represented as a Match object.
354 *
355 */
356 public Stream<Inv05.Match> streamAllMatches(final Income pInc) {
357 return rawStreamAllMatches(new Object[]{pInc});
358 }
359
360 /**
361 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
362 * Neither determinism nor randomness of selection is guaranteed.
363 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
364 * @return a match represented as a Match object, or null if no match is found.
365 *
366 */
367 public Optional<Inv05.Match> getOneArbitraryMatch(final Income pInc) {
368 return rawGetOneArbitraryMatch(new Object[]{pInc});
369 }
370
371 /**
372 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
373 * under any possible substitution of the unspecified parameters (if any).
374 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
375 * @return true if the input is a valid (partial) match of the pattern.
376 *
377 */
378 public boolean hasMatch(final Income pInc) {
379 return rawHasMatch(new Object[]{pInc});
380 }
381
382 /**
383 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
384 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
385 * @return the number of pattern matches found.
386 *
387 */
388 public int countMatches(final Income pInc) {
389 return rawCountMatches(new Object[]{pInc});
390 }
391
392 /**
393 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
394 * Neither determinism nor randomness of selection is guaranteed.
395 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
396 * @param processor the action that will process the selected match.
397 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
398 *
399 */
400 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super Inv05.Match> processor) {
401 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
402 }
403
404 /**
405 * Returns a new (partial) match.
406 * This can be used e.g. to call the matcher with a partial match.
407 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
408 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
409 * @return the (partial) match object.
410 *
411 */
412 public Inv05.Match newMatch(final Income pInc) {
413 return Inv05.Match.newMatch(pInc);
414 }
415
416 /**
417 * Retrieve the set of values that occur in matches for inc.
418 * @return the Set of all values or empty set if there are no matches
419 *
420 */
421 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
422 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
423 }
424
425 /**
426 * Retrieve the set of values that occur in matches for inc.
427 * @return the Set of all values or empty set if there are no matches
428 *
429 */
430 public Set<Income> getAllValuesOfinc() {
431 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
432 }
433
434 /**
435 * Retrieve the set of values that occur in matches for inc.
436 * @return the Set of all values or empty set if there are no matches
437 *
438 */
439 public Stream<Income> streamAllValuesOfinc() {
440 return rawStreamAllValuesOfinc(emptyArray());
441 }
442
443 @Override
444 protected Inv05.Match tupleToMatch(final Tuple t) {
445 try {
446 return Inv05.Match.newMatch((Income) t.get(POSITION_INC));
447 } catch(ClassCastException e) {
448 LOGGER.error("Element(s) in tuple not properly typed!",e);
449 return null;
450 }
451 }
452
453 @Override
454 protected Inv05.Match arrayToMatch(final Object[] match) {
455 try {
456 return Inv05.Match.newMatch((Income) match[POSITION_INC]);
457 } catch(ClassCastException e) {
458 LOGGER.error("Element(s) in array not properly typed!",e);
459 return null;
460 }
461 }
462
463 @Override
464 protected Inv05.Match arrayToMatchMutable(final Object[] match) {
465 try {
466 return Inv05.Match.newMutableMatch((Income) match[POSITION_INC]);
467 } catch(ClassCastException e) {
468 LOGGER.error("Element(s) in array not properly typed!",e);
469 return null;
470 }
471 }
472
473 /**
474 * @return the singleton instance of the query specification of this pattern
475 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
476 *
477 */
478 public static IQuerySpecification<Inv05.Matcher> querySpecification() {
479 return Inv05.instance();
480 }
481 }
482
483 private Inv05() {
484 super(GeneratedPQuery.INSTANCE);
485 }
486
487 /**
488 * @return the singleton instance of the query specification
489 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
490 *
491 */
492 public static Inv05 instance() {
493 try{
494 return LazyHolder.INSTANCE;
495 } catch (ExceptionInInitializerError err) {
496 throw processInitializerError(err);
497 }
498 }
499
500 @Override
501 protected Inv05.Matcher instantiate(final ViatraQueryEngine engine) {
502 return Inv05.Matcher.on(engine);
503 }
504
505 @Override
506 public Inv05.Matcher instantiate() {
507 return Inv05.Matcher.create();
508 }
509
510 @Override
511 public Inv05.Match newEmptyMatch() {
512 return Inv05.Match.newEmptyMatch();
513 }
514
515 @Override
516 public Inv05.Match newMatch(final Object... parameters) {
517 return Inv05.Match.newMatch((Taxation.Income) parameters[0]);
518 }
519
520 /**
521 * Inner class allowing the singleton instance of {@link Inv05} to be created
522 * <b>not</b> at the class load time of the outer class,
523 * but rather at the first call to {@link Inv05#instance()}.
524 *
525 * <p> This workaround is required e.g. to support recursion.
526 *
527 */
528 private static class LazyHolder {
529 private static final Inv05 INSTANCE = new Inv05();
530
531 /**
532 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
533 * This initialization order is required to support indirect recursion.
534 *
535 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
536 *
537 */
538 private static final Object STATIC_INITIALIZER = ensureInitialized();
539
540 public static Object ensureInitialized() {
541 INSTANCE.ensureInitializedInternal();
542 return null;
543 }
544 }
545
546 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
547 private static final Inv05.GeneratedPQuery INSTANCE = new GeneratedPQuery();
548
549 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
550
551 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
552
553 private GeneratedPQuery() {
554 super(PVisibility.PUBLIC);
555 }
556
557 @Override
558 public String getFullyQualifiedName() {
559 return "queries.inv05";
560 }
561
562 @Override
563 public List<String> getParameterNames() {
564 return Arrays.asList("inc");
565 }
566
567 @Override
568 public List<PParameter> getParameters() {
569 return parameters;
570 }
571
572 @Override
573 public Set<PBody> doGetContainedBodies() {
574 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
575 Set<PBody> bodies = new LinkedHashSet<>();
576 {
577 PBody body = new PBody(this);
578 PVariable var_inc = body.getOrCreateVariableByName("inc");
579 PVariable var_wd = body.getOrCreateVariableByName("wd");
580 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
581 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
582 new ExportedParameter(body, var_inc, parameter_inc)
583 ));
584 // //income_type: None neg find x_inv08_noType(inc)
585 new NegativePatternCall(body, Tuples.flatTupleOf(var_inc), X_inv08_noType.instance().getInternalQueryRepresentation());
586 // Income.details.worked_days(inc, wd)
587 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
588 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
589 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
590 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
591 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
592 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "worked_days")));
593 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
594 new Equality(body, var__virtual_1_, var_wd);
595 // check(wd != 0)
596 new ExpressionEvaluation(body, new IExpressionEvaluator() {
597
598 @Override
599 public String getShortDescription() {
600 return "Expression evaluation from pattern inv05";
601 }
602
603 @Override
604 public Iterable<String> getInputParameterNames() {
605 return Arrays.asList("wd");}
606
607 @Override
608 public Object evaluateExpression(IValueProvider provider) throws Exception {
609 Integer wd = (Integer) provider.getValue("wd");
610 return evaluateExpression_1_1(wd);
611 }
612 }, null);
613 bodies.add(body);
614 }
615 {
616 PBody body = new PBody(this);
617 PVariable var_inc = body.getOrCreateVariableByName("inc");
618 PVariable var_type = body.getOrCreateVariableByName("type");
619 PVariable var_wd = body.getOrCreateVariableByName("wd");
620 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
621 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
622 new ExportedParameter(body, var_inc, parameter_inc)
623 ));
624 // //income_type: Not Employment_Income Income.income_type(inc, type)
625 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
626 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
627 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_type")));
628 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Type")));
629 new Equality(body, var__virtual_0_, var_type);
630 // neg find x_inv08_notEI(type)
631 new NegativePatternCall(body, Tuples.flatTupleOf(var_type), X_inv08_notEI.instance().getInternalQueryRepresentation());
632 // Income.details.worked_days(inc, wd)
633 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
634 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
635 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
636 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
637 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
638 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "worked_days")));
639 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
640 new Equality(body, var__virtual_2_, var_wd);
641 // check(wd != 0)
642 new ExpressionEvaluation(body, new IExpressionEvaluator() {
643
644 @Override
645 public String getShortDescription() {
646 return "Expression evaluation from pattern inv05";
647 }
648
649 @Override
650 public Iterable<String> getInputParameterNames() {
651 return Arrays.asList("wd");}
652
653 @Override
654 public Object evaluateExpression(IValueProvider provider) throws Exception {
655 Integer wd = (Integer) provider.getValue("wd");
656 return evaluateExpression_2_1(wd);
657 }
658 }, null);
659 bodies.add(body);
660 }
661 {
662 PBody body = new PBody(this);
663 PVariable var_inc = body.getOrCreateVariableByName("inc");
664 PVariable var_type = body.getOrCreateVariableByName("type");
665 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
666 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
667 new ExportedParameter(body, var_inc, parameter_inc)
668 ));
669 // //income_type: Employment Income Income.income_type(inc, type)
670 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
671 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
672 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_type")));
673 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Type")));
674 new Equality(body, var__virtual_0_, var_type);
675 // Employment_Income(type)
676 new TypeConstraint(body, Tuples.flatTupleOf(var_type), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Employment_Income")));
677 // find x_inv05_inRange(inc)
678 new PositivePatternCall(body, Tuples.flatTupleOf(var_inc), X_inv05_inRange.instance().getInternalQueryRepresentation());
679 bodies.add(body);
680 }
681 {
682 PAnnotation annotation = new PAnnotation("Constraint");
683 annotation.addAttribute("message", "inv05");
684 annotation.addAttribute("severity", "error");
685 annotation.addAttribute("key", Arrays.asList(new Object[] {
686 new ParameterReference("inc")
687 }));
688 addAnnotation(annotation);
689 }
690 return bodies;
691 }
692 }
693
694 private static boolean evaluateExpression_1_1(final Integer wd) {
695 return ((wd).intValue() != 0);
696 }
697
698 private static boolean evaluateExpression_2_1(final Integer wd) {
699 return ((wd).intValue() != 0);
700 }
701}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java
new file mode 100644
index 00000000..fcf7ac89
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv06.java
@@ -0,0 +1,509 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Tax_Payer;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Optional;
12import java.util.Set;
13import java.util.function.Consumer;
14import java.util.stream.Collectors;
15import java.util.stream.Stream;
16import org.apache.log4j.Logger;
17import org.eclipse.emf.ecore.EClass;
18import org.eclipse.emf.ecore.EDataType;
19import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
20import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
23import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
24import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
25import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
26import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
30import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * //inv6-Does not make sens, but directly from OCL
52 * //first part of or from definition of getAge()
53 * {@literal @}Constraint(message = "inv06", severity = "error", key = {tp})
54 * pattern inv06(tp : Tax_Payer) {
55 * Tax_Payer.dependents(tp, _);
56 * Tax_Payer.birth_year(tp, TPBy);
57 * check(2018 - TPBy {@literal >} 2018-16);
58 * } or {
59 * Tax_Payer.birth_year(tp, TPBy);
60 * Tax_Payer.dependents(tp, dep);
61 * Dependent.birth_year(dep, DepBy);
62 * check(2018-DepBy {@literal <}= 2018-TPBy-16);
63 * }
64 * </pre></code>
65 *
66 * @see Matcher
67 * @see Match
68 *
69 */
70@SuppressWarnings("all")
71public final class Inv06 extends BaseGeneratedEMFQuerySpecification<Inv06.Matcher> {
72 /**
73 * Pattern-specific match representation of the queries.inv06 pattern,
74 * to be used in conjunction with {@link Matcher}.
75 *
76 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
77 * Each instance is a (possibly partial) substitution of pattern parameters,
78 * usable to represent a match of the pattern in the result of a query,
79 * or to specify the bound (fixed) input parameters when issuing a query.
80 *
81 * @see Matcher
82 *
83 */
84 public static abstract class Match extends BasePatternMatch {
85 }
86
87 /**
88 * Generated pattern matcher API of the queries.inv06 pattern,
89 * providing pattern-specific query methods.
90 *
91 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
92 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
93 *
94 * <p>Matches of the pattern will be represented as {@link Match}.
95 *
96 * <p>Original source:
97 * <code><pre>
98 * //inv6-Does not make sens, but directly from OCL
99 * //first part of or from definition of getAge()
100 * {@literal @}Constraint(message = "inv06", severity = "error", key = {tp})
101 * pattern inv06(tp : Tax_Payer) {
102 * Tax_Payer.dependents(tp, _);
103 * Tax_Payer.birth_year(tp, TPBy);
104 * check(2018 - TPBy {@literal >} 2018-16);
105 * } or {
106 * Tax_Payer.birth_year(tp, TPBy);
107 * Tax_Payer.dependents(tp, dep);
108 * Dependent.birth_year(dep, DepBy);
109 * check(2018-DepBy {@literal <}= 2018-TPBy-16);
110 * }
111 * </pre></code>
112 *
113 * @see Match
114 * @see Inv06
115 *
116 */
117 public static class Matcher extends BaseMatcher<Inv06.Match> {
118 /**
119 * Initializes the pattern matcher within an existing VIATRA Query engine.
120 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
121 *
122 * @param engine the existing VIATRA Query engine in which this matcher will be created.
123 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
124 *
125 */
126 public static Inv06.Matcher on(final ViatraQueryEngine engine) {
127 // check if matcher already exists
128 Matcher matcher = engine.getExistingMatcher(querySpecification());
129 if (matcher == null) {
130 matcher = (Matcher)engine.getMatcher(querySpecification());
131 }
132 return matcher;
133 }
134
135 /**
136 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
137 * @return an initialized matcher
138 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
139 *
140 */
141 public static Inv06.Matcher create() {
142 return new Matcher();
143 }
144
145 private static final int POSITION_TP = 0;
146
147 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv06.Matcher.class);
148
149 /**
150 * Initializes the pattern matcher within an existing VIATRA Query engine.
151 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
152 *
153 * @param engine the existing VIATRA Query engine in which this matcher will be created.
154 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
155 *
156 */
157 private Matcher() {
158 super(querySpecification());
159 }
160
161 /**
162 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
163 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
164 * @return matches represented as a Match object.
165 *
166 */
167 public Collection<Inv06.Match> getAllMatches(final Tax_Payer pTp) {
168 return rawStreamAllMatches(new Object[]{pTp}).collect(Collectors.toSet());
169 }
170
171 /**
172 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
173 * </p>
174 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
175 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
176 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
177 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
178 * @return a stream of matches represented as a Match object.
179 *
180 */
181 public Stream<Inv06.Match> streamAllMatches(final Tax_Payer pTp) {
182 return rawStreamAllMatches(new Object[]{pTp});
183 }
184
185 /**
186 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
187 * Neither determinism nor randomness of selection is guaranteed.
188 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
189 * @return a match represented as a Match object, or null if no match is found.
190 *
191 */
192 public Optional<Inv06.Match> getOneArbitraryMatch();
193
194 /**
195 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
196 * under any possible substitution of the unspecified parameters (if any).
197 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
198 * @return true if the input is a valid (partial) match of the pattern.
199 *
200 */
201 public boolean hasMatch(final Tax_Payer pTp) {
202 return rawHasMatch(new Object[]{pTp});
203 }
204
205 /**
206 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
207 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
208 * @return the number of pattern matches found.
209 *
210 */
211 public int countMatches(final Tax_Payer pTp) {
212 return rawCountMatches(new Object[]{pTp});
213 }
214
215 /**
216 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
217 * Neither determinism nor randomness of selection is guaranteed.
218 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
219 * @param processor the action that will process the selected match.
220 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
221 *
222 */
223 public boolean forOneArbitraryMatch(final Tax_Payer pTp, final Consumer<? super Inv06.Match> processor) {
224 return rawForOneArbitraryMatch(new Object[]{pTp}, processor);
225 }
226
227 /**
228 * Returns a new (partial) match.
229 * This can be used e.g. to call the matcher with a partial match.
230 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
231 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
232 * @return the (partial) match object.
233 *
234 */
235 public Inv06.Match newMatch(final Tax_Payer pTp) {
236 return Inv06.Match.newMatch(pTp);
237 }
238
239 /**
240 * Retrieve the set of values that occur in matches for tp.
241 * @return the Set of all values or empty set if there are no matches
242 *
243 */
244 protected Stream<Tax_Payer> rawStreamAllValuesOftp(final Object[] parameters) {
245 return rawStreamAllValues(POSITION_TP, parameters).map(Tax_Payer.class::cast);
246 }
247
248 /**
249 * Retrieve the set of values that occur in matches for tp.
250 * @return the Set of all values or empty set if there are no matches
251 *
252 */
253 public Set<Tax_Payer> getAllValuesOftp() {
254 return rawStreamAllValuesOftp(emptyArray()).collect(Collectors.toSet());
255 }
256
257 /**
258 * Retrieve the set of values that occur in matches for tp.
259 * @return the Set of all values or empty set if there are no matches
260 *
261 */
262 public Stream<Tax_Payer> streamAllValuesOftp() {
263 return rawStreamAllValuesOftp(emptyArray());
264 }
265
266 @Override
267 protected Inv06.Match tupleToMatch(final Tuple t) {
268 try {
269 return Inv06.Match.newMatch((Tax_Payer) t.get(POSITION_TP));
270 } catch(ClassCastException e) {
271 LOGGER.error("Element(s) in tuple not properly typed!",e);
272 return null;
273 }
274 }
275
276 @Override
277 protected Inv06.Match arrayToMatch(final Object[] match) {
278 try {
279 return Inv06.Match.newMatch((Tax_Payer) match[POSITION_TP]);
280 } catch(ClassCastException e) {
281 LOGGER.error("Element(s) in array not properly typed!",e);
282 return null;
283 }
284 }
285
286 @Override
287 protected Inv06.Match arrayToMatchMutable(final Object[] match) {
288 try {
289 return Inv06.Match.newMutableMatch((Tax_Payer) match[POSITION_TP]);
290 } catch(ClassCastException e) {
291 LOGGER.error("Element(s) in array not properly typed!",e);
292 return null;
293 }
294 }
295
296 /**
297 * @return the singleton instance of the query specification of this pattern
298 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
299 *
300 */
301 public static IQuerySpecification<Inv06.Matcher> querySpecification() {
302 return Inv06.instance();
303 }
304 }
305
306 private Inv06() {
307 super(GeneratedPQuery.INSTANCE);
308 }
309
310 /**
311 * @return the singleton instance of the query specification
312 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
313 *
314 */
315 public static Inv06 instance() {
316 try{
317 return LazyHolder.INSTANCE;
318 } catch (ExceptionInInitializerError err) {
319 throw processInitializerError(err);
320 }
321 }
322
323 @Override
324 protected Inv06.Matcher instantiate(final ViatraQueryEngine engine) {
325 return Inv06.Matcher.on(engine);
326 }
327
328 @Override
329 public Inv06.Matcher instantiate() {
330 return Inv06.Matcher.create();
331 }
332
333 @Override
334 public Inv06.Match newEmptyMatch() {
335 return Inv06.Match.newEmptyMatch();
336 }
337
338 @Override
339 public Inv06.Match newMatch(final Object... parameters) {
340 return Inv06.Match.newMatch((Taxation.Tax_Payer) parameters[0]);
341 }
342
343 /**
344 * Inner class allowing the singleton instance of {@link Inv06} to be created
345 * <b>not</b> at the class load time of the outer class,
346 * but rather at the first call to {@link Inv06#instance()}.
347 *
348 * <p> This workaround is required e.g. to support recursion.
349 *
350 */
351 private static class LazyHolder {
352 private static final Inv06 INSTANCE = new Inv06();
353
354 /**
355 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
356 * This initialization order is required to support indirect recursion.
357 *
358 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
359 *
360 */
361 private static final Object STATIC_INITIALIZER = ensureInitialized();
362
363 public static Object ensureInitialized() {
364 INSTANCE.ensureInitializedInternal();
365 return null;
366 }
367 }
368
369 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
370 private static final Inv06.GeneratedPQuery INSTANCE = new GeneratedPQuery();
371
372 private final PParameter parameter_tp = new PParameter("tp", "Taxation.Tax_Payer", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Tax_Payer")), PParameterDirection.INOUT);
373
374 private final List<PParameter> parameters = Arrays.asList(parameter_tp);
375
376 private GeneratedPQuery() {
377 super(PVisibility.PUBLIC);
378 }
379
380 @Override
381 public String getFullyQualifiedName() {
382 return "queries.inv06";
383 }
384
385 @Override
386 public List<String> getParameterNames() {
387 return Arrays.asList("tp");
388 }
389
390 @Override
391 public List<PParameter> getParameters() {
392 return parameters;
393 }
394
395 @Override
396 public Set<PBody> doGetContainedBodies() {
397 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
398 Set<PBody> bodies = new LinkedHashSet<>();
399 {
400 PBody body = new PBody(this);
401 PVariable var_tp = body.getOrCreateVariableByName("tp");
402 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
403 PVariable var_TPBy = body.getOrCreateVariableByName("TPBy");
404 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
405 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
406 new ExportedParameter(body, var_tp, parameter_tp)
407 ));
408 // Tax_Payer.dependents(tp, _)
409 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
410 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
411 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Tax_Payer", "dependents")));
412 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
413 new Equality(body, var__virtual_0_, var___0_);
414 // Tax_Payer.birth_year(tp, TPBy)
415 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
416 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
417 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
418 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
419 new Equality(body, var__virtual_1_, var_TPBy);
420 // check(2018 - TPBy > 2018-16)
421 new ExpressionEvaluation(body, new IExpressionEvaluator() {
422
423 @Override
424 public String getShortDescription() {
425 return "Expression evaluation from pattern inv06";
426 }
427
428 @Override
429 public Iterable<String> getInputParameterNames() {
430 return Arrays.asList("TPBy");}
431
432 @Override
433 public Object evaluateExpression(IValueProvider provider) throws Exception {
434 Integer TPBy = (Integer) provider.getValue("TPBy");
435 return evaluateExpression_1_1(TPBy);
436 }
437 }, null);
438 bodies.add(body);
439 }
440 {
441 PBody body = new PBody(this);
442 PVariable var_tp = body.getOrCreateVariableByName("tp");
443 PVariable var_TPBy = body.getOrCreateVariableByName("TPBy");
444 PVariable var_dep = body.getOrCreateVariableByName("dep");
445 PVariable var_DepBy = body.getOrCreateVariableByName("DepBy");
446 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
447 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
448 new ExportedParameter(body, var_tp, parameter_tp)
449 ));
450 // Tax_Payer.birth_year(tp, TPBy)
451 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
452 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
453 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
454 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
455 new Equality(body, var__virtual_0_, var_TPBy);
456 // Tax_Payer.dependents(tp, dep)
457 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
458 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
459 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Tax_Payer", "dependents")));
460 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
461 new Equality(body, var__virtual_1_, var_dep);
462 // Dependent.birth_year(dep, DepBy)
463 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
464 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
465 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
466 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
467 new Equality(body, var__virtual_2_, var_DepBy);
468 // check(2018-DepBy <= 2018-TPBy-16)
469 new ExpressionEvaluation(body, new IExpressionEvaluator() {
470
471 @Override
472 public String getShortDescription() {
473 return "Expression evaluation from pattern inv06";
474 }
475
476 @Override
477 public Iterable<String> getInputParameterNames() {
478 return Arrays.asList("DepBy", "TPBy");}
479
480 @Override
481 public Object evaluateExpression(IValueProvider provider) throws Exception {
482 Integer DepBy = (Integer) provider.getValue("DepBy");
483 Integer TPBy = (Integer) provider.getValue("TPBy");
484 return evaluateExpression_2_1(DepBy, TPBy);
485 }
486 }, null);
487 bodies.add(body);
488 }
489 {
490 PAnnotation annotation = new PAnnotation("Constraint");
491 annotation.addAttribute("message", "inv06");
492 annotation.addAttribute("severity", "error");
493 annotation.addAttribute("key", Arrays.asList(new Object[] {
494 new ParameterReference("tp")
495 }));
496 addAnnotation(annotation);
497 }
498 return bodies;
499 }
500 }
501
502 private static boolean evaluateExpression_1_1(final Integer TPBy) {
503 return ((2018 - (TPBy).intValue()) > (2018 - 16));
504 }
505
506 private static boolean evaluateExpression_2_1(final Integer DepBy, final Integer TPBy) {
507 return ((2018 - (DepBy).intValue()) <= ((2018 - (TPBy).intValue()) - 16));
508 }
509}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java
new file mode 100644
index 00000000..d9fed653
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv07.java
@@ -0,0 +1,455 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import com.google.common.base.Objects;
8import java.util.Arrays;
9import java.util.Collection;
10import java.util.LinkedHashSet;
11import java.util.List;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
28import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
29import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
30import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46
47/**
48 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
49 *
50 * <p>Original source:
51 * <code><pre>
52 * //inv7-OrderedSet
53 * {@literal @}Constraint(message = "inv07", severity = "error", key = {inc})
54 * pattern inv07(inc : Income) {
55 * Income.details.distance(inc, d1);
56 * Income.details.distance(inc, d2);
57 * check(d1 != d2);//compare values
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class Inv07 extends BaseGeneratedEMFQuerySpecification<Inv07.Matcher> {
67 /**
68 * Pattern-specific match representation of the queries.inv07 pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 }
81
82 /**
83 * Generated pattern matcher API of the queries.inv07 pattern,
84 * providing pattern-specific query methods.
85 *
86 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
87 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
88 *
89 * <p>Matches of the pattern will be represented as {@link Match}.
90 *
91 * <p>Original source:
92 * <code><pre>
93 * //inv7-OrderedSet
94 * {@literal @}Constraint(message = "inv07", severity = "error", key = {inc})
95 * pattern inv07(inc : Income) {
96 * Income.details.distance(inc, d1);
97 * Income.details.distance(inc, d2);
98 * check(d1 != d2);//compare values
99 * }
100 * </pre></code>
101 *
102 * @see Match
103 * @see Inv07
104 *
105 */
106 public static class Matcher extends BaseMatcher<Inv07.Match> {
107 /**
108 * Initializes the pattern matcher within an existing VIATRA Query engine.
109 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
110 *
111 * @param engine the existing VIATRA Query engine in which this matcher will be created.
112 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
113 *
114 */
115 public static Inv07.Matcher on(final ViatraQueryEngine engine) {
116 // check if matcher already exists
117 Matcher matcher = engine.getExistingMatcher(querySpecification());
118 if (matcher == null) {
119 matcher = (Matcher)engine.getMatcher(querySpecification());
120 }
121 return matcher;
122 }
123
124 /**
125 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
126 * @return an initialized matcher
127 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
128 *
129 */
130 public static Inv07.Matcher create() {
131 return new Matcher();
132 }
133
134 private static final int POSITION_INC = 0;
135
136 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv07.Matcher.class);
137
138 /**
139 * Initializes the pattern matcher within an existing VIATRA Query engine.
140 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
141 *
142 * @param engine the existing VIATRA Query engine in which this matcher will be created.
143 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
144 *
145 */
146 private Matcher() {
147 super(querySpecification());
148 }
149
150 /**
151 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
152 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
153 * @return matches represented as a Match object.
154 *
155 */
156 public Collection<Inv07.Match> getAllMatches(final Income pInc) {
157 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
158 }
159
160 /**
161 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
162 * </p>
163 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
164 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
165 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
166 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
167 * @return a stream of matches represented as a Match object.
168 *
169 */
170 public Stream<Inv07.Match> streamAllMatches(final Income pInc) {
171 return rawStreamAllMatches(new Object[]{pInc});
172 }
173
174 /**
175 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
176 * Neither determinism nor randomness of selection is guaranteed.
177 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
178 * @return a match represented as a Match object, or null if no match is found.
179 *
180 */
181 public Optional<Inv07.Match> getOneArbitraryMatch(final Income pInc) {
182 return rawGetOneArbitraryMatch(new Object[]{pInc});
183 }
184
185 /**
186 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
187 * under any possible substitution of the unspecified parameters (if any).
188 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
189 * @return true if the input is a valid (partial) match of the pattern.
190 *
191 */
192 public boolean hasMatch(final Income pInc) {
193 return rawHasMatch(new Object[]{pInc});
194 }
195
196 /**
197 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
198 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
199 * @return the number of pattern matches found.
200 *
201 */
202 public int countMatches(final Income pInc) {
203 return rawCountMatches(new Object[]{pInc});
204 }
205
206 /**
207 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
208 * Neither determinism nor randomness of selection is guaranteed.
209 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
210 * @param processor the action that will process the selected match.
211 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
212 *
213 */
214 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super Inv07.Match> processor) {
215 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
216 }
217
218 /**
219 * Returns a new (partial) match.
220 * This can be used e.g. to call the matcher with a partial match.
221 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
222 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
223 * @return the (partial) match object.
224 *
225 */
226 public Inv07.Match newMatch(final Income pInc) {
227 return Inv07.Match.newMatch(pInc);
228 }
229
230 /**
231 * Retrieve the set of values that occur in matches for inc.
232 * @return the Set of all values or empty set if there are no matches
233 *
234 */
235 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
236 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
237 }
238
239 /**
240 * Retrieve the set of values that occur in matches for inc.
241 * @return the Set of all values or empty set if there are no matches
242 *
243 */
244 public Set<Income> getAllValuesOfinc() {
245 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
246 }
247
248 /**
249 * Retrieve the set of values that occur in matches for inc.
250 * @return the Set of all values or empty set if there are no matches
251 *
252 */
253 public Stream<Income> streamAllValuesOfinc() {
254 return rawStreamAllValuesOfinc(emptyArray());
255 }
256
257 @Override
258 protected Inv07.Match tupleToMatch(final Tuple t) {
259 try {
260 return Inv07.Match.newMatch((Income) t.get(POSITION_INC));
261 } catch(ClassCastException e) {
262 LOGGER.error("Element(s) in tuple not properly typed!",e);
263 return null;
264 }
265 }
266
267 @Override
268 protected Inv07.Match arrayToMatch(final Object[] match) {
269 try {
270 return Inv07.Match.newMatch((Income) match[POSITION_INC]);
271 } catch(ClassCastException e) {
272 LOGGER.error("Element(s) in array not properly typed!",e);
273 return null;
274 }
275 }
276
277 @Override
278 protected Inv07.Match arrayToMatchMutable(final Object[] match) {
279 try {
280 return Inv07.Match.newMutableMatch((Income) match[POSITION_INC]);
281 } catch(ClassCastException e) {
282 LOGGER.error("Element(s) in array not properly typed!",e);
283 return null;
284 }
285 }
286
287 /**
288 * @return the singleton instance of the query specification of this pattern
289 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
290 *
291 */
292 public static IQuerySpecification<Inv07.Matcher> querySpecification() {
293 return Inv07.instance();
294 }
295 }
296
297 private Inv07() {
298 super(GeneratedPQuery.INSTANCE);
299 }
300
301 /**
302 * @return the singleton instance of the query specification
303 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
304 *
305 */
306 public static Inv07 instance() {
307 try{
308 return LazyHolder.INSTANCE;
309 } catch (ExceptionInInitializerError err) {
310 throw processInitializerError(err);
311 }
312 }
313
314 @Override
315 protected Inv07.Matcher instantiate(final ViatraQueryEngine engine) {
316 return Inv07.Matcher.on(engine);
317 }
318
319 @Override
320 public Inv07.Matcher instantiate() {
321 return Inv07.Matcher.create();
322 }
323
324 @Override
325 public Inv07.Match newEmptyMatch() {
326 return Inv07.Match.newEmptyMatch();
327 }
328
329 @Override
330 public Inv07.Match newMatch(final Object... parameters) {
331 return Inv07.Match.newMatch((Taxation.Income) parameters[0]);
332 }
333
334 /**
335 * Inner class allowing the singleton instance of {@link Inv07} to be created
336 * <b>not</b> at the class load time of the outer class,
337 * but rather at the first call to {@link Inv07#instance()}.
338 *
339 * <p> This workaround is required e.g. to support recursion.
340 *
341 */
342 private static class LazyHolder {
343 private static final Inv07 INSTANCE = new Inv07();
344
345 /**
346 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
347 * This initialization order is required to support indirect recursion.
348 *
349 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
350 *
351 */
352 private static final Object STATIC_INITIALIZER = ensureInitialized();
353
354 public static Object ensureInitialized() {
355 INSTANCE.ensureInitializedInternal();
356 return null;
357 }
358 }
359
360 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
361 private static final Inv07.GeneratedPQuery INSTANCE = new GeneratedPQuery();
362
363 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
364
365 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
366
367 private GeneratedPQuery() {
368 super(PVisibility.PUBLIC);
369 }
370
371 @Override
372 public String getFullyQualifiedName() {
373 return "queries.inv07";
374 }
375
376 @Override
377 public List<String> getParameterNames() {
378 return Arrays.asList("inc");
379 }
380
381 @Override
382 public List<PParameter> getParameters() {
383 return parameters;
384 }
385
386 @Override
387 public Set<PBody> doGetContainedBodies() {
388 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
389 Set<PBody> bodies = new LinkedHashSet<>();
390 {
391 PBody body = new PBody(this);
392 PVariable var_inc = body.getOrCreateVariableByName("inc");
393 PVariable var_d1 = body.getOrCreateVariableByName("d1");
394 PVariable var_d2 = body.getOrCreateVariableByName("d2");
395 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
396 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
397 new ExportedParameter(body, var_inc, parameter_inc)
398 ));
399 // Income.details.distance(inc, d1)
400 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
401 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
402 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
403 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
404 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
405 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "distance")));
406 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
407 new Equality(body, var__virtual_1_, var_d1);
408 // Income.details.distance(inc, d2)
409 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
410 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
411 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
412 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
413 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
414 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "distance")));
415 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
416 new Equality(body, var__virtual_3_, var_d2);
417 // check(d1 != d2)
418 new ExpressionEvaluation(body, new IExpressionEvaluator() {
419
420 @Override
421 public String getShortDescription() {
422 return "Expression evaluation from pattern inv07";
423 }
424
425 @Override
426 public Iterable<String> getInputParameterNames() {
427 return Arrays.asList("d1", "d2");}
428
429 @Override
430 public Object evaluateExpression(IValueProvider provider) throws Exception {
431 Double d1 = (Double) provider.getValue("d1");
432 Double d2 = (Double) provider.getValue("d2");
433 return evaluateExpression_1_1(d1, d2);
434 }
435 }, null);
436 bodies.add(body);
437 }
438 {
439 PAnnotation annotation = new PAnnotation("Constraint");
440 annotation.addAttribute("message", "inv07");
441 annotation.addAttribute("severity", "error");
442 annotation.addAttribute("key", Arrays.asList(new Object[] {
443 new ParameterReference("inc")
444 }));
445 addAnnotation(annotation);
446 }
447 return bodies;
448 }
449 }
450
451 private static boolean evaluateExpression_1_1(final Double d1, final Double d2) {
452 boolean _notEquals = (!Objects.equal(d1, d2));
453 return _notEquals;
454 }
455}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java
new file mode 100644
index 00000000..d2f869c6
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv08.java
@@ -0,0 +1,705 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
41import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
42import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
44import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
45import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
46import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
47import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
48import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
49import queries.X_inv08_inRange;
50import queries.X_inv08_noType;
51import queries.X_inv08_notEI;
52
53/**
54 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
55 *
56 * <p>Original source:
57 * <code><pre>
58 * //user_complete_details-AttributeRemoved
59 *
60 * //inv8 - oclIsTypeOf - handled here
61 * {@literal @}Constraint(message = "inv08", severity = "error", key = {inc})
62 * pattern inv08(inc : Income) {
63 * //income_type: None
64 * neg find x_inv08_noType(inc);
65 * Income.details.distance(inc, dist);
66 * check(dist != 0);
67 * } or {
68 * //income_type: Not Employment_Income
69 * Income.income_type(inc, type);
70 * neg find x_inv08_notEI(type);
71 * Income.details.distance(inc, dist);
72 * check(dist != 0);
73 * } or {
74 * //income_type: Employment Income
75 * Income.income_type(inc, type);
76 * Employment_Income(type);
77 * find x_inv08_inRange(inc);
78 * }
79 * </pre></code>
80 *
81 * @see Matcher
82 * @see Match
83 *
84 */
85@SuppressWarnings("all")
86public final class Inv08 extends BaseGeneratedEMFQuerySpecification<Inv08.Matcher> {
87 /**
88 * Pattern-specific match representation of the queries.inv08 pattern,
89 * to be used in conjunction with {@link Matcher}.
90 *
91 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
92 * Each instance is a (possibly partial) substitution of pattern parameters,
93 * usable to represent a match of the pattern in the result of a query,
94 * or to specify the bound (fixed) input parameters when issuing a query.
95 *
96 * @see Matcher
97 *
98 */
99 public static abstract class Match extends BasePatternMatch {
100 private Income fInc;
101
102 private static List<String> parameterNames = makeImmutableList("inc");
103
104 private Match(final Income pInc) {
105 this.fInc = pInc;
106 }
107
108 @Override
109 public Object get(final String parameterName) {
110 switch(parameterName) {
111 case "inc": return this.fInc;
112 default: return null;
113 }
114 }
115
116 @Override
117 public Object get(final int index) {
118 switch(index) {
119 case 0: return this.fInc;
120 default: return null;
121 }
122 }
123
124 public Income getInc() {
125 return this.fInc;
126 }
127
128 @Override
129 public boolean set(final String parameterName, final Object newValue) {
130 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
131 if ("inc".equals(parameterName) ) {
132 this.fInc = (Income) newValue;
133 return true;
134 }
135 return false;
136 }
137
138 public void setInc(final Income pInc) {
139 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
140 this.fInc = pInc;
141 }
142
143 @Override
144 public String patternName() {
145 return "queries.inv08";
146 }
147
148 @Override
149 public List<String> parameterNames() {
150 return Inv08.Match.parameterNames;
151 }
152
153 @Override
154 public Object[] toArray() {
155 return new Object[]{fInc};
156 }
157
158 @Override
159 public Inv08.Match toImmutable() {
160 return isMutable() ? newMatch(fInc) : this;
161 }
162
163 @Override
164 public String prettyPrint() {
165 StringBuilder result = new StringBuilder();
166 result.append("\"inc\"=" + prettyPrintValue(fInc));
167 return result.toString();
168 }
169
170 @Override
171 public int hashCode() {
172 return Objects.hash(fInc);
173 }
174
175 @Override
176 public boolean equals(final Object obj) {
177 if (this == obj)
178 return true;
179 if (obj == null) {
180 return false;
181 }
182 if ((obj instanceof Inv08.Match)) {
183 Inv08.Match other = (Inv08.Match) obj;
184 return Objects.equals(fInc, other.fInc);
185 } else {
186 // this should be infrequent
187 if (!(obj instanceof IPatternMatch)) {
188 return false;
189 }
190 IPatternMatch otherSig = (IPatternMatch) obj;
191 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
192 }
193 }
194
195 @Override
196 public Inv08 specification() {
197 return Inv08.instance();
198 }
199
200 /**
201 * Returns an empty, mutable match.
202 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
203 *
204 * @return the empty match.
205 *
206 */
207 public static Inv08.Match newEmptyMatch() {
208 return new Mutable(null);
209 }
210
211 /**
212 * Returns a mutable (partial) match.
213 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
214 *
215 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
216 * @return the new, mutable (partial) match object.
217 *
218 */
219 public static Inv08.Match newMutableMatch(final Income pInc) {
220 return new Mutable(pInc);
221 }
222
223 /**
224 * Returns a new (partial) match.
225 * This can be used e.g. to call the matcher with a partial match.
226 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
227 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
228 * @return the (partial) match object.
229 *
230 */
231 public static Inv08.Match newMatch(final Income pInc) {
232 return new Immutable(pInc);
233 }
234
235 private static final class Mutable extends Inv08.Match {
236 Mutable(final Income pInc) {
237 super(pInc);
238 }
239
240 @Override
241 public boolean isMutable() {
242 return true;
243 }
244 }
245
246 private static final class Immutable extends Inv08.Match {
247 Immutable(final Income pInc) {
248 super(pInc);
249 }
250
251 @Override
252 public boolean isMutable() {
253 return false;
254 }
255 }
256 }
257
258 /**
259 * Generated pattern matcher API of the queries.inv08 pattern,
260 * providing pattern-specific query methods.
261 *
262 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
263 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
264 *
265 * <p>Matches of the pattern will be represented as {@link Match}.
266 *
267 * <p>Original source:
268 * <code><pre>
269 * //user_complete_details-AttributeRemoved
270 *
271 * //inv8 - oclIsTypeOf - handled here
272 * {@literal @}Constraint(message = "inv08", severity = "error", key = {inc})
273 * pattern inv08(inc : Income) {
274 * //income_type: None
275 * neg find x_inv08_noType(inc);
276 * Income.details.distance(inc, dist);
277 * check(dist != 0);
278 * } or {
279 * //income_type: Not Employment_Income
280 * Income.income_type(inc, type);
281 * neg find x_inv08_notEI(type);
282 * Income.details.distance(inc, dist);
283 * check(dist != 0);
284 * } or {
285 * //income_type: Employment Income
286 * Income.income_type(inc, type);
287 * Employment_Income(type);
288 * find x_inv08_inRange(inc);
289 * }
290 * </pre></code>
291 *
292 * @see Match
293 * @see Inv08
294 *
295 */
296 public static class Matcher extends BaseMatcher<Inv08.Match> {
297 /**
298 * Initializes the pattern matcher within an existing VIATRA Query engine.
299 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
300 *
301 * @param engine the existing VIATRA Query engine in which this matcher will be created.
302 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
303 *
304 */
305 public static Inv08.Matcher on(final ViatraQueryEngine engine) {
306 // check if matcher already exists
307 Matcher matcher = engine.getExistingMatcher(querySpecification());
308 if (matcher == null) {
309 matcher = (Matcher)engine.getMatcher(querySpecification());
310 }
311 return matcher;
312 }
313
314 /**
315 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
316 * @return an initialized matcher
317 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
318 *
319 */
320 public static Inv08.Matcher create() {
321 return new Matcher();
322 }
323
324 private static final int POSITION_INC = 0;
325
326 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv08.Matcher.class);
327
328 /**
329 * Initializes the pattern matcher within an existing VIATRA Query engine.
330 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
331 *
332 * @param engine the existing VIATRA Query engine in which this matcher will be created.
333 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
334 *
335 */
336 private Matcher() {
337 super(querySpecification());
338 }
339
340 /**
341 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
342 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
343 * @return matches represented as a Match object.
344 *
345 */
346 public Collection<Inv08.Match> getAllMatches(final Income pInc) {
347 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
348 }
349
350 /**
351 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
352 * </p>
353 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
354 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
355 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
356 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
357 * @return a stream of matches represented as a Match object.
358 *
359 */
360 public Stream<Inv08.Match> streamAllMatches(final Income pInc) {
361 return rawStreamAllMatches(new Object[]{pInc});
362 }
363
364 /**
365 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
366 * Neither determinism nor randomness of selection is guaranteed.
367 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
368 * @return a match represented as a Match object, or null if no match is found.
369 *
370 */
371 public Optional<Inv08.Match> getOneArbitraryMatch(final Income pInc) {
372 return rawGetOneArbitraryMatch(new Object[]{pInc});
373 }
374
375 /**
376 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
377 * under any possible substitution of the unspecified parameters (if any).
378 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
379 * @return true if the input is a valid (partial) match of the pattern.
380 *
381 */
382 public boolean hasMatch(final Income pInc) {
383 return rawHasMatch(new Object[]{pInc});
384 }
385
386 /**
387 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
388 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
389 * @return the number of pattern matches found.
390 *
391 */
392 public int countMatches(final Income pInc) {
393 return rawCountMatches(new Object[]{pInc});
394 }
395
396 /**
397 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
398 * Neither determinism nor randomness of selection is guaranteed.
399 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
400 * @param processor the action that will process the selected match.
401 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
402 *
403 */
404 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super Inv08.Match> processor) {
405 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
406 }
407
408 /**
409 * Returns a new (partial) match.
410 * This can be used e.g. to call the matcher with a partial match.
411 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
412 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
413 * @return the (partial) match object.
414 *
415 */
416 public Inv08.Match newMatch(final Income pInc) {
417 return Inv08.Match.newMatch(pInc);
418 }
419
420 /**
421 * Retrieve the set of values that occur in matches for inc.
422 * @return the Set of all values or empty set if there are no matches
423 *
424 */
425 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
426 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
427 }
428
429 /**
430 * Retrieve the set of values that occur in matches for inc.
431 * @return the Set of all values or empty set if there are no matches
432 *
433 */
434 public Set<Income> getAllValuesOfinc() {
435 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
436 }
437
438 /**
439 * Retrieve the set of values that occur in matches for inc.
440 * @return the Set of all values or empty set if there are no matches
441 *
442 */
443 public Stream<Income> streamAllValuesOfinc() {
444 return rawStreamAllValuesOfinc(emptyArray());
445 }
446
447 @Override
448 protected Inv08.Match tupleToMatch(final Tuple t) {
449 try {
450 return Inv08.Match.newMatch((Income) t.get(POSITION_INC));
451 } catch(ClassCastException e) {
452 LOGGER.error("Element(s) in tuple not properly typed!",e);
453 return null;
454 }
455 }
456
457 @Override
458 protected Inv08.Match arrayToMatch(final Object[] match) {
459 try {
460 return Inv08.Match.newMatch((Income) match[POSITION_INC]);
461 } catch(ClassCastException e) {
462 LOGGER.error("Element(s) in array not properly typed!",e);
463 return null;
464 }
465 }
466
467 @Override
468 protected Inv08.Match arrayToMatchMutable(final Object[] match) {
469 try {
470 return Inv08.Match.newMutableMatch((Income) match[POSITION_INC]);
471 } catch(ClassCastException e) {
472 LOGGER.error("Element(s) in array not properly typed!",e);
473 return null;
474 }
475 }
476
477 /**
478 * @return the singleton instance of the query specification of this pattern
479 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
480 *
481 */
482 public static IQuerySpecification<Inv08.Matcher> querySpecification() {
483 return Inv08.instance();
484 }
485 }
486
487 private Inv08() {
488 super(GeneratedPQuery.INSTANCE);
489 }
490
491 /**
492 * @return the singleton instance of the query specification
493 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
494 *
495 */
496 public static Inv08 instance() {
497 try{
498 return LazyHolder.INSTANCE;
499 } catch (ExceptionInInitializerError err) {
500 throw processInitializerError(err);
501 }
502 }
503
504 @Override
505 protected Inv08.Matcher instantiate(final ViatraQueryEngine engine) {
506 return Inv08.Matcher.on(engine);
507 }
508
509 @Override
510 public Inv08.Matcher instantiate() {
511 return Inv08.Matcher.create();
512 }
513
514 @Override
515 public Inv08.Match newEmptyMatch() {
516 return Inv08.Match.newEmptyMatch();
517 }
518
519 @Override
520 public Inv08.Match newMatch(final Object... parameters) {
521 return Inv08.Match.newMatch((Taxation.Income) parameters[0]);
522 }
523
524 /**
525 * Inner class allowing the singleton instance of {@link Inv08} to be created
526 * <b>not</b> at the class load time of the outer class,
527 * but rather at the first call to {@link Inv08#instance()}.
528 *
529 * <p> This workaround is required e.g. to support recursion.
530 *
531 */
532 private static class LazyHolder {
533 private static final Inv08 INSTANCE = new Inv08();
534
535 /**
536 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
537 * This initialization order is required to support indirect recursion.
538 *
539 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
540 *
541 */
542 private static final Object STATIC_INITIALIZER = ensureInitialized();
543
544 public static Object ensureInitialized() {
545 INSTANCE.ensureInitializedInternal();
546 return null;
547 }
548 }
549
550 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
551 private static final Inv08.GeneratedPQuery INSTANCE = new GeneratedPQuery();
552
553 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
554
555 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
556
557 private GeneratedPQuery() {
558 super(PVisibility.PUBLIC);
559 }
560
561 @Override
562 public String getFullyQualifiedName() {
563 return "queries.inv08";
564 }
565
566 @Override
567 public List<String> getParameterNames() {
568 return Arrays.asList("inc");
569 }
570
571 @Override
572 public List<PParameter> getParameters() {
573 return parameters;
574 }
575
576 @Override
577 public Set<PBody> doGetContainedBodies() {
578 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
579 Set<PBody> bodies = new LinkedHashSet<>();
580 {
581 PBody body = new PBody(this);
582 PVariable var_inc = body.getOrCreateVariableByName("inc");
583 PVariable var_dist = body.getOrCreateVariableByName("dist");
584 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
585 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
586 new ExportedParameter(body, var_inc, parameter_inc)
587 ));
588 // //income_type: None neg find x_inv08_noType(inc)
589 new NegativePatternCall(body, Tuples.flatTupleOf(var_inc), X_inv08_noType.instance().getInternalQueryRepresentation());
590 // Income.details.distance(inc, dist)
591 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
592 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
593 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
594 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
595 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
596 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "distance")));
597 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
598 new Equality(body, var__virtual_1_, var_dist);
599 // check(dist != 0)
600 new ExpressionEvaluation(body, new IExpressionEvaluator() {
601
602 @Override
603 public String getShortDescription() {
604 return "Expression evaluation from pattern inv08";
605 }
606
607 @Override
608 public Iterable<String> getInputParameterNames() {
609 return Arrays.asList("dist");}
610
611 @Override
612 public Object evaluateExpression(IValueProvider provider) throws Exception {
613 Double dist = (Double) provider.getValue("dist");
614 return evaluateExpression_1_1(dist);
615 }
616 }, null);
617 bodies.add(body);
618 }
619 {
620 PBody body = new PBody(this);
621 PVariable var_inc = body.getOrCreateVariableByName("inc");
622 PVariable var_type = body.getOrCreateVariableByName("type");
623 PVariable var_dist = body.getOrCreateVariableByName("dist");
624 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
625 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
626 new ExportedParameter(body, var_inc, parameter_inc)
627 ));
628 // //income_type: Not Employment_Income Income.income_type(inc, type)
629 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
630 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
631 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_type")));
632 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Type")));
633 new Equality(body, var__virtual_0_, var_type);
634 // neg find x_inv08_notEI(type)
635 new NegativePatternCall(body, Tuples.flatTupleOf(var_type), X_inv08_notEI.instance().getInternalQueryRepresentation());
636 // Income.details.distance(inc, dist)
637 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
638 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
639 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
640 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
641 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
642 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "distance")));
643 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
644 new Equality(body, var__virtual_2_, var_dist);
645 // check(dist != 0)
646 new ExpressionEvaluation(body, new IExpressionEvaluator() {
647
648 @Override
649 public String getShortDescription() {
650 return "Expression evaluation from pattern inv08";
651 }
652
653 @Override
654 public Iterable<String> getInputParameterNames() {
655 return Arrays.asList("dist");}
656
657 @Override
658 public Object evaluateExpression(IValueProvider provider) throws Exception {
659 Double dist = (Double) provider.getValue("dist");
660 return evaluateExpression_2_1(dist);
661 }
662 }, null);
663 bodies.add(body);
664 }
665 {
666 PBody body = new PBody(this);
667 PVariable var_inc = body.getOrCreateVariableByName("inc");
668 PVariable var_type = body.getOrCreateVariableByName("type");
669 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
670 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
671 new ExportedParameter(body, var_inc, parameter_inc)
672 ));
673 // //income_type: Employment Income Income.income_type(inc, type)
674 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
675 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
676 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_type")));
677 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Type")));
678 new Equality(body, var__virtual_0_, var_type);
679 // Employment_Income(type)
680 new TypeConstraint(body, Tuples.flatTupleOf(var_type), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Employment_Income")));
681 // find x_inv08_inRange(inc)
682 new PositivePatternCall(body, Tuples.flatTupleOf(var_inc), X_inv08_inRange.instance().getInternalQueryRepresentation());
683 bodies.add(body);
684 }
685 {
686 PAnnotation annotation = new PAnnotation("Constraint");
687 annotation.addAttribute("message", "inv08");
688 annotation.addAttribute("severity", "error");
689 annotation.addAttribute("key", Arrays.asList(new Object[] {
690 new ParameterReference("inc")
691 }));
692 addAnnotation(annotation);
693 }
694 return bodies;
695 }
696 }
697
698 private static boolean evaluateExpression_1_1(final Double dist) {
699 return ((dist).doubleValue() != 0);
700 }
701
702 private static boolean evaluateExpression_2_1(final Double dist) {
703 return ((dist).doubleValue() != 0);
704 }
705}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java
new file mode 100644
index 00000000..3c36b831
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv10.java
@@ -0,0 +1,616 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * //inv9-DerivedFeature
54 *
55 * //inv10-Ordered Sets
56 * {@literal @}Constraint(message = "inv10", severity = "error", key = {inc})
57 * pattern inv10(inc : Income) {
58 * Income.details.amount(inc, a1);
59 * Income.details.amount(inc, a2);
60 * check(a1 != a2);//compare values
61 * }
62 * </pre></code>
63 *
64 * @see Matcher
65 * @see Match
66 *
67 */
68@SuppressWarnings("all")
69public final class Inv10 extends BaseGeneratedEMFQuerySpecification<Inv10.Matcher> {
70 /**
71 * Pattern-specific match representation of the queries.inv10 pattern,
72 * to be used in conjunction with {@link Matcher}.
73 *
74 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
75 * Each instance is a (possibly partial) substitution of pattern parameters,
76 * usable to represent a match of the pattern in the result of a query,
77 * or to specify the bound (fixed) input parameters when issuing a query.
78 *
79 * @see Matcher
80 *
81 */
82 public static abstract class Match extends BasePatternMatch {
83 private Income fInc;
84
85 private static List<String> parameterNames = makeImmutableList("inc");
86
87 private Match(final Income pInc) {
88 this.fInc = pInc;
89 }
90
91 @Override
92 public Object get(final String parameterName) {
93 switch(parameterName) {
94 case "inc": return this.fInc;
95 default: return null;
96 }
97 }
98
99 @Override
100 public Object get(final int index) {
101 switch(index) {
102 case 0: return this.fInc;
103 default: return null;
104 }
105 }
106
107 public Income getInc() {
108 return this.fInc;
109 }
110
111 @Override
112 public boolean set(final String parameterName, final Object newValue) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 if ("inc".equals(parameterName) ) {
115 this.fInc = (Income) newValue;
116 return true;
117 }
118 return false;
119 }
120
121 public void setInc(final Income pInc) {
122 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
123 this.fInc = pInc;
124 }
125
126 @Override
127 public String patternName() {
128 return "queries.inv10";
129 }
130
131 @Override
132 public List<String> parameterNames() {
133 return Inv10.Match.parameterNames;
134 }
135
136 @Override
137 public Object[] toArray() {
138 return new Object[]{fInc};
139 }
140
141 @Override
142 public Inv10.Match toImmutable() {
143 return isMutable() ? newMatch(fInc) : this;
144 }
145
146 @Override
147 public String prettyPrint() {
148 StringBuilder result = new StringBuilder();
149 result.append("\"inc\"=" + prettyPrintValue(fInc));
150 return result.toString();
151 }
152
153 @Override
154 public int hashCode() {
155 return Objects.hash(fInc);
156 }
157
158 @Override
159 public boolean equals(final Object obj) {
160 if (this == obj)
161 return true;
162 if (obj == null) {
163 return false;
164 }
165 if ((obj instanceof Inv10.Match)) {
166 Inv10.Match other = (Inv10.Match) obj;
167 return Objects.equals(fInc, other.fInc);
168 } else {
169 // this should be infrequent
170 if (!(obj instanceof IPatternMatch)) {
171 return false;
172 }
173 IPatternMatch otherSig = (IPatternMatch) obj;
174 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
175 }
176 }
177
178 @Override
179 public Inv10 specification() {
180 return Inv10.instance();
181 }
182
183 /**
184 * Returns an empty, mutable match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @return the empty match.
188 *
189 */
190 public static Inv10.Match newEmptyMatch() {
191 return new Mutable(null);
192 }
193
194 /**
195 * Returns a mutable (partial) match.
196 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
197 *
198 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
199 * @return the new, mutable (partial) match object.
200 *
201 */
202 public static Inv10.Match newMutableMatch(final Income pInc) {
203 return new Mutable(pInc);
204 }
205
206 /**
207 * Returns a new (partial) match.
208 * This can be used e.g. to call the matcher with a partial match.
209 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
210 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
211 * @return the (partial) match object.
212 *
213 */
214 public static Inv10.Match newMatch(final Income pInc) {
215 return new Immutable(pInc);
216 }
217
218 private static final class Mutable extends Inv10.Match {
219 Mutable(final Income pInc) {
220 super(pInc);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return true;
226 }
227 }
228
229 private static final class Immutable extends Inv10.Match {
230 Immutable(final Income pInc) {
231 super(pInc);
232 }
233
234 @Override
235 public boolean isMutable() {
236 return false;
237 }
238 }
239 }
240
241 /**
242 * Generated pattern matcher API of the queries.inv10 pattern,
243 * providing pattern-specific query methods.
244 *
245 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
246 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
247 *
248 * <p>Matches of the pattern will be represented as {@link Match}.
249 *
250 * <p>Original source:
251 * <code><pre>
252 * //inv9-DerivedFeature
253 *
254 * //inv10-Ordered Sets
255 * {@literal @}Constraint(message = "inv10", severity = "error", key = {inc})
256 * pattern inv10(inc : Income) {
257 * Income.details.amount(inc, a1);
258 * Income.details.amount(inc, a2);
259 * check(a1 != a2);//compare values
260 * }
261 * </pre></code>
262 *
263 * @see Match
264 * @see Inv10
265 *
266 */
267 public static class Matcher extends BaseMatcher<Inv10.Match> {
268 /**
269 * Initializes the pattern matcher within an existing VIATRA Query engine.
270 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
271 *
272 * @param engine the existing VIATRA Query engine in which this matcher will be created.
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 *
275 */
276 public static Inv10.Matcher on(final ViatraQueryEngine engine) {
277 // check if matcher already exists
278 Matcher matcher = engine.getExistingMatcher(querySpecification());
279 if (matcher == null) {
280 matcher = (Matcher)engine.getMatcher(querySpecification());
281 }
282 return matcher;
283 }
284
285 /**
286 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
287 * @return an initialized matcher
288 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
289 *
290 */
291 public static Inv10.Matcher create() {
292 return new Matcher();
293 }
294
295 private static final int POSITION_INC = 0;
296
297 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv10.Matcher.class);
298
299 /**
300 * Initializes the pattern matcher within an existing VIATRA Query engine.
301 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
302 *
303 * @param engine the existing VIATRA Query engine in which this matcher will be created.
304 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
305 *
306 */
307 private Matcher() {
308 super(querySpecification());
309 }
310
311 /**
312 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
313 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
314 * @return matches represented as a Match object.
315 *
316 */
317 public Collection<Inv10.Match> getAllMatches(final Income pInc) {
318 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
319 }
320
321 /**
322 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
323 * </p>
324 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
325 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
326 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
327 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
328 * @return a stream of matches represented as a Match object.
329 *
330 */
331 public Stream<Inv10.Match> streamAllMatches(final Income pInc) {
332 return rawStreamAllMatches(new Object[]{pInc});
333 }
334
335 /**
336 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
337 * Neither determinism nor randomness of selection is guaranteed.
338 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
339 * @return a match represented as a Match object, or null if no match is found.
340 *
341 */
342 public Optional<Inv10.Match> getOneArbitraryMatch(final Income pInc) {
343 return rawGetOneArbitraryMatch(new Object[]{pInc});
344 }
345
346 /**
347 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
348 * under any possible substitution of the unspecified parameters (if any).
349 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
350 * @return true if the input is a valid (partial) match of the pattern.
351 *
352 */
353 public boolean hasMatch(final Income pInc) {
354 return rawHasMatch(new Object[]{pInc});
355 }
356
357 /**
358 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
359 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
360 * @return the number of pattern matches found.
361 *
362 */
363 public int countMatches(final Income pInc) {
364 return rawCountMatches(new Object[]{pInc});
365 }
366
367 /**
368 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
369 * Neither determinism nor randomness of selection is guaranteed.
370 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
371 * @param processor the action that will process the selected match.
372 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
373 *
374 */
375 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super Inv10.Match> processor) {
376 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
377 }
378
379 /**
380 * Returns a new (partial) match.
381 * This can be used e.g. to call the matcher with a partial match.
382 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
383 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
384 * @return the (partial) match object.
385 *
386 */
387 public Inv10.Match newMatch(final Income pInc) {
388 return Inv10.Match.newMatch(pInc);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for inc.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
397 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for inc.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Set<Income> getAllValuesOfinc() {
406 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for inc.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 public Stream<Income> streamAllValuesOfinc() {
415 return rawStreamAllValuesOfinc(emptyArray());
416 }
417
418 @Override
419 protected Inv10.Match tupleToMatch(final Tuple t) {
420 try {
421 return Inv10.Match.newMatch((Income) t.get(POSITION_INC));
422 } catch(ClassCastException e) {
423 LOGGER.error("Element(s) in tuple not properly typed!",e);
424 return null;
425 }
426 }
427
428 @Override
429 protected Inv10.Match arrayToMatch(final Object[] match) {
430 try {
431 return Inv10.Match.newMatch((Income) match[POSITION_INC]);
432 } catch(ClassCastException e) {
433 LOGGER.error("Element(s) in array not properly typed!",e);
434 return null;
435 }
436 }
437
438 @Override
439 protected Inv10.Match arrayToMatchMutable(final Object[] match) {
440 try {
441 return Inv10.Match.newMutableMatch((Income) match[POSITION_INC]);
442 } catch(ClassCastException e) {
443 LOGGER.error("Element(s) in array not properly typed!",e);
444 return null;
445 }
446 }
447
448 /**
449 * @return the singleton instance of the query specification of this pattern
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static IQuerySpecification<Inv10.Matcher> querySpecification() {
454 return Inv10.instance();
455 }
456 }
457
458 private Inv10() {
459 super(GeneratedPQuery.INSTANCE);
460 }
461
462 /**
463 * @return the singleton instance of the query specification
464 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
465 *
466 */
467 public static Inv10 instance() {
468 try{
469 return LazyHolder.INSTANCE;
470 } catch (ExceptionInInitializerError err) {
471 throw processInitializerError(err);
472 }
473 }
474
475 @Override
476 protected Inv10.Matcher instantiate(final ViatraQueryEngine engine) {
477 return Inv10.Matcher.on(engine);
478 }
479
480 @Override
481 public Inv10.Matcher instantiate() {
482 return Inv10.Matcher.create();
483 }
484
485 @Override
486 public Inv10.Match newEmptyMatch() {
487 return Inv10.Match.newEmptyMatch();
488 }
489
490 @Override
491 public Inv10.Match newMatch(final Object... parameters) {
492 return Inv10.Match.newMatch((Taxation.Income) parameters[0]);
493 }
494
495 /**
496 * Inner class allowing the singleton instance of {@link Inv10} to be created
497 * <b>not</b> at the class load time of the outer class,
498 * but rather at the first call to {@link Inv10#instance()}.
499 *
500 * <p> This workaround is required e.g. to support recursion.
501 *
502 */
503 private static class LazyHolder {
504 private static final Inv10 INSTANCE = new Inv10();
505
506 /**
507 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
508 * This initialization order is required to support indirect recursion.
509 *
510 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
511 *
512 */
513 private static final Object STATIC_INITIALIZER = ensureInitialized();
514
515 public static Object ensureInitialized() {
516 INSTANCE.ensureInitializedInternal();
517 return null;
518 }
519 }
520
521 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
522 private static final Inv10.GeneratedPQuery INSTANCE = new GeneratedPQuery();
523
524 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
525
526 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
527
528 private GeneratedPQuery() {
529 super(PVisibility.PUBLIC);
530 }
531
532 @Override
533 public String getFullyQualifiedName() {
534 return "queries.inv10";
535 }
536
537 @Override
538 public List<String> getParameterNames() {
539 return Arrays.asList("inc");
540 }
541
542 @Override
543 public List<PParameter> getParameters() {
544 return parameters;
545 }
546
547 @Override
548 public Set<PBody> doGetContainedBodies() {
549 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
550 Set<PBody> bodies = new LinkedHashSet<>();
551 {
552 PBody body = new PBody(this);
553 PVariable var_inc = body.getOrCreateVariableByName("inc");
554 PVariable var_a1 = body.getOrCreateVariableByName("a1");
555 PVariable var_a2 = body.getOrCreateVariableByName("a2");
556 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
557 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
558 new ExportedParameter(body, var_inc, parameter_inc)
559 ));
560 // Income.details.amount(inc, a1)
561 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
562 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
563 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
564 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
565 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
566 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "amount")));
567 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
568 new Equality(body, var__virtual_1_, var_a1);
569 // Income.details.amount(inc, a2)
570 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
571 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
572 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
573 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
574 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
575 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "amount")));
576 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
577 new Equality(body, var__virtual_3_, var_a2);
578 // check(a1 != a2)
579 new ExpressionEvaluation(body, new IExpressionEvaluator() {
580
581 @Override
582 public String getShortDescription() {
583 return "Expression evaluation from pattern inv10";
584 }
585
586 @Override
587 public Iterable<String> getInputParameterNames() {
588 return Arrays.asList("a1", "a2");}
589
590 @Override
591 public Object evaluateExpression(IValueProvider provider) throws Exception {
592 Double a1 = (Double) provider.getValue("a1");
593 Double a2 = (Double) provider.getValue("a2");
594 return evaluateExpression_1_1(a1, a2);
595 }
596 }, null);
597 bodies.add(body);
598 }
599 {
600 PAnnotation annotation = new PAnnotation("Constraint");
601 annotation.addAttribute("message", "inv10");
602 annotation.addAttribute("severity", "error");
603 annotation.addAttribute("key", Arrays.asList(new Object[] {
604 new ParameterReference("inc")
605 }));
606 addAnnotation(annotation);
607 }
608 return bodies;
609 }
610 }
611
612 private static boolean evaluateExpression_1_1(final Double a1, final Double a2) {
613 boolean _notEquals = (!com.google.common.base.Objects.equal(a1, a2));
614 return _notEquals;
615 }
616}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java
new file mode 100644
index 00000000..a64ef7ff
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv11.java
@@ -0,0 +1,566 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Expense;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41import queries.X_inv11_incNotOver100;
42import queries.X_inv11_incOver100;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * //inv11-attributes-handled by multiplicity
50 * {@literal @}Constraint(message = "inv11", severity = "error", key = {exp})
51 * pattern inv11(exp : Expense) {
52 * find x_inv11_incOver100(exp);
53 * find x_inv11_incNotOver100(exp);
54 * }
55 * </pre></code>
56 *
57 * @see Matcher
58 * @see Match
59 *
60 */
61@SuppressWarnings("all")
62public final class Inv11 extends BaseGeneratedEMFQuerySpecification<Inv11.Matcher> {
63 /**
64 * Pattern-specific match representation of the queries.inv11 pattern,
65 * to be used in conjunction with {@link Matcher}.
66 *
67 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
68 * Each instance is a (possibly partial) substitution of pattern parameters,
69 * usable to represent a match of the pattern in the result of a query,
70 * or to specify the bound (fixed) input parameters when issuing a query.
71 *
72 * @see Matcher
73 *
74 */
75 public static abstract class Match extends BasePatternMatch {
76 private Expense fExp;
77
78 private static List<String> parameterNames = makeImmutableList("exp");
79
80 private Match(final Expense pExp) {
81 this.fExp = pExp;
82 }
83
84 @Override
85 public Object get(final String parameterName) {
86 switch(parameterName) {
87 case "exp": return this.fExp;
88 default: return null;
89 }
90 }
91
92 @Override
93 public Object get(final int index) {
94 switch(index) {
95 case 0: return this.fExp;
96 default: return null;
97 }
98 }
99
100 public Expense getExp() {
101 return this.fExp;
102 }
103
104 @Override
105 public boolean set(final String parameterName, final Object newValue) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 if ("exp".equals(parameterName) ) {
108 this.fExp = (Expense) newValue;
109 return true;
110 }
111 return false;
112 }
113
114 public void setExp(final Expense pExp) {
115 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
116 this.fExp = pExp;
117 }
118
119 @Override
120 public String patternName() {
121 return "queries.inv11";
122 }
123
124 @Override
125 public List<String> parameterNames() {
126 return Inv11.Match.parameterNames;
127 }
128
129 @Override
130 public Object[] toArray() {
131 return new Object[]{fExp};
132 }
133
134 @Override
135 public Inv11.Match toImmutable() {
136 return isMutable() ? newMatch(fExp) : this;
137 }
138
139 @Override
140 public String prettyPrint() {
141 StringBuilder result = new StringBuilder();
142 result.append("\"exp\"=" + prettyPrintValue(fExp));
143 return result.toString();
144 }
145
146 @Override
147 public int hashCode() {
148 return Objects.hash(fExp);
149 }
150
151 @Override
152 public boolean equals(final Object obj) {
153 if (this == obj)
154 return true;
155 if (obj == null) {
156 return false;
157 }
158 if ((obj instanceof Inv11.Match)) {
159 Inv11.Match other = (Inv11.Match) obj;
160 return Objects.equals(fExp, other.fExp);
161 } else {
162 // this should be infrequent
163 if (!(obj instanceof IPatternMatch)) {
164 return false;
165 }
166 IPatternMatch otherSig = (IPatternMatch) obj;
167 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
168 }
169 }
170
171 @Override
172 public Inv11 specification() {
173 return Inv11.instance();
174 }
175
176 /**
177 * Returns an empty, mutable match.
178 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
179 *
180 * @return the empty match.
181 *
182 */
183 public static Inv11.Match newEmptyMatch() {
184 return new Mutable(null);
185 }
186
187 /**
188 * Returns a mutable (partial) match.
189 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
190 *
191 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
192 * @return the new, mutable (partial) match object.
193 *
194 */
195 public static Inv11.Match newMutableMatch(final Expense pExp) {
196 return new Mutable(pExp);
197 }
198
199 /**
200 * Returns a new (partial) match.
201 * This can be used e.g. to call the matcher with a partial match.
202 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
203 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
204 * @return the (partial) match object.
205 *
206 */
207 public static Inv11.Match newMatch(final Expense pExp) {
208 return new Immutable(pExp);
209 }
210
211 private static final class Mutable extends Inv11.Match {
212 Mutable(final Expense pExp) {
213 super(pExp);
214 }
215
216 @Override
217 public boolean isMutable() {
218 return true;
219 }
220 }
221
222 private static final class Immutable extends Inv11.Match {
223 Immutable(final Expense pExp) {
224 super(pExp);
225 }
226
227 @Override
228 public boolean isMutable() {
229 return false;
230 }
231 }
232 }
233
234 /**
235 * Generated pattern matcher API of the queries.inv11 pattern,
236 * providing pattern-specific query methods.
237 *
238 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
239 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
240 *
241 * <p>Matches of the pattern will be represented as {@link Match}.
242 *
243 * <p>Original source:
244 * <code><pre>
245 * //inv11-attributes-handled by multiplicity
246 * {@literal @}Constraint(message = "inv11", severity = "error", key = {exp})
247 * pattern inv11(exp : Expense) {
248 * find x_inv11_incOver100(exp);
249 * find x_inv11_incNotOver100(exp);
250 * }
251 * </pre></code>
252 *
253 * @see Match
254 * @see Inv11
255 *
256 */
257 public static class Matcher extends BaseMatcher<Inv11.Match> {
258 /**
259 * Initializes the pattern matcher within an existing VIATRA Query engine.
260 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
261 *
262 * @param engine the existing VIATRA Query engine in which this matcher will be created.
263 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
264 *
265 */
266 public static Inv11.Matcher on(final ViatraQueryEngine engine) {
267 // check if matcher already exists
268 Matcher matcher = engine.getExistingMatcher(querySpecification());
269 if (matcher == null) {
270 matcher = (Matcher)engine.getMatcher(querySpecification());
271 }
272 return matcher;
273 }
274
275 /**
276 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
277 * @return an initialized matcher
278 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
279 *
280 */
281 public static Inv11.Matcher create() {
282 return new Matcher();
283 }
284
285 private static final int POSITION_EXP = 0;
286
287 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv11.Matcher.class);
288
289 /**
290 * Initializes the pattern matcher within an existing VIATRA Query engine.
291 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
292 *
293 * @param engine the existing VIATRA Query engine in which this matcher will be created.
294 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
295 *
296 */
297 private Matcher() {
298 super(querySpecification());
299 }
300
301 /**
302 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
303 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
304 * @return matches represented as a Match object.
305 *
306 */
307 public Collection<Inv11.Match> getAllMatches(final Expense pExp) {
308 return rawStreamAllMatches(new Object[]{pExp}).collect(Collectors.toSet());
309 }
310
311 /**
312 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
313 * </p>
314 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
315 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
316 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
317 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
318 * @return a stream of matches represented as a Match object.
319 *
320 */
321 public Stream<Inv11.Match> streamAllMatches(final Expense pExp) {
322 return rawStreamAllMatches(new Object[]{pExp});
323 }
324
325 /**
326 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
327 * Neither determinism nor randomness of selection is guaranteed.
328 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
329 * @return a match represented as a Match object, or null if no match is found.
330 *
331 */
332 public Optional<Inv11.Match> getOneArbitraryMatch(final Expense pExp) {
333 return rawGetOneArbitraryMatch(new Object[]{pExp});
334 }
335
336 /**
337 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
338 * under any possible substitution of the unspecified parameters (if any).
339 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
340 * @return true if the input is a valid (partial) match of the pattern.
341 *
342 */
343 public boolean hasMatch(final Expense pExp) {
344 return rawHasMatch(new Object[]{pExp});
345 }
346
347 /**
348 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
349 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
350 * @return the number of pattern matches found.
351 *
352 */
353 public int countMatches(final Expense pExp) {
354 return rawCountMatches(new Object[]{pExp});
355 }
356
357 /**
358 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
359 * Neither determinism nor randomness of selection is guaranteed.
360 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
361 * @param processor the action that will process the selected match.
362 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
363 *
364 */
365 public boolean forOneArbitraryMatch(final Expense pExp, final Consumer<? super Inv11.Match> processor) {
366 return rawForOneArbitraryMatch(new Object[]{pExp}, processor);
367 }
368
369 /**
370 * Returns a new (partial) match.
371 * This can be used e.g. to call the matcher with a partial match.
372 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
373 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
374 * @return the (partial) match object.
375 *
376 */
377 public Inv11.Match newMatch(final Expense pExp) {
378 return Inv11.Match.newMatch(pExp);
379 }
380
381 /**
382 * Retrieve the set of values that occur in matches for exp.
383 * @return the Set of all values or empty set if there are no matches
384 *
385 */
386 protected Stream<Expense> rawStreamAllValuesOfexp(final Object[] parameters) {
387 return rawStreamAllValues(POSITION_EXP, parameters).map(Expense.class::cast);
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for exp.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 public Set<Expense> getAllValuesOfexp() {
396 return rawStreamAllValuesOfexp(emptyArray()).collect(Collectors.toSet());
397 }
398
399 /**
400 * Retrieve the set of values that occur in matches for exp.
401 * @return the Set of all values or empty set if there are no matches
402 *
403 */
404 public Stream<Expense> streamAllValuesOfexp() {
405 return rawStreamAllValuesOfexp(emptyArray());
406 }
407
408 @Override
409 protected Inv11.Match tupleToMatch(final Tuple t) {
410 try {
411 return Inv11.Match.newMatch((Expense) t.get(POSITION_EXP));
412 } catch(ClassCastException e) {
413 LOGGER.error("Element(s) in tuple not properly typed!",e);
414 return null;
415 }
416 }
417
418 @Override
419 protected Inv11.Match arrayToMatch(final Object[] match) {
420 try {
421 return Inv11.Match.newMatch((Expense) match[POSITION_EXP]);
422 } catch(ClassCastException e) {
423 LOGGER.error("Element(s) in array not properly typed!",e);
424 return null;
425 }
426 }
427
428 @Override
429 protected Inv11.Match arrayToMatchMutable(final Object[] match) {
430 try {
431 return Inv11.Match.newMutableMatch((Expense) match[POSITION_EXP]);
432 } catch(ClassCastException e) {
433 LOGGER.error("Element(s) in array not properly typed!",e);
434 return null;
435 }
436 }
437
438 /**
439 * @return the singleton instance of the query specification of this pattern
440 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
441 *
442 */
443 public static IQuerySpecification<Inv11.Matcher> querySpecification() {
444 return Inv11.instance();
445 }
446 }
447
448 private Inv11() {
449 super(GeneratedPQuery.INSTANCE);
450 }
451
452 /**
453 * @return the singleton instance of the query specification
454 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
455 *
456 */
457 public static Inv11 instance() {
458 try{
459 return LazyHolder.INSTANCE;
460 } catch (ExceptionInInitializerError err) {
461 throw processInitializerError(err);
462 }
463 }
464
465 @Override
466 protected Inv11.Matcher instantiate(final ViatraQueryEngine engine) {
467 return Inv11.Matcher.on(engine);
468 }
469
470 @Override
471 public Inv11.Matcher instantiate() {
472 return Inv11.Matcher.create();
473 }
474
475 @Override
476 public Inv11.Match newEmptyMatch() {
477 return Inv11.Match.newEmptyMatch();
478 }
479
480 @Override
481 public Inv11.Match newMatch(final Object... parameters) {
482 return Inv11.Match.newMatch((Taxation.Expense) parameters[0]);
483 }
484
485 /**
486 * Inner class allowing the singleton instance of {@link Inv11} to be created
487 * <b>not</b> at the class load time of the outer class,
488 * but rather at the first call to {@link Inv11#instance()}.
489 *
490 * <p> This workaround is required e.g. to support recursion.
491 *
492 */
493 private static class LazyHolder {
494 private static final Inv11 INSTANCE = new Inv11();
495
496 /**
497 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
498 * This initialization order is required to support indirect recursion.
499 *
500 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
501 *
502 */
503 private static final Object STATIC_INITIALIZER = ensureInitialized();
504
505 public static Object ensureInitialized() {
506 INSTANCE.ensureInitializedInternal();
507 return null;
508 }
509 }
510
511 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
512 private static final Inv11.GeneratedPQuery INSTANCE = new GeneratedPQuery();
513
514 private final PParameter parameter_exp = new PParameter("exp", "Taxation.Expense", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Expense")), PParameterDirection.INOUT);
515
516 private final List<PParameter> parameters = Arrays.asList(parameter_exp);
517
518 private GeneratedPQuery() {
519 super(PVisibility.PUBLIC);
520 }
521
522 @Override
523 public String getFullyQualifiedName() {
524 return "queries.inv11";
525 }
526
527 @Override
528 public List<String> getParameterNames() {
529 return Arrays.asList("exp");
530 }
531
532 @Override
533 public List<PParameter> getParameters() {
534 return parameters;
535 }
536
537 @Override
538 public Set<PBody> doGetContainedBodies() {
539 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
540 Set<PBody> bodies = new LinkedHashSet<>();
541 {
542 PBody body = new PBody(this);
543 PVariable var_exp = body.getOrCreateVariableByName("exp");
544 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
545 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
546 new ExportedParameter(body, var_exp, parameter_exp)
547 ));
548 // find x_inv11_incOver100(exp)
549 new PositivePatternCall(body, Tuples.flatTupleOf(var_exp), X_inv11_incOver100.instance().getInternalQueryRepresentation());
550 // find x_inv11_incNotOver100(exp)
551 new PositivePatternCall(body, Tuples.flatTupleOf(var_exp), X_inv11_incNotOver100.instance().getInternalQueryRepresentation());
552 bodies.add(body);
553 }
554 {
555 PAnnotation annotation = new PAnnotation("Constraint");
556 annotation.addAttribute("message", "inv11");
557 annotation.addAttribute("severity", "error");
558 annotation.addAttribute("key", Arrays.asList(new Object[] {
559 new ParameterReference("exp")
560 }));
561 addAnnotation(annotation);
562 }
563 return bodies;
564 }
565 }
566}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java
new file mode 100644
index 00000000..2a539a1d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv12.java
@@ -0,0 +1,589 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Tax_Payer;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
41import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
42import queries.X_inv12_notNonRes;
43import queries.X_inv12_notZZ;
44
45/**
46 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
47 *
48 * <p>Original source:
49 * <code><pre>
50 * //inv12
51 * //exists - handled logically
52 * {@literal @}Constraint(message = "inv12", severity = "error", key = {tp})
53 * pattern inv12(tp : Tax_Payer) {
54 * Tax_Payer.addresses(tp, hab_add);
55 * Habitual_Address(hab_add);
56 * neg find x_inv12_notZZ(hab_add);
57 * Tax_Payer.incomes(tp, inc);
58 * Local_Income(inc);
59 * neg find x_inv12_notNonRes(tp);
60 * }
61 * </pre></code>
62 *
63 * @see Matcher
64 * @see Match
65 *
66 */
67@SuppressWarnings("all")
68public final class Inv12 extends BaseGeneratedEMFQuerySpecification<Inv12.Matcher> {
69 /**
70 * Pattern-specific match representation of the queries.inv12 pattern,
71 * to be used in conjunction with {@link Matcher}.
72 *
73 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
74 * Each instance is a (possibly partial) substitution of pattern parameters,
75 * usable to represent a match of the pattern in the result of a query,
76 * or to specify the bound (fixed) input parameters when issuing a query.
77 *
78 * @see Matcher
79 *
80 */
81 public static abstract class Match extends BasePatternMatch {
82 private Tax_Payer fTp;
83
84 private static List<String> parameterNames = makeImmutableList("tp");
85
86 private Match(final Tax_Payer pTp) {
87 this.fTp = pTp;
88 }
89
90 @Override
91 public Object get(final String parameterName) {
92 switch(parameterName) {
93 case "tp": return this.fTp;
94 default: return null;
95 }
96 }
97
98 @Override
99 public Object get(final int index) {
100 switch(index) {
101 case 0: return this.fTp;
102 default: return null;
103 }
104 }
105
106 public Tax_Payer getTp() {
107 return this.fTp;
108 }
109
110 @Override
111 public boolean set(final String parameterName, final Object newValue) {
112 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
113 if ("tp".equals(parameterName) ) {
114 this.fTp = (Tax_Payer) newValue;
115 return true;
116 }
117 return false;
118 }
119
120 public void setTp(final Tax_Payer pTp) {
121 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
122 this.fTp = pTp;
123 }
124
125 @Override
126 public String patternName() {
127 return "queries.inv12";
128 }
129
130 @Override
131 public List<String> parameterNames() {
132 return Inv12.Match.parameterNames;
133 }
134
135 @Override
136 public Object[] toArray() {
137 return new Object[]{fTp};
138 }
139
140 @Override
141 public Inv12.Match toImmutable() {
142 return isMutable() ? newMatch(fTp) : this;
143 }
144
145 @Override
146 public String prettyPrint() {
147 StringBuilder result = new StringBuilder();
148 result.append("\"tp\"=" + prettyPrintValue(fTp));
149 return result.toString();
150 }
151
152 @Override
153 public int hashCode() {
154 return Objects.hash(fTp);
155 }
156
157 @Override
158 public boolean equals(final Object obj) {
159 if (this == obj)
160 return true;
161 if (obj == null) {
162 return false;
163 }
164 if ((obj instanceof Inv12.Match)) {
165 Inv12.Match other = (Inv12.Match) obj;
166 return Objects.equals(fTp, other.fTp);
167 } else {
168 // this should be infrequent
169 if (!(obj instanceof IPatternMatch)) {
170 return false;
171 }
172 IPatternMatch otherSig = (IPatternMatch) obj;
173 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
174 }
175 }
176
177 @Override
178 public Inv12 specification() {
179 return Inv12.instance();
180 }
181
182 /**
183 * Returns an empty, mutable match.
184 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
185 *
186 * @return the empty match.
187 *
188 */
189 public static Inv12.Match newEmptyMatch() {
190 return new Mutable(null);
191 }
192
193 /**
194 * Returns a mutable (partial) match.
195 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
196 *
197 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
198 * @return the new, mutable (partial) match object.
199 *
200 */
201 public static Inv12.Match newMutableMatch(final Tax_Payer pTp) {
202 return new Mutable(pTp);
203 }
204
205 /**
206 * Returns a new (partial) match.
207 * This can be used e.g. to call the matcher with a partial match.
208 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
209 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
210 * @return the (partial) match object.
211 *
212 */
213 public static Inv12.Match newMatch(final Tax_Payer pTp) {
214 return new Immutable(pTp);
215 }
216
217 private static final class Mutable extends Inv12.Match {
218 @Override
219 public boolean isMutable() {
220 return true;
221 }
222 }
223
224 private static final class Immutable extends Inv12.Match {
225 Immutable(final Tax_Payer pTp) {
226 super(pTp);
227 }
228
229 @Override
230 public boolean isMutable() {
231 return false;
232 }
233 }
234 }
235
236 /**
237 * Generated pattern matcher API of the queries.inv12 pattern,
238 * providing pattern-specific query methods.
239 *
240 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
241 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
242 *
243 * <p>Matches of the pattern will be represented as {@link Match}.
244 *
245 * <p>Original source:
246 * <code><pre>
247 * //inv12
248 * //exists - handled logically
249 * {@literal @}Constraint(message = "inv12", severity = "error", key = {tp})
250 * pattern inv12(tp : Tax_Payer) {
251 * Tax_Payer.addresses(tp, hab_add);
252 * Habitual_Address(hab_add);
253 * neg find x_inv12_notZZ(hab_add);
254 * Tax_Payer.incomes(tp, inc);
255 * Local_Income(inc);
256 * neg find x_inv12_notNonRes(tp);
257 * }
258 * </pre></code>
259 *
260 * @see Match
261 * @see Inv12
262 *
263 */
264 public static class Matcher extends BaseMatcher<Inv12.Match> {
265 /**
266 * Initializes the pattern matcher within an existing VIATRA Query engine.
267 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
268 *
269 * @param engine the existing VIATRA Query engine in which this matcher will be created.
270 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
271 *
272 */
273 public static Inv12.Matcher on(final ViatraQueryEngine engine) {
274 // check if matcher already exists
275 Matcher matcher = engine.getExistingMatcher(querySpecification());
276 if (matcher == null) {
277 matcher = (Matcher)engine.getMatcher(querySpecification());
278 }
279 return matcher;
280 }
281
282 /**
283 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
284 * @return an initialized matcher
285 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
286 *
287 */
288 public static Inv12.Matcher create() {
289 return new Matcher();
290 }
291
292 private static final int POSITION_TP = 0;
293
294 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv12.Matcher.class);
295
296 /**
297 * Initializes the pattern matcher within an existing VIATRA Query engine.
298 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
299 *
300 * @param engine the existing VIATRA Query engine in which this matcher will be created.
301 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
302 *
303 */
304 private Matcher() {
305 super(querySpecification());
306 }
307
308 /**
309 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
310 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
311 * @return matches represented as a Match object.
312 *
313 */
314 public Collection<Inv12.Match> getAllMatches(final Tax_Payer pTp) {
315 return rawStreamAllMatches(new Object[]{pTp}).collect(Collectors.toSet());
316 }
317
318 /**
319 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
320 * </p>
321 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
322 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
323 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
324 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
325 * @return a stream of matches represented as a Match object.
326 *
327 */
328 public Stream<Inv12.Match> streamAllMatches(final Tax_Payer pTp) {
329 return rawStreamAllMatches(new Object[]{pTp});
330 }
331
332 /**
333 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
334 * Neither determinism nor randomness of selection is guaranteed.
335 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
336 * @return a match represented as a Match object, or null if no match is found.
337 *
338 */
339 public Optional<Inv12.Match> getOneArbitraryMatch(final Tax_Payer pTp) {
340 return rawGetOneArbitraryMatch(new Object[]{pTp});
341 }
342
343 /**
344 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
345 * under any possible substitution of the unspecified parameters (if any).
346 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
347 * @return true if the input is a valid (partial) match of the pattern.
348 *
349 */
350 public boolean hasMatch(final Tax_Payer pTp) {
351 return rawHasMatch(new Object[]{pTp});
352 }
353
354 /**
355 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
356 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
357 * @return the number of pattern matches found.
358 *
359 */
360 public int countMatches(final Tax_Payer pTp) {
361 return rawCountMatches(new Object[]{pTp});
362 }
363
364 /**
365 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
366 * Neither determinism nor randomness of selection is guaranteed.
367 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
368 * @param processor the action that will process the selected match.
369 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
370 *
371 */
372 public boolean forOneArbitraryMatch(final Tax_Payer pTp, final Consumer<? super Inv12.Match> processor) {
373 return rawForOneArbitraryMatch(new Object[]{pTp}, processor);
374 }
375
376 /**
377 * Returns a new (partial) match.
378 * This can be used e.g. to call the matcher with a partial match.
379 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
380 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
381 * @return the (partial) match object.
382 *
383 */
384 public Inv12.Match newMatch();
385
386 /**
387 * Retrieve the set of values that occur in matches for tp.
388 * @return the Set of all values or empty set if there are no matches
389 *
390 */
391 protected Stream<Tax_Payer> rawStreamAllValuesOftp(final Object[] parameters) {
392 return rawStreamAllValues(POSITION_TP, parameters).map(Tax_Payer.class::cast);
393 }
394
395 /**
396 * Retrieve the set of values that occur in matches for tp.
397 * @return the Set of all values or empty set if there are no matches
398 *
399 */
400 public Set<Tax_Payer> getAllValuesOftp() {
401 return rawStreamAllValuesOftp(emptyArray()).collect(Collectors.toSet());
402 }
403
404 /**
405 * Retrieve the set of values that occur in matches for tp.
406 * @return the Set of all values or empty set if there are no matches
407 *
408 */
409 public Stream<Tax_Payer> streamAllValuesOftp() {
410 return rawStreamAllValuesOftp(emptyArray());
411 }
412
413 @Override
414 protected Inv12.Match tupleToMatch(final Tuple t) {
415 try {
416 return Inv12.Match.newMatch((Tax_Payer) t.get(POSITION_TP));
417 } catch(ClassCastException e) {
418 LOGGER.error("Element(s) in tuple not properly typed!",e);
419 return null;
420 }
421 }
422
423 @Override
424 protected Inv12.Match arrayToMatch(final Object[] match) {
425 try {
426 return Inv12.Match.newMatch((Tax_Payer) match[POSITION_TP]);
427 } catch(ClassCastException e) {
428 LOGGER.error("Element(s) in array not properly typed!",e);
429 return null;
430 }
431 }
432
433 @Override
434 protected Inv12.Match arrayToMatchMutable(final Object[] match) {
435 try {
436 return Inv12.Match.newMutableMatch((Tax_Payer) match[POSITION_TP]);
437 } catch(ClassCastException e) {
438 LOGGER.error("Element(s) in array not properly typed!",e);
439 return null;
440 }
441 }
442
443 /**
444 * @return the singleton instance of the query specification of this pattern
445 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
446 *
447 */
448 public static IQuerySpecification<Inv12.Matcher> querySpecification() {
449 return Inv12.instance();
450 }
451 }
452
453 private Inv12() {
454 super(GeneratedPQuery.INSTANCE);
455 }
456
457 /**
458 * @return the singleton instance of the query specification
459 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
460 *
461 */
462 public static Inv12 instance() {
463 try{
464 return LazyHolder.INSTANCE;
465 } catch (ExceptionInInitializerError err) {
466 throw processInitializerError(err);
467 }
468 }
469
470 @Override
471 protected Inv12.Matcher instantiate(final ViatraQueryEngine engine) {
472 return Inv12.Matcher.on(engine);
473 }
474
475 @Override
476 public Inv12.Matcher instantiate() {
477 return Inv12.Matcher.create();
478 }
479
480 @Override
481 public Inv12.Match newEmptyMatch() {
482 return Inv12.Match.newEmptyMatch();
483 }
484
485 @Override
486 public Inv12.Match newMatch(final Object... parameters) {
487 return Inv12.Match.newMatch((Taxation.Tax_Payer) parameters[0]);
488 }
489
490 /**
491 * Inner class allowing the singleton instance of {@link Inv12} to be created
492 * <b>not</b> at the class load time of the outer class,
493 * but rather at the first call to {@link Inv12#instance()}.
494 *
495 * <p> This workaround is required e.g. to support recursion.
496 *
497 */
498 private static class LazyHolder {
499 private static final Inv12 INSTANCE = new Inv12();
500
501 /**
502 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
503 * This initialization order is required to support indirect recursion.
504 *
505 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
506 *
507 */
508 private static final Object STATIC_INITIALIZER = ensureInitialized();
509
510 public static Object ensureInitialized() {
511 INSTANCE.ensureInitializedInternal();
512 return null;
513 }
514 }
515
516 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
517 private static final Inv12.GeneratedPQuery INSTANCE = new GeneratedPQuery();
518
519 private final PParameter parameter_tp;
520
521 private final List<PParameter> parameters = Arrays.asList(parameter_tp);
522
523 private GeneratedPQuery() {
524 super(PVisibility.PUBLIC);
525 }
526
527 @Override
528 public String getFullyQualifiedName() {
529 return "queries.inv12";
530 }
531
532 @Override
533 public List<String> getParameterNames() {
534 return Arrays.asList("tp");
535 }
536
537 @Override
538 public List<PParameter> getParameters() {
539 return parameters;
540 }
541
542 @Override
543 public Set<PBody> doGetContainedBodies() {
544 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
545 Set<PBody> bodies = new LinkedHashSet<>();
546 {
547 PBody body = new PBody(this);
548 PVariable var_tp = body.getOrCreateVariableByName("tp");
549 PVariable var_hab_add = body.getOrCreateVariableByName("hab_add");
550 PVariable var_inc = body.getOrCreateVariableByName("inc");
551 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
552 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
553 new ExportedParameter(body, var_tp, parameter_tp)
554 ));
555 // Tax_Payer.addresses(tp, hab_add)
556 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
557 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
558 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "addresses")));
559 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Address")));
560 new Equality(body, var__virtual_0_, var_hab_add);
561 // Habitual_Address(hab_add)
562 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Habitual_Address")));
563 // neg find x_inv12_notZZ(hab_add)
564 new NegativePatternCall(body, Tuples.flatTupleOf(var_hab_add), X_inv12_notZZ.instance().getInternalQueryRepresentation());
565 // Tax_Payer.incomes(tp, inc)
566 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
567 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
568 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Tax_Payer", "incomes")));
569 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
570 new Equality(body, var__virtual_1_, var_inc);
571 // Local_Income(inc)
572 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Local_Income")));
573 // neg find x_inv12_notNonRes(tp)
574 new NegativePatternCall(body, Tuples.flatTupleOf(var_tp), X_inv12_notNonRes.instance().getInternalQueryRepresentation());
575 bodies.add(body);
576 }
577 {
578 PAnnotation annotation = new PAnnotation("Constraint");
579 annotation.addAttribute("message", "inv12");
580 annotation.addAttribute("severity", "error");
581 annotation.addAttribute("key", Arrays.asList(new Object[] {
582 new ParameterReference("tp")
583 }));
584 addAnnotation(annotation);
585 }
586 return bodies;
587 }
588 }
589}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java
new file mode 100644
index 00000000..c162969f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv13.java
@@ -0,0 +1,591 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Tax_Payer;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
34import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46import queries.X_inv13;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * //inv13 - Added new containment rel Phys_Pers-{@literal >}Address
54 * //exists - handled logically
55 * {@literal @}Constraint(message = "inv13", severity = "error", key = {tp})
56 * pattern inv13(tp : Tax_Payer) {
57 * Tax_Payer.addresses(tp, hab_add);
58 * Habitual_Address(hab_add);
59 * Address.country(hab_add, ::ZZ);
60 * neg find x_inv13(tp);
61 * }
62 * </pre></code>
63 *
64 * @see Matcher
65 * @see Match
66 *
67 */
68@SuppressWarnings("all")
69public final class Inv13 extends BaseGeneratedEMFQuerySpecification<Inv13.Matcher> {
70 /**
71 * Pattern-specific match representation of the queries.inv13 pattern,
72 * to be used in conjunction with {@link Matcher}.
73 *
74 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
75 * Each instance is a (possibly partial) substitution of pattern parameters,
76 * usable to represent a match of the pattern in the result of a query,
77 * or to specify the bound (fixed) input parameters when issuing a query.
78 *
79 * @see Matcher
80 *
81 */
82 public static abstract class Match extends BasePatternMatch {
83 private Tax_Payer fTp;
84
85 private static List<String> parameterNames = makeImmutableList("tp");
86
87 private Match(final Tax_Payer pTp) {
88 this.fTp = pTp;
89 }
90
91 @Override
92 public Object get(final String parameterName) {
93 switch(parameterName) {
94 case "tp": return this.fTp;
95 default: return null;
96 }
97 }
98
99 @Override
100 public Object get(final int index) {
101 switch(index) {
102 case 0: return this.fTp;
103 default: return null;
104 }
105 }
106
107 public Tax_Payer getTp() {
108 return this.fTp;
109 }
110
111 @Override
112 public boolean set(final String parameterName, final Object newValue) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 if ("tp".equals(parameterName) ) {
115 this.fTp = (Tax_Payer) newValue;
116 return true;
117 }
118 return false;
119 }
120
121 public void setTp(final Tax_Payer pTp) {
122 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
123 this.fTp = pTp;
124 }
125
126 @Override
127 public String patternName() {
128 return "queries.inv13";
129 }
130
131 @Override
132 public List<String> parameterNames() {
133 return Inv13.Match.parameterNames;
134 }
135
136 @Override
137 public Object[] toArray() {
138 return new Object[]{fTp};
139 }
140
141 @Override
142 public Inv13.Match toImmutable() {
143 return isMutable() ? newMatch(fTp) : this;
144 }
145
146 @Override
147 public String prettyPrint() {
148 StringBuilder result = new StringBuilder();
149 result.append("\"tp\"=" + prettyPrintValue(fTp));
150 return result.toString();
151 }
152
153 @Override
154 public int hashCode() {
155 return Objects.hash(fTp);
156 }
157
158 @Override
159 public boolean equals(final Object obj) {
160 if (this == obj)
161 return true;
162 if (obj == null) {
163 return false;
164 }
165 if ((obj instanceof Inv13.Match)) {
166 Inv13.Match other = (Inv13.Match) obj;
167 return Objects.equals(fTp, other.fTp);
168 } else {
169 // this should be infrequent
170 if (!(obj instanceof IPatternMatch)) {
171 return false;
172 }
173 IPatternMatch otherSig = (IPatternMatch) obj;
174 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
175 }
176 }
177
178 @Override
179 public Inv13 specification() {
180 return Inv13.instance();
181 }
182
183 /**
184 * Returns an empty, mutable match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @return the empty match.
188 *
189 */
190 public static Inv13.Match newEmptyMatch() {
191 return new Mutable(null);
192 }
193
194 /**
195 * Returns a mutable (partial) match.
196 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
197 *
198 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
199 * @return the new, mutable (partial) match object.
200 *
201 */
202 public static Inv13.Match newMutableMatch(final Tax_Payer pTp) {
203 return new Mutable(pTp);
204 }
205
206 /**
207 * Returns a new (partial) match.
208 * This can be used e.g. to call the matcher with a partial match.
209 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
210 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
211 * @return the (partial) match object.
212 *
213 */
214 public static Inv13.Match newMatch(final Tax_Payer pTp) {
215 return new Immutable(pTp);
216 }
217
218 private static final class Mutable extends Inv13.Match {
219 Mutable(final Tax_Payer pTp) {
220 super(pTp);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return true;
226 }
227 }
228
229 private static final class Immutable extends Inv13.Match {
230 Immutable(final Tax_Payer pTp) {
231 super(pTp);
232 }
233
234 @Override
235 public boolean isMutable() {
236 return false;
237 }
238 }
239 }
240
241 /**
242 * Generated pattern matcher API of the queries.inv13 pattern,
243 * providing pattern-specific query methods.
244 *
245 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
246 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
247 *
248 * <p>Matches of the pattern will be represented as {@link Match}.
249 *
250 * <p>Original source:
251 * <code><pre>
252 * //inv13 - Added new containment rel Phys_Pers-{@literal >}Address
253 * //exists - handled logically
254 * {@literal @}Constraint(message = "inv13", severity = "error", key = {tp})
255 * pattern inv13(tp : Tax_Payer) {
256 * Tax_Payer.addresses(tp, hab_add);
257 * Habitual_Address(hab_add);
258 * Address.country(hab_add, ::ZZ);
259 * neg find x_inv13(tp);
260 * }
261 * </pre></code>
262 *
263 * @see Match
264 * @see Inv13
265 *
266 */
267 public static class Matcher extends BaseMatcher<Inv13.Match> {
268 /**
269 * Initializes the pattern matcher within an existing VIATRA Query engine.
270 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
271 *
272 * @param engine the existing VIATRA Query engine in which this matcher will be created.
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 *
275 */
276 public static Inv13.Matcher on(final ViatraQueryEngine engine) {
277 // check if matcher already exists
278 Matcher matcher = engine.getExistingMatcher(querySpecification());
279 if (matcher == null) {
280 matcher = (Matcher)engine.getMatcher(querySpecification());
281 }
282 return matcher;
283 }
284
285 /**
286 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
287 * @return an initialized matcher
288 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
289 *
290 */
291 public static Inv13.Matcher create() {
292 return new Matcher();
293 }
294
295 private static final int POSITION_TP = 0;
296
297 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv13.Matcher.class);
298
299 /**
300 * Initializes the pattern matcher within an existing VIATRA Query engine.
301 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
302 *
303 * @param engine the existing VIATRA Query engine in which this matcher will be created.
304 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
305 *
306 */
307 private Matcher() {
308 super(querySpecification());
309 }
310
311 /**
312 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
313 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
314 * @return matches represented as a Match object.
315 *
316 */
317 public Collection<Inv13.Match> getAllMatches(final Tax_Payer pTp) {
318 return rawStreamAllMatches(new Object[]{pTp}).collect(Collectors.toSet());
319 }
320
321 /**
322 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
323 * </p>
324 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
325 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
326 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
327 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
328 * @return a stream of matches represented as a Match object.
329 *
330 */
331 public Stream<Inv13.Match> streamAllMatches(final Tax_Payer pTp) {
332 return rawStreamAllMatches(new Object[]{pTp});
333 }
334
335 /**
336 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
337 * Neither determinism nor randomness of selection is guaranteed.
338 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
339 * @return a match represented as a Match object, or null if no match is found.
340 *
341 */
342 public Optional<Inv13.Match> getOneArbitraryMatch(final Tax_Payer pTp) {
343 return rawGetOneArbitraryMatch(new Object[]{pTp});
344 }
345
346 /**
347 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
348 * under any possible substitution of the unspecified parameters (if any).
349 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
350 * @return true if the input is a valid (partial) match of the pattern.
351 *
352 */
353 public boolean hasMatch(final Tax_Payer pTp) {
354 return rawHasMatch(new Object[]{pTp});
355 }
356
357 /**
358 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
359 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
360 * @return the number of pattern matches found.
361 *
362 */
363 public int countMatches(final Tax_Payer pTp) {
364 return rawCountMatches(new Object[]{pTp});
365 }
366
367 /**
368 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
369 * Neither determinism nor randomness of selection is guaranteed.
370 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
371 * @param processor the action that will process the selected match.
372 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
373 *
374 */
375 public boolean forOneArbitraryMatch(final Tax_Payer pTp, final Consumer<? super Inv13.Match> processor) {
376 return rawForOneArbitraryMatch(new Object[]{pTp}, processor);
377 }
378
379 /**
380 * Returns a new (partial) match.
381 * This can be used e.g. to call the matcher with a partial match.
382 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
383 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
384 * @return the (partial) match object.
385 *
386 */
387 public Inv13.Match newMatch(final Tax_Payer pTp) {
388 return Inv13.Match.newMatch(pTp);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for tp.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 protected Stream<Tax_Payer> rawStreamAllValuesOftp(final Object[] parameters) {
397 return rawStreamAllValues(POSITION_TP, parameters).map(Tax_Payer.class::cast);
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for tp.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Set<Tax_Payer> getAllValuesOftp() {
406 return rawStreamAllValuesOftp(emptyArray()).collect(Collectors.toSet());
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for tp.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 public Stream<Tax_Payer> streamAllValuesOftp() {
415 return rawStreamAllValuesOftp(emptyArray());
416 }
417
418 @Override
419 protected Inv13.Match tupleToMatch(final Tuple t) {
420 try {
421 return Inv13.Match.newMatch((Tax_Payer) t.get(POSITION_TP));
422 } catch(ClassCastException e) {
423 LOGGER.error("Element(s) in tuple not properly typed!",e);
424 return null;
425 }
426 }
427
428 @Override
429 protected Inv13.Match arrayToMatch(final Object[] match) {
430 try {
431 return Inv13.Match.newMatch((Tax_Payer) match[POSITION_TP]);
432 } catch(ClassCastException e) {
433 LOGGER.error("Element(s) in array not properly typed!",e);
434 return null;
435 }
436 }
437
438 @Override
439 protected Inv13.Match arrayToMatchMutable(final Object[] match) {
440 try {
441 return Inv13.Match.newMutableMatch((Tax_Payer) match[POSITION_TP]);
442 } catch(ClassCastException e) {
443 LOGGER.error("Element(s) in array not properly typed!",e);
444 return null;
445 }
446 }
447
448 /**
449 * @return the singleton instance of the query specification of this pattern
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static IQuerySpecification<Inv13.Matcher> querySpecification() {
454 return Inv13.instance();
455 }
456 }
457
458 private Inv13() {
459 super(GeneratedPQuery.INSTANCE);
460 }
461
462 /**
463 * @return the singleton instance of the query specification
464 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
465 *
466 */
467 public static Inv13 instance() {
468 try{
469 return LazyHolder.INSTANCE;
470 } catch (ExceptionInInitializerError err) {
471 throw processInitializerError(err);
472 }
473 }
474
475 @Override
476 protected Inv13.Matcher instantiate(final ViatraQueryEngine engine) {
477 return Inv13.Matcher.on(engine);
478 }
479
480 @Override
481 public Inv13.Matcher instantiate() {
482 return Inv13.Matcher.create();
483 }
484
485 @Override
486 public Inv13.Match newEmptyMatch() {
487 return Inv13.Match.newEmptyMatch();
488 }
489
490 @Override
491 public Inv13.Match newMatch(final Object... parameters) {
492 return Inv13.Match.newMatch((Taxation.Tax_Payer) parameters[0]);
493 }
494
495 /**
496 * Inner class allowing the singleton instance of {@link Inv13} to be created
497 * <b>not</b> at the class load time of the outer class,
498 * but rather at the first call to {@link Inv13#instance()}.
499 *
500 * <p> This workaround is required e.g. to support recursion.
501 *
502 */
503 private static class LazyHolder {
504 private static final Inv13 INSTANCE = new Inv13();
505
506 /**
507 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
508 * This initialization order is required to support indirect recursion.
509 *
510 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
511 *
512 */
513 private static final Object STATIC_INITIALIZER = ensureInitialized();
514
515 public static Object ensureInitialized() {
516 INSTANCE.ensureInitializedInternal();
517 return null;
518 }
519 }
520
521 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
522 private static final Inv13.GeneratedPQuery INSTANCE = new GeneratedPQuery();
523
524 private final PParameter parameter_tp = new PParameter("tp", "Taxation.Tax_Payer", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Tax_Payer")), PParameterDirection.INOUT);
525
526 private final List<PParameter> parameters = Arrays.asList(parameter_tp);
527
528 private GeneratedPQuery() {
529 super(PVisibility.PUBLIC);
530 }
531
532 @Override
533 public String getFullyQualifiedName() {
534 return "queries.inv13";
535 }
536
537 @Override
538 public List<String> getParameterNames() {
539 return Arrays.asList("tp");
540 }
541
542 @Override
543 public List<PParameter> getParameters() {
544 return parameters;
545 }
546
547 @Override
548 public Set<PBody> doGetContainedBodies() {
549 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
550 Set<PBody> bodies = new LinkedHashSet<>();
551 {
552 PBody body = new PBody(this);
553 PVariable var_tp = body.getOrCreateVariableByName("tp");
554 PVariable var_hab_add = body.getOrCreateVariableByName("hab_add");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
556 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
557 new ExportedParameter(body, var_tp, parameter_tp)
558 ));
559 // Tax_Payer.addresses(tp, hab_add)
560 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
561 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
562 new TypeConstraint(body, Tuples.flatTupleOf(var_tp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "addresses")));
563 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Address")));
564 new Equality(body, var__virtual_0_, var_hab_add);
565 // Habitual_Address(hab_add)
566 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Habitual_Address")));
567 // Address.country(hab_add, ::ZZ)
568 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
569 new ConstantValue(body, var__virtual_1_, getEnumLiteral("http:///TaxCard.ecore", "Country", "ZZ").getInstance());
570 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Address")));
571 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
572 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Address", "country")));
573 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http:///TaxCard.ecore", "Country")));
574 new Equality(body, var__virtual_2_, var__virtual_1_);
575 // neg find x_inv13(tp)
576 new NegativePatternCall(body, Tuples.flatTupleOf(var_tp), X_inv13.instance().getInternalQueryRepresentation());
577 bodies.add(body);
578 }
579 {
580 PAnnotation annotation = new PAnnotation("Constraint");
581 annotation.addAttribute("message", "inv13");
582 annotation.addAttribute("severity", "error");
583 annotation.addAttribute("key", Arrays.asList(new Object[] {
584 new ParameterReference("tp")
585 }));
586 addAnnotation(annotation);
587 }
588 return bodies;
589 }
590 }
591}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java
new file mode 100644
index 00000000..50799179
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv15.java
@@ -0,0 +1,567 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.External_Allowance;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41import queries.X_inv15;
42
43/**
44 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
45 *
46 * <p>Original source:
47 * <code><pre>
48 * //inv14-MultiplicityChanged
49 *
50 * //inv15-Ordered Sets in assignment if block
51 * //ERROR if no household object
52 * {@literal @}Constraint(message = "inv15", severity = "error", key = {ea})
53 * pattern inv15(ea : External_Allowance) {
54 * neg find x_inv15(ea);
55 * }
56 * </pre></code>
57 *
58 * @see Matcher
59 * @see Match
60 *
61 */
62@SuppressWarnings("all")
63public final class Inv15 extends BaseGeneratedEMFQuerySpecification<Inv15.Matcher> {
64 /**
65 * Pattern-specific match representation of the queries.inv15 pattern,
66 * to be used in conjunction with {@link Matcher}.
67 *
68 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
69 * Each instance is a (possibly partial) substitution of pattern parameters,
70 * usable to represent a match of the pattern in the result of a query,
71 * or to specify the bound (fixed) input parameters when issuing a query.
72 *
73 * @see Matcher
74 *
75 */
76 public static abstract class Match extends BasePatternMatch {
77 private External_Allowance fEa;
78
79 private static List<String> parameterNames = makeImmutableList("ea");
80
81 private Match(final External_Allowance pEa) {
82 this.fEa = pEa;
83 }
84
85 @Override
86 public Object get(final String parameterName) {
87 switch(parameterName) {
88 case "ea": return this.fEa;
89 default: return null;
90 }
91 }
92
93 @Override
94 public Object get(final int index) {
95 switch(index) {
96 case 0: return this.fEa;
97 default: return null;
98 }
99 }
100
101 public External_Allowance getEa() {
102 return this.fEa;
103 }
104
105 @Override
106 public boolean set(final String parameterName, final Object newValue) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 if ("ea".equals(parameterName) ) {
109 this.fEa = (External_Allowance) newValue;
110 return true;
111 }
112 return false;
113 }
114
115 public void setEa(final External_Allowance pEa) {
116 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
117 this.fEa = pEa;
118 }
119
120 @Override
121 public String patternName() {
122 return "queries.inv15";
123 }
124
125 @Override
126 public List<String> parameterNames() {
127 return Inv15.Match.parameterNames;
128 }
129
130 @Override
131 public Object[] toArray() {
132 return new Object[]{fEa};
133 }
134
135 @Override
136 public Inv15.Match toImmutable() {
137 return isMutable() ? newMatch(fEa) : this;
138 }
139
140 @Override
141 public String prettyPrint() {
142 StringBuilder result = new StringBuilder();
143 result.append("\"ea\"=" + prettyPrintValue(fEa));
144 return result.toString();
145 }
146
147 @Override
148 public int hashCode() {
149 return Objects.hash(fEa);
150 }
151
152 @Override
153 public boolean equals(final Object obj) {
154 if (this == obj)
155 return true;
156 if (obj == null) {
157 return false;
158 }
159 if ((obj instanceof Inv15.Match)) {
160 Inv15.Match other = (Inv15.Match) obj;
161 return Objects.equals(fEa, other.fEa);
162 } else {
163 // this should be infrequent
164 if (!(obj instanceof IPatternMatch)) {
165 return false;
166 }
167 IPatternMatch otherSig = (IPatternMatch) obj;
168 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
169 }
170 }
171
172 @Override
173 public Inv15 specification() {
174 return Inv15.instance();
175 }
176
177 /**
178 * Returns an empty, mutable match.
179 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
180 *
181 * @return the empty match.
182 *
183 */
184 public static Inv15.Match newEmptyMatch() {
185 return new Mutable(null);
186 }
187
188 /**
189 * Returns a mutable (partial) match.
190 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
191 *
192 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
193 * @return the new, mutable (partial) match object.
194 *
195 */
196 public static Inv15.Match newMutableMatch(final External_Allowance pEa) {
197 return new Mutable(pEa);
198 }
199
200 /**
201 * Returns a new (partial) match.
202 * This can be used e.g. to call the matcher with a partial match.
203 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
204 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
205 * @return the (partial) match object.
206 *
207 */
208 public static Inv15.Match newMatch(final External_Allowance pEa) {
209 return new Immutable(pEa);
210 }
211
212 private static final class Mutable extends Inv15.Match {
213 Mutable(final External_Allowance pEa) {
214 super(pEa);
215 }
216
217 @Override
218 public boolean isMutable() {
219 return true;
220 }
221 }
222
223 private static final class Immutable extends Inv15.Match {
224 Immutable(final External_Allowance pEa) {
225 super(pEa);
226 }
227
228 @Override
229 public boolean isMutable() {
230 return false;
231 }
232 }
233 }
234
235 /**
236 * Generated pattern matcher API of the queries.inv15 pattern,
237 * providing pattern-specific query methods.
238 *
239 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
240 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
241 *
242 * <p>Matches of the pattern will be represented as {@link Match}.
243 *
244 * <p>Original source:
245 * <code><pre>
246 * //inv14-MultiplicityChanged
247 *
248 * //inv15-Ordered Sets in assignment if block
249 * //ERROR if no household object
250 * {@literal @}Constraint(message = "inv15", severity = "error", key = {ea})
251 * pattern inv15(ea : External_Allowance) {
252 * neg find x_inv15(ea);
253 * }
254 * </pre></code>
255 *
256 * @see Match
257 * @see Inv15
258 *
259 */
260 public static class Matcher extends BaseMatcher<Inv15.Match> {
261 /**
262 * Initializes the pattern matcher within an existing VIATRA Query engine.
263 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
264 *
265 * @param engine the existing VIATRA Query engine in which this matcher will be created.
266 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
267 *
268 */
269 public static Inv15.Matcher on(final ViatraQueryEngine engine) {
270 // check if matcher already exists
271 Matcher matcher = engine.getExistingMatcher(querySpecification());
272 if (matcher == null) {
273 matcher = (Matcher)engine.getMatcher(querySpecification());
274 }
275 return matcher;
276 }
277
278 /**
279 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
280 * @return an initialized matcher
281 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
282 *
283 */
284 public static Inv15.Matcher create() {
285 return new Matcher();
286 }
287
288 private static final int POSITION_EA = 0;
289
290 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv15.Matcher.class);
291
292 /**
293 * Initializes the pattern matcher within an existing VIATRA Query engine.
294 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
295 *
296 * @param engine the existing VIATRA Query engine in which this matcher will be created.
297 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
298 *
299 */
300 private Matcher() {
301 super(querySpecification());
302 }
303
304 /**
305 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
306 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
307 * @return matches represented as a Match object.
308 *
309 */
310 public Collection<Inv15.Match> getAllMatches(final External_Allowance pEa) {
311 return rawStreamAllMatches(new Object[]{pEa}).collect(Collectors.toSet());
312 }
313
314 /**
315 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
316 * </p>
317 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
318 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
319 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
320 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
321 * @return a stream of matches represented as a Match object.
322 *
323 */
324 public Stream<Inv15.Match> streamAllMatches(final External_Allowance pEa) {
325 return rawStreamAllMatches(new Object[]{pEa});
326 }
327
328 /**
329 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
330 * Neither determinism nor randomness of selection is guaranteed.
331 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
332 * @return a match represented as a Match object, or null if no match is found.
333 *
334 */
335 public Optional<Inv15.Match> getOneArbitraryMatch(final External_Allowance pEa) {
336 return rawGetOneArbitraryMatch(new Object[]{pEa});
337 }
338
339 /**
340 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
341 * under any possible substitution of the unspecified parameters (if any).
342 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
343 * @return true if the input is a valid (partial) match of the pattern.
344 *
345 */
346 public boolean hasMatch(final External_Allowance pEa) {
347 return rawHasMatch(new Object[]{pEa});
348 }
349
350 /**
351 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
352 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
353 * @return the number of pattern matches found.
354 *
355 */
356 public int countMatches(final External_Allowance pEa) {
357 return rawCountMatches(new Object[]{pEa});
358 }
359
360 /**
361 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
362 * Neither determinism nor randomness of selection is guaranteed.
363 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
364 * @param processor the action that will process the selected match.
365 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
366 *
367 */
368 public boolean forOneArbitraryMatch(final External_Allowance pEa, final Consumer<? super Inv15.Match> processor) {
369 return rawForOneArbitraryMatch(new Object[]{pEa}, processor);
370 }
371
372 /**
373 * Returns a new (partial) match.
374 * This can be used e.g. to call the matcher with a partial match.
375 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
376 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
377 * @return the (partial) match object.
378 *
379 */
380 public Inv15.Match newMatch(final External_Allowance pEa) {
381 return Inv15.Match.newMatch(pEa);
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for ea.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 protected Stream<External_Allowance> rawStreamAllValuesOfea(final Object[] parameters) {
390 return rawStreamAllValues(POSITION_EA, parameters).map(External_Allowance.class::cast);
391 }
392
393 /**
394 * Retrieve the set of values that occur in matches for ea.
395 * @return the Set of all values or empty set if there are no matches
396 *
397 */
398 public Set<External_Allowance> getAllValuesOfea() {
399 return rawStreamAllValuesOfea(emptyArray()).collect(Collectors.toSet());
400 }
401
402 /**
403 * Retrieve the set of values that occur in matches for ea.
404 * @return the Set of all values or empty set if there are no matches
405 *
406 */
407 public Stream<External_Allowance> streamAllValuesOfea() {
408 return rawStreamAllValuesOfea(emptyArray());
409 }
410
411 @Override
412 protected Inv15.Match tupleToMatch(final Tuple t) {
413 try {
414 return Inv15.Match.newMatch((External_Allowance) t.get(POSITION_EA));
415 } catch(ClassCastException e) {
416 LOGGER.error("Element(s) in tuple not properly typed!",e);
417 return null;
418 }
419 }
420
421 @Override
422 protected Inv15.Match arrayToMatch(final Object[] match) {
423 try {
424 return Inv15.Match.newMatch((External_Allowance) match[POSITION_EA]);
425 } catch(ClassCastException e) {
426 LOGGER.error("Element(s) in array not properly typed!",e);
427 return null;
428 }
429 }
430
431 @Override
432 protected Inv15.Match arrayToMatchMutable(final Object[] match) {
433 try {
434 return Inv15.Match.newMutableMatch((External_Allowance) match[POSITION_EA]);
435 } catch(ClassCastException e) {
436 LOGGER.error("Element(s) in array not properly typed!",e);
437 return null;
438 }
439 }
440
441 /**
442 * @return the singleton instance of the query specification of this pattern
443 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
444 *
445 */
446 public static IQuerySpecification<Inv15.Matcher> querySpecification() {
447 return Inv15.instance();
448 }
449 }
450
451 private Inv15() {
452 super(GeneratedPQuery.INSTANCE);
453 }
454
455 /**
456 * @return the singleton instance of the query specification
457 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
458 *
459 */
460 public static Inv15 instance() {
461 try{
462 return LazyHolder.INSTANCE;
463 } catch (ExceptionInInitializerError err) {
464 throw processInitializerError(err);
465 }
466 }
467
468 @Override
469 protected Inv15.Matcher instantiate(final ViatraQueryEngine engine) {
470 return Inv15.Matcher.on(engine);
471 }
472
473 @Override
474 public Inv15.Matcher instantiate() {
475 return Inv15.Matcher.create();
476 }
477
478 @Override
479 public Inv15.Match newEmptyMatch() {
480 return Inv15.Match.newEmptyMatch();
481 }
482
483 @Override
484 public Inv15.Match newMatch(final Object... parameters) {
485 return Inv15.Match.newMatch((Taxation.External_Allowance) parameters[0]);
486 }
487
488 /**
489 * Inner class allowing the singleton instance of {@link Inv15} to be created
490 * <b>not</b> at the class load time of the outer class,
491 * but rather at the first call to {@link Inv15#instance()}.
492 *
493 * <p> This workaround is required e.g. to support recursion.
494 *
495 */
496 private static class LazyHolder {
497 private static final Inv15 INSTANCE = new Inv15();
498
499 /**
500 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
501 * This initialization order is required to support indirect recursion.
502 *
503 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
504 *
505 */
506 private static final Object STATIC_INITIALIZER = ensureInitialized();
507
508 public static Object ensureInitialized() {
509 INSTANCE.ensureInitializedInternal();
510 return null;
511 }
512 }
513
514 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
515 private static final Inv15.GeneratedPQuery INSTANCE = new GeneratedPQuery();
516
517 private final PParameter parameter_ea = new PParameter("ea", "Taxation.External_Allowance", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "External_Allowance")), PParameterDirection.INOUT);
518
519 private final List<PParameter> parameters = Arrays.asList(parameter_ea);
520
521 private GeneratedPQuery() {
522 super(PVisibility.PUBLIC);
523 }
524
525 @Override
526 public String getFullyQualifiedName() {
527 return "queries.inv15";
528 }
529
530 @Override
531 public List<String> getParameterNames() {
532 return Arrays.asList("ea");
533 }
534
535 @Override
536 public List<PParameter> getParameters() {
537 return parameters;
538 }
539
540 @Override
541 public Set<PBody> doGetContainedBodies() {
542 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
543 Set<PBody> bodies = new LinkedHashSet<>();
544 {
545 PBody body = new PBody(this);
546 PVariable var_ea = body.getOrCreateVariableByName("ea");
547 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
548 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
549 new ExportedParameter(body, var_ea, parameter_ea)
550 ));
551 // neg find x_inv15(ea)
552 new NegativePatternCall(body, Tuples.flatTupleOf(var_ea), X_inv15.instance().getInternalQueryRepresentation());
553 bodies.add(body);
554 }
555 {
556 PAnnotation annotation = new PAnnotation("Constraint");
557 annotation.addAttribute("message", "inv15");
558 annotation.addAttribute("severity", "error");
559 annotation.addAttribute("key", Arrays.asList(new Object[] {
560 new ParameterReference("ea")
561 }));
562 addAnnotation(annotation);
563 }
564 return bodies;
565 }
566 }
567}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java
new file mode 100644
index 00000000..8019db8c
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv17.java
@@ -0,0 +1,643 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Legal_Union_Record;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * //inv16-Tax_Card.tax_card_type is a derived feature
54 *
55 * //inv17-attribute-handled by multiplicity
56 * {@literal @}Constraint(message = "inv17", severity = "error", key = {lur})
57 * pattern inv17(lur : Legal_Union_Record) {
58 * Legal_Union_Record.start_year(lur, sy);
59 * check(sy {@literal <} 1950);
60 * } or {
61 * Legal_Union_Record.start_year(lur, sy);
62 * check(sy {@literal >} 2018);
63 * }
64 * </pre></code>
65 *
66 * @see Matcher
67 * @see Match
68 *
69 */
70@SuppressWarnings("all")
71public final class Inv17 extends BaseGeneratedEMFQuerySpecification<Inv17.Matcher> {
72 /**
73 * Pattern-specific match representation of the queries.inv17 pattern,
74 * to be used in conjunction with {@link Matcher}.
75 *
76 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
77 * Each instance is a (possibly partial) substitution of pattern parameters,
78 * usable to represent a match of the pattern in the result of a query,
79 * or to specify the bound (fixed) input parameters when issuing a query.
80 *
81 * @see Matcher
82 *
83 */
84 public static abstract class Match extends BasePatternMatch {
85 private Legal_Union_Record fLur;
86
87 private static List<String> parameterNames = makeImmutableList("lur");
88
89 private Match(final Legal_Union_Record pLur) {
90 this.fLur = pLur;
91 }
92
93 @Override
94 public Object get(final String parameterName) {
95 switch(parameterName) {
96 case "lur": return this.fLur;
97 default: return null;
98 }
99 }
100
101 @Override
102 public Object get(final int index) {
103 switch(index) {
104 case 0: return this.fLur;
105 default: return null;
106 }
107 }
108
109 public Legal_Union_Record getLur() {
110 return this.fLur;
111 }
112
113 @Override
114 public boolean set(final String parameterName, final Object newValue) {
115 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
116 if ("lur".equals(parameterName) ) {
117 this.fLur = (Legal_Union_Record) newValue;
118 return true;
119 }
120 return false;
121 }
122
123 public void setLur(final Legal_Union_Record pLur) {
124 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
125 this.fLur = pLur;
126 }
127
128 @Override
129 public String patternName() {
130 return "queries.inv17";
131 }
132
133 @Override
134 public List<String> parameterNames() {
135 return Inv17.Match.parameterNames;
136 }
137
138 @Override
139 public Object[] toArray() {
140 return new Object[]{fLur};
141 }
142
143 @Override
144 public Inv17.Match toImmutable() {
145 return isMutable() ? newMatch(fLur) : this;
146 }
147
148 @Override
149 public String prettyPrint() {
150 StringBuilder result = new StringBuilder();
151 result.append("\"lur\"=" + prettyPrintValue(fLur));
152 return result.toString();
153 }
154
155 @Override
156 public int hashCode() {
157 return Objects.hash(fLur);
158 }
159
160 @Override
161 public boolean equals(final Object obj) {
162 if (this == obj)
163 return true;
164 if (obj == null) {
165 return false;
166 }
167 if ((obj instanceof Inv17.Match)) {
168 Inv17.Match other = (Inv17.Match) obj;
169 return Objects.equals(fLur, other.fLur);
170 } else {
171 // this should be infrequent
172 if (!(obj instanceof IPatternMatch)) {
173 return false;
174 }
175 IPatternMatch otherSig = (IPatternMatch) obj;
176 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
177 }
178 }
179
180 @Override
181 public Inv17 specification() {
182 return Inv17.instance();
183 }
184
185 /**
186 * Returns an empty, mutable match.
187 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
188 *
189 * @return the empty match.
190 *
191 */
192 public static Inv17.Match newEmptyMatch() {
193 return new Mutable(null);
194 }
195
196 /**
197 * Returns a mutable (partial) match.
198 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
199 *
200 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
201 * @return the new, mutable (partial) match object.
202 *
203 */
204 public static Inv17.Match newMutableMatch(final Legal_Union_Record pLur) {
205 return new Mutable(pLur);
206 }
207
208 /**
209 * Returns a new (partial) match.
210 * This can be used e.g. to call the matcher with a partial match.
211 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
212 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
213 * @return the (partial) match object.
214 *
215 */
216 public static Inv17.Match newMatch(final Legal_Union_Record pLur) {
217 return new Immutable(pLur);
218 }
219
220 private static final class Mutable extends Inv17.Match {
221 Mutable(final Legal_Union_Record pLur) {
222 super(pLur);
223 }
224
225 @Override
226 public boolean isMutable() {
227 return true;
228 }
229 }
230
231 private static final class Immutable extends Inv17.Match {
232 Immutable(final Legal_Union_Record pLur) {
233 super(pLur);
234 }
235
236 @Override
237 public boolean isMutable() {
238 return false;
239 }
240 }
241 }
242
243 /**
244 * Generated pattern matcher API of the queries.inv17 pattern,
245 * providing pattern-specific query methods.
246 *
247 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
248 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
249 *
250 * <p>Matches of the pattern will be represented as {@link Match}.
251 *
252 * <p>Original source:
253 * <code><pre>
254 * //inv16-Tax_Card.tax_card_type is a derived feature
255 *
256 * //inv17-attribute-handled by multiplicity
257 * {@literal @}Constraint(message = "inv17", severity = "error", key = {lur})
258 * pattern inv17(lur : Legal_Union_Record) {
259 * Legal_Union_Record.start_year(lur, sy);
260 * check(sy {@literal <} 1950);
261 * } or {
262 * Legal_Union_Record.start_year(lur, sy);
263 * check(sy {@literal >} 2018);
264 * }
265 * </pre></code>
266 *
267 * @see Match
268 * @see Inv17
269 *
270 */
271 public static class Matcher extends BaseMatcher<Inv17.Match> {
272 /**
273 * Initializes the pattern matcher within an existing VIATRA Query engine.
274 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
275 *
276 * @param engine the existing VIATRA Query engine in which this matcher will be created.
277 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
278 *
279 */
280 public static Inv17.Matcher on(final ViatraQueryEngine engine) {
281 // check if matcher already exists
282 Matcher matcher = engine.getExistingMatcher(querySpecification());
283 if (matcher == null) {
284 matcher = (Matcher)engine.getMatcher(querySpecification());
285 }
286 return matcher;
287 }
288
289 /**
290 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
291 * @return an initialized matcher
292 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
293 *
294 */
295 public static Inv17.Matcher create() {
296 return new Matcher();
297 }
298
299 private static final int POSITION_LUR = 0;
300
301 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv17.Matcher.class);
302
303 /**
304 * Initializes the pattern matcher within an existing VIATRA Query engine.
305 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
306 *
307 * @param engine the existing VIATRA Query engine in which this matcher will be created.
308 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
309 *
310 */
311 private Matcher() {
312 super(querySpecification());
313 }
314
315 /**
316 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
317 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
318 * @return matches represented as a Match object.
319 *
320 */
321 public Collection<Inv17.Match> getAllMatches(final Legal_Union_Record pLur) {
322 return rawStreamAllMatches(new Object[]{pLur}).collect(Collectors.toSet());
323 }
324
325 /**
326 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
327 * </p>
328 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
329 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
330 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
331 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
332 * @return a stream of matches represented as a Match object.
333 *
334 */
335 public Stream<Inv17.Match> streamAllMatches(final Legal_Union_Record pLur) {
336 return rawStreamAllMatches(new Object[]{pLur});
337 }
338
339 /**
340 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
341 * Neither determinism nor randomness of selection is guaranteed.
342 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
343 * @return a match represented as a Match object, or null if no match is found.
344 *
345 */
346 public Optional<Inv17.Match> getOneArbitraryMatch(final Legal_Union_Record pLur) {
347 return rawGetOneArbitraryMatch(new Object[]{pLur});
348 }
349
350 /**
351 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
352 * under any possible substitution of the unspecified parameters (if any).
353 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
354 * @return true if the input is a valid (partial) match of the pattern.
355 *
356 */
357 public boolean hasMatch(final Legal_Union_Record pLur) {
358 return rawHasMatch(new Object[]{pLur});
359 }
360
361 /**
362 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
363 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
364 * @return the number of pattern matches found.
365 *
366 */
367 public int countMatches(final Legal_Union_Record pLur) {
368 return rawCountMatches(new Object[]{pLur});
369 }
370
371 /**
372 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
373 * Neither determinism nor randomness of selection is guaranteed.
374 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
375 * @param processor the action that will process the selected match.
376 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
377 *
378 */
379 public boolean forOneArbitraryMatch(final Legal_Union_Record pLur, final Consumer<? super Inv17.Match> processor) {
380 return rawForOneArbitraryMatch(new Object[]{pLur}, processor);
381 }
382
383 /**
384 * Returns a new (partial) match.
385 * This can be used e.g. to call the matcher with a partial match.
386 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
387 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
388 * @return the (partial) match object.
389 *
390 */
391 public Inv17.Match newMatch(final Legal_Union_Record pLur) {
392 return Inv17.Match.newMatch(pLur);
393 }
394
395 /**
396 * Retrieve the set of values that occur in matches for lur.
397 * @return the Set of all values or empty set if there are no matches
398 *
399 */
400 protected Stream<Legal_Union_Record> rawStreamAllValuesOflur(final Object[] parameters) {
401 return rawStreamAllValues(POSITION_LUR, parameters).map(Legal_Union_Record.class::cast);
402 }
403
404 /**
405 * Retrieve the set of values that occur in matches for lur.
406 * @return the Set of all values or empty set if there are no matches
407 *
408 */
409 public Set<Legal_Union_Record> getAllValuesOflur() {
410 return rawStreamAllValuesOflur(emptyArray()).collect(Collectors.toSet());
411 }
412
413 /**
414 * Retrieve the set of values that occur in matches for lur.
415 * @return the Set of all values or empty set if there are no matches
416 *
417 */
418 public Stream<Legal_Union_Record> streamAllValuesOflur() {
419 return rawStreamAllValuesOflur(emptyArray());
420 }
421
422 @Override
423 protected Inv17.Match tupleToMatch(final Tuple t) {
424 try {
425 return Inv17.Match.newMatch((Legal_Union_Record) t.get(POSITION_LUR));
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in tuple not properly typed!",e);
428 return null;
429 }
430 }
431
432 @Override
433 protected Inv17.Match arrayToMatch(final Object[] match) {
434 try {
435 return Inv17.Match.newMatch((Legal_Union_Record) match[POSITION_LUR]);
436 } catch(ClassCastException e) {
437 LOGGER.error("Element(s) in array not properly typed!",e);
438 return null;
439 }
440 }
441
442 @Override
443 protected Inv17.Match arrayToMatchMutable(final Object[] match) {
444 try {
445 return Inv17.Match.newMutableMatch((Legal_Union_Record) match[POSITION_LUR]);
446 } catch(ClassCastException e) {
447 LOGGER.error("Element(s) in array not properly typed!",e);
448 return null;
449 }
450 }
451
452 /**
453 * @return the singleton instance of the query specification of this pattern
454 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
455 *
456 */
457 public static IQuerySpecification<Inv17.Matcher> querySpecification() {
458 return Inv17.instance();
459 }
460 }
461
462 private Inv17() {
463 super(GeneratedPQuery.INSTANCE);
464 }
465
466 /**
467 * @return the singleton instance of the query specification
468 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
469 *
470 */
471 public static Inv17 instance() {
472 try{
473 return LazyHolder.INSTANCE;
474 } catch (ExceptionInInitializerError err) {
475 throw processInitializerError(err);
476 }
477 }
478
479 @Override
480 protected Inv17.Matcher instantiate(final ViatraQueryEngine engine) {
481 return Inv17.Matcher.on(engine);
482 }
483
484 @Override
485 public Inv17.Matcher instantiate() {
486 return Inv17.Matcher.create();
487 }
488
489 @Override
490 public Inv17.Match newEmptyMatch() {
491 return Inv17.Match.newEmptyMatch();
492 }
493
494 @Override
495 public Inv17.Match newMatch(final Object... parameters) {
496 return Inv17.Match.newMatch((Taxation.Legal_Union_Record) parameters[0]);
497 }
498
499 /**
500 * Inner class allowing the singleton instance of {@link Inv17} to be created
501 * <b>not</b> at the class load time of the outer class,
502 * but rather at the first call to {@link Inv17#instance()}.
503 *
504 * <p> This workaround is required e.g. to support recursion.
505 *
506 */
507 private static class LazyHolder {
508 private static final Inv17 INSTANCE = new Inv17();
509
510 /**
511 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
512 * This initialization order is required to support indirect recursion.
513 *
514 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
515 *
516 */
517 private static final Object STATIC_INITIALIZER = ensureInitialized();
518
519 public static Object ensureInitialized() {
520 INSTANCE.ensureInitializedInternal();
521 return null;
522 }
523 }
524
525 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
526 private static final Inv17.GeneratedPQuery INSTANCE = new GeneratedPQuery();
527
528 private final PParameter parameter_lur = new PParameter("lur", "Taxation.Legal_Union_Record", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Legal_Union_Record")), PParameterDirection.INOUT);
529
530 private final List<PParameter> parameters = Arrays.asList(parameter_lur);
531
532 private GeneratedPQuery() {
533 super(PVisibility.PUBLIC);
534 }
535
536 @Override
537 public String getFullyQualifiedName() {
538 return "queries.inv17";
539 }
540
541 @Override
542 public List<String> getParameterNames() {
543 return Arrays.asList("lur");
544 }
545
546 @Override
547 public List<PParameter> getParameters() {
548 return parameters;
549 }
550
551 @Override
552 public Set<PBody> doGetContainedBodies() {
553 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
554 Set<PBody> bodies = new LinkedHashSet<>();
555 {
556 PBody body = new PBody(this);
557 PVariable var_lur = body.getOrCreateVariableByName("lur");
558 PVariable var_sy = body.getOrCreateVariableByName("sy");
559 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
560 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
561 new ExportedParameter(body, var_lur, parameter_lur)
562 ));
563 // Legal_Union_Record.start_year(lur, sy)
564 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
565 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
566 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "start_year")));
567 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
568 new Equality(body, var__virtual_0_, var_sy);
569 // check(sy < 1950)
570 new ExpressionEvaluation(body, new IExpressionEvaluator() {
571
572 @Override
573 public String getShortDescription() {
574 return "Expression evaluation from pattern inv17";
575 }
576
577 @Override
578 public Iterable<String> getInputParameterNames() {
579 return Arrays.asList("sy");}
580
581 @Override
582 public Object evaluateExpression(IValueProvider provider) throws Exception {
583 Integer sy = (Integer) provider.getValue("sy");
584 return evaluateExpression_1_1(sy);
585 }
586 }, null);
587 bodies.add(body);
588 }
589 {
590 PBody body = new PBody(this);
591 PVariable var_lur = body.getOrCreateVariableByName("lur");
592 PVariable var_sy = body.getOrCreateVariableByName("sy");
593 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
594 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
595 new ExportedParameter(body, var_lur, parameter_lur)
596 ));
597 // Legal_Union_Record.start_year(lur, sy)
598 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
599 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
600 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "start_year")));
601 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
602 new Equality(body, var__virtual_0_, var_sy);
603 // check(sy > 2018)
604 new ExpressionEvaluation(body, new IExpressionEvaluator() {
605
606 @Override
607 public String getShortDescription() {
608 return "Expression evaluation from pattern inv17";
609 }
610
611 @Override
612 public Iterable<String> getInputParameterNames() {
613 return Arrays.asList("sy");}
614
615 @Override
616 public Object evaluateExpression(IValueProvider provider) throws Exception {
617 Integer sy = (Integer) provider.getValue("sy");
618 return evaluateExpression_2_1(sy);
619 }
620 }, null);
621 bodies.add(body);
622 }
623 {
624 PAnnotation annotation = new PAnnotation("Constraint");
625 annotation.addAttribute("message", "inv17");
626 annotation.addAttribute("severity", "error");
627 annotation.addAttribute("key", Arrays.asList(new Object[] {
628 new ParameterReference("lur")
629 }));
630 addAnnotation(annotation);
631 }
632 return bodies;
633 }
634 }
635
636 private static boolean evaluateExpression_1_1(final Integer sy) {
637 return ((sy).intValue() < 1950);
638 }
639
640 private static boolean evaluateExpression_2_1(final Integer sy) {
641 return ((sy).intValue() > 2018);
642 }
643}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java
new file mode 100644
index 00000000..2d5bd266
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv20.java
@@ -0,0 +1,587 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Legal_Union_Record;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
32import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
41import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
42
43/**
44 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
45 *
46 * <p>Original source:
47 * <code><pre>
48 * //inv18-MultiplicityChecked
49 * //inv19-MultiplicityChecked
50 *
51 * //inv20-Useless constraint since both edges are containment (TODOCheck)
52 * //OclIsUndefined-Handled by multiplicity
53 * {@literal @}Constraint(message = "inv20", severity = "error", key = {lur})
54 * pattern inv20(lur : Legal_Union_Record) {
55 * Legal_Union_Record.individual_A(lur, iA);
56 * Legal_Union_Record.individual_B(lur, iB);
57 * iA == iB;
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class Inv20 extends BaseGeneratedEMFQuerySpecification<Inv20.Matcher> {
67 /**
68 * Pattern-specific match representation of the queries.inv20 pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private Legal_Union_Record fLur;
81
82 private static List<String> parameterNames = makeImmutableList("lur");
83
84 private Match(final Legal_Union_Record pLur) {
85 this.fLur = pLur;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 switch(parameterName) {
91 case "lur": return this.fLur;
92 default: return null;
93 }
94 }
95
96 @Override
97 public Object get(final int index) {
98 switch(index) {
99 case 0: return this.fLur;
100 default: return null;
101 }
102 }
103
104 public Legal_Union_Record getLur() {
105 return this.fLur;
106 }
107
108 @Override
109 public boolean set(final String parameterName, final Object newValue) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 if ("lur".equals(parameterName) ) {
112 this.fLur = (Legal_Union_Record) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setLur(final Legal_Union_Record pLur) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fLur = pLur;
121 }
122
123 @Override
124 public String patternName() {
125 return "queries.inv20";
126 }
127
128 @Override
129 public List<String> parameterNames() {
130 return Inv20.Match.parameterNames;
131 }
132
133 @Override
134 public Object[] toArray() {
135 return new Object[]{fLur};
136 }
137
138 @Override
139 public Inv20.Match toImmutable() {
140 return isMutable() ? newMatch(fLur) : this;
141 }
142
143 @Override
144 public String prettyPrint() {
145 StringBuilder result = new StringBuilder();
146 result.append("\"lur\"=" + prettyPrintValue(fLur));
147 return result.toString();
148 }
149
150 @Override
151 public int hashCode() {
152 return Objects.hash(fLur);
153 }
154
155 @Override
156 public boolean equals(final Object obj) {
157 if (this == obj)
158 return true;
159 if (obj == null) {
160 return false;
161 }
162 if ((obj instanceof Inv20.Match)) {
163 Inv20.Match other = (Inv20.Match) obj;
164 return Objects.equals(fLur, other.fLur);
165 } else {
166 // this should be infrequent
167 if (!(obj instanceof IPatternMatch)) {
168 return false;
169 }
170 IPatternMatch otherSig = (IPatternMatch) obj;
171 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
172 }
173 }
174
175 @Override
176 public Inv20 specification() {
177 return Inv20.instance();
178 }
179
180 /**
181 * Returns an empty, mutable match.
182 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
183 *
184 * @return the empty match.
185 *
186 */
187 public static Inv20.Match newEmptyMatch() {
188 return new Mutable(null);
189 }
190
191 /**
192 * Returns a mutable (partial) match.
193 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
194 *
195 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
196 * @return the new, mutable (partial) match object.
197 *
198 */
199 public static Inv20.Match newMutableMatch(final Legal_Union_Record pLur) {
200 return new Mutable(pLur);
201 }
202
203 /**
204 * Returns a new (partial) match.
205 * This can be used e.g. to call the matcher with a partial match.
206 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
207 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
208 * @return the (partial) match object.
209 *
210 */
211 public static Inv20.Match newMatch(final Legal_Union_Record pLur) {
212 return new Immutable(pLur);
213 }
214
215 private static final class Mutable extends Inv20.Match {
216 Mutable(final Legal_Union_Record pLur) {
217 super(pLur);
218 }
219
220 @Override
221 public boolean isMutable() {
222 return true;
223 }
224 }
225
226 private static final class Immutable extends Inv20.Match {
227 Immutable(final Legal_Union_Record pLur) {
228 super(pLur);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return false;
234 }
235 }
236 }
237
238 /**
239 * Generated pattern matcher API of the queries.inv20 pattern,
240 * providing pattern-specific query methods.
241 *
242 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
243 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
244 *
245 * <p>Matches of the pattern will be represented as {@link Match}.
246 *
247 * <p>Original source:
248 * <code><pre>
249 * //inv18-MultiplicityChecked
250 * //inv19-MultiplicityChecked
251 *
252 * //inv20-Useless constraint since both edges are containment (TODOCheck)
253 * //OclIsUndefined-Handled by multiplicity
254 * {@literal @}Constraint(message = "inv20", severity = "error", key = {lur})
255 * pattern inv20(lur : Legal_Union_Record) {
256 * Legal_Union_Record.individual_A(lur, iA);
257 * Legal_Union_Record.individual_B(lur, iB);
258 * iA == iB;
259 * }
260 * </pre></code>
261 *
262 * @see Match
263 * @see Inv20
264 *
265 */
266 public static class Matcher extends BaseMatcher<Inv20.Match> {
267 /**
268 * Initializes the pattern matcher within an existing VIATRA Query engine.
269 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
270 *
271 * @param engine the existing VIATRA Query engine in which this matcher will be created.
272 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
273 *
274 */
275 public static Inv20.Matcher on(final ViatraQueryEngine engine) {
276 // check if matcher already exists
277 Matcher matcher = engine.getExistingMatcher(querySpecification());
278 if (matcher == null) {
279 matcher = (Matcher)engine.getMatcher(querySpecification());
280 }
281 return matcher;
282 }
283
284 /**
285 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
286 * @return an initialized matcher
287 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
288 *
289 */
290 public static Inv20.Matcher create() {
291 return new Matcher();
292 }
293
294 private static final int POSITION_LUR = 0;
295
296 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv20.Matcher.class);
297
298 /**
299 * Initializes the pattern matcher within an existing VIATRA Query engine.
300 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
301 *
302 * @param engine the existing VIATRA Query engine in which this matcher will be created.
303 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
304 *
305 */
306 private Matcher() {
307 super(querySpecification());
308 }
309
310 /**
311 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
312 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
313 * @return matches represented as a Match object.
314 *
315 */
316 public Collection<Inv20.Match> getAllMatches(final Legal_Union_Record pLur) {
317 return rawStreamAllMatches(new Object[]{pLur}).collect(Collectors.toSet());
318 }
319
320 /**
321 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
322 * </p>
323 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
324 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
325 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
326 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
327 * @return a stream of matches represented as a Match object.
328 *
329 */
330 public Stream<Inv20.Match> streamAllMatches(final Legal_Union_Record pLur) {
331 return rawStreamAllMatches(new Object[]{pLur});
332 }
333
334 /**
335 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
336 * Neither determinism nor randomness of selection is guaranteed.
337 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
338 * @return a match represented as a Match object, or null if no match is found.
339 *
340 */
341 public Optional<Inv20.Match> getOneArbitraryMatch(final Legal_Union_Record pLur) {
342 return rawGetOneArbitraryMatch(new Object[]{pLur});
343 }
344
345 /**
346 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
347 * under any possible substitution of the unspecified parameters (if any).
348 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
349 * @return true if the input is a valid (partial) match of the pattern.
350 *
351 */
352 public boolean hasMatch(final Legal_Union_Record pLur) {
353 return rawHasMatch(new Object[]{pLur});
354 }
355
356 /**
357 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
358 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
359 * @return the number of pattern matches found.
360 *
361 */
362 public int countMatches(final Legal_Union_Record pLur) {
363 return rawCountMatches(new Object[]{pLur});
364 }
365
366 /**
367 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
368 * Neither determinism nor randomness of selection is guaranteed.
369 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
370 * @param processor the action that will process the selected match.
371 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
372 *
373 */
374 public boolean forOneArbitraryMatch(final Legal_Union_Record pLur, final Consumer<? super Inv20.Match> processor) {
375 return rawForOneArbitraryMatch(new Object[]{pLur}, processor);
376 }
377
378 /**
379 * Returns a new (partial) match.
380 * This can be used e.g. to call the matcher with a partial match.
381 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
382 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
383 * @return the (partial) match object.
384 *
385 */
386 public Inv20.Match newMatch(final Legal_Union_Record pLur) {
387 return Inv20.Match.newMatch(pLur);
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for lur.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 protected Stream<Legal_Union_Record> rawStreamAllValuesOflur(final Object[] parameters) {
396 return rawStreamAllValues(POSITION_LUR, parameters).map(Legal_Union_Record.class::cast);
397 }
398
399 /**
400 * Retrieve the set of values that occur in matches for lur.
401 * @return the Set of all values or empty set if there are no matches
402 *
403 */
404 public Set<Legal_Union_Record> getAllValuesOflur() {
405 return rawStreamAllValuesOflur(emptyArray()).collect(Collectors.toSet());
406 }
407
408 /**
409 * Retrieve the set of values that occur in matches for lur.
410 * @return the Set of all values or empty set if there are no matches
411 *
412 */
413 public Stream<Legal_Union_Record> streamAllValuesOflur() {
414 return rawStreamAllValuesOflur(emptyArray());
415 }
416
417 @Override
418 protected Inv20.Match tupleToMatch(final Tuple t) {
419 try {
420 return Inv20.Match.newMatch((Legal_Union_Record) t.get(POSITION_LUR));
421 } catch(ClassCastException e) {
422 LOGGER.error("Element(s) in tuple not properly typed!",e);
423 return null;
424 }
425 }
426
427 @Override
428 protected Inv20.Match arrayToMatch(final Object[] match) {
429 try {
430 return Inv20.Match.newMatch((Legal_Union_Record) match[POSITION_LUR]);
431 } catch(ClassCastException e) {
432 LOGGER.error("Element(s) in array not properly typed!",e);
433 return null;
434 }
435 }
436
437 @Override
438 protected Inv20.Match arrayToMatchMutable(final Object[] match) {
439 try {
440 return Inv20.Match.newMutableMatch((Legal_Union_Record) match[POSITION_LUR]);
441 } catch(ClassCastException e) {
442 LOGGER.error("Element(s) in array not properly typed!",e);
443 return null;
444 }
445 }
446
447 /**
448 * @return the singleton instance of the query specification of this pattern
449 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
450 *
451 */
452 public static IQuerySpecification<Inv20.Matcher> querySpecification() {
453 return Inv20.instance();
454 }
455 }
456
457 private Inv20() {
458 super(GeneratedPQuery.INSTANCE);
459 }
460
461 /**
462 * @return the singleton instance of the query specification
463 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
464 *
465 */
466 public static Inv20 instance() {
467 try{
468 return LazyHolder.INSTANCE;
469 } catch (ExceptionInInitializerError err) {
470 throw processInitializerError(err);
471 }
472 }
473
474 @Override
475 protected Inv20.Matcher instantiate(final ViatraQueryEngine engine) {
476 return Inv20.Matcher.on(engine);
477 }
478
479 @Override
480 public Inv20.Matcher instantiate() {
481 return Inv20.Matcher.create();
482 }
483
484 @Override
485 public Inv20.Match newEmptyMatch() {
486 return Inv20.Match.newEmptyMatch();
487 }
488
489 @Override
490 public Inv20.Match newMatch(final Object... parameters) {
491 return Inv20.Match.newMatch((Taxation.Legal_Union_Record) parameters[0]);
492 }
493
494 /**
495 * Inner class allowing the singleton instance of {@link Inv20} to be created
496 * <b>not</b> at the class load time of the outer class,
497 * but rather at the first call to {@link Inv20#instance()}.
498 *
499 * <p> This workaround is required e.g. to support recursion.
500 *
501 */
502 private static class LazyHolder {
503 private static final Inv20 INSTANCE = new Inv20();
504
505 /**
506 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
507 * This initialization order is required to support indirect recursion.
508 *
509 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
510 *
511 */
512 private static final Object STATIC_INITIALIZER = ensureInitialized();
513
514 public static Object ensureInitialized() {
515 INSTANCE.ensureInitializedInternal();
516 return null;
517 }
518 }
519
520 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
521 private static final Inv20.GeneratedPQuery INSTANCE = new GeneratedPQuery();
522
523 private final PParameter parameter_lur = new PParameter("lur", "Taxation.Legal_Union_Record", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Legal_Union_Record")), PParameterDirection.INOUT);
524
525 private final List<PParameter> parameters = Arrays.asList(parameter_lur);
526
527 private GeneratedPQuery() {
528 super(PVisibility.PUBLIC);
529 }
530
531 @Override
532 public String getFullyQualifiedName() {
533 return "queries.inv20";
534 }
535
536 @Override
537 public List<String> getParameterNames() {
538 return Arrays.asList("lur");
539 }
540
541 @Override
542 public List<PParameter> getParameters() {
543 return parameters;
544 }
545
546 @Override
547 public Set<PBody> doGetContainedBodies() {
548 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
549 Set<PBody> bodies = new LinkedHashSet<>();
550 {
551 PBody body = new PBody(this);
552 PVariable var_lur = body.getOrCreateVariableByName("lur");
553 PVariable var_iA = body.getOrCreateVariableByName("iA");
554 PVariable var_iB = body.getOrCreateVariableByName("iB");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
556 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
557 new ExportedParameter(body, var_lur, parameter_lur)
558 ));
559 // Legal_Union_Record.individual_A(lur, iA)
560 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
561 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
562 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "individual_A")));
563 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
564 new Equality(body, var__virtual_0_, var_iA);
565 // Legal_Union_Record.individual_B(lur, iB)
566 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
567 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
568 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "individual_B")));
569 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
570 new Equality(body, var__virtual_1_, var_iB);
571 // iA == iB
572 new Equality(body, var_iA, var_iB);
573 bodies.add(body);
574 }
575 {
576 PAnnotation annotation = new PAnnotation("Constraint");
577 annotation.addAttribute("message", "inv20");
578 annotation.addAttribute("severity", "error");
579 annotation.addAttribute("key", Arrays.asList(new Object[] {
580 new ParameterReference("lur")
581 }));
582 addAnnotation(annotation);
583 }
584 return bodies;
585 }
586 }
587}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java
new file mode 100644
index 00000000..f90cca26
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv33.java
@@ -0,0 +1,665 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * //inv21-MultiplicityChecked
54 * //inv22-MultiplicityChecked
55 * //inv23-MultiplicityChecked
56 * //inv24-MultiplicityChecked
57 * //inv25-MultiplicityChecked
58 * //inv26-MultiplicityChanged
59 * //inv27-dupOfInv24
60 * //inv28-dubOfInv23
61 * //inv29-MultiplicityChanged
62 * //inv30-AttributeRemoved
63 * //inv31-AttributeRemoved
64 * //inv32-AttributeRemoved
65 *
66 * //inv33-attribute-handled by multiplicity
67 * {@literal @}Constraint(message = "inv33", severity = "error", key = {p})
68 * pattern inv33(p : Physical_Person) {
69 * Physical_Person.birth_year(p, by);
70 * check(2018-by {@literal <} 0);
71 * } or {
72 * Physical_Person.birth_year(p, by);
73 * check(2018-by {@literal >} 100);
74 * }
75 * </pre></code>
76 *
77 * @see Matcher
78 * @see Match
79 *
80 */
81@SuppressWarnings("all")
82public final class Inv33 extends BaseGeneratedEMFQuerySpecification<Inv33.Matcher> {
83 /**
84 * Pattern-specific match representation of the queries.inv33 pattern,
85 * to be used in conjunction with {@link Matcher}.
86 *
87 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
88 * Each instance is a (possibly partial) substitution of pattern parameters,
89 * usable to represent a match of the pattern in the result of a query,
90 * or to specify the bound (fixed) input parameters when issuing a query.
91 *
92 * @see Matcher
93 *
94 */
95 public static abstract class Match extends BasePatternMatch {
96 private Physical_Person fP;
97
98 private static List<String> parameterNames = makeImmutableList("p");
99
100 private Match(final Physical_Person pP) {
101 this.fP = pP;
102 }
103
104 @Override
105 public Object get(final String parameterName) {
106 switch(parameterName) {
107 case "p": return this.fP;
108 default: return null;
109 }
110 }
111
112 @Override
113 public Object get(final int index) {
114 switch(index) {
115 case 0: return this.fP;
116 default: return null;
117 }
118 }
119
120 public Physical_Person getP() {
121 return this.fP;
122 }
123
124 @Override
125 public boolean set(final String parameterName, final Object newValue) {
126 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
127 if ("p".equals(parameterName) ) {
128 this.fP = (Physical_Person) newValue;
129 return true;
130 }
131 return false;
132 }
133
134 public void setP(final Physical_Person pP) {
135 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
136 this.fP = pP;
137 }
138
139 @Override
140 public String patternName() {
141 return "queries.inv33";
142 }
143
144 @Override
145 public List<String> parameterNames() {
146 return Inv33.Match.parameterNames;
147 }
148
149 @Override
150 public Object[] toArray() {
151 return new Object[]{fP};
152 }
153
154 @Override
155 public Inv33.Match toImmutable() {
156 return isMutable() ? newMatch(fP) : this;
157 }
158
159 @Override
160 public String prettyPrint() {
161 StringBuilder result = new StringBuilder();
162 result.append("\"p\"=" + prettyPrintValue(fP));
163 return result.toString();
164 }
165
166 @Override
167 public int hashCode() {
168 return Objects.hash(fP);
169 }
170
171 @Override
172 public boolean equals(final Object obj) {
173 if (this == obj)
174 return true;
175 if (obj == null) {
176 return false;
177 }
178 if ((obj instanceof Inv33.Match)) {
179 Inv33.Match other = (Inv33.Match) obj;
180 return Objects.equals(fP, other.fP);
181 } else {
182 // this should be infrequent
183 if (!(obj instanceof IPatternMatch)) {
184 return false;
185 }
186 IPatternMatch otherSig = (IPatternMatch) obj;
187 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
188 }
189 }
190
191 @Override
192 public Inv33 specification() {
193 return Inv33.instance();
194 }
195
196 /**
197 * Returns an empty, mutable match.
198 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
199 *
200 * @return the empty match.
201 *
202 */
203 public static Inv33.Match newEmptyMatch() {
204 return new Mutable(null);
205 }
206
207 /**
208 * Returns a mutable (partial) match.
209 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
210 *
211 * @param pP the fixed value of pattern parameter p, or null if not bound.
212 * @return the new, mutable (partial) match object.
213 *
214 */
215 public static Inv33.Match newMutableMatch(final Physical_Person pP) {
216 return new Mutable(pP);
217 }
218
219 /**
220 * Returns a new (partial) match.
221 * This can be used e.g. to call the matcher with a partial match.
222 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
223 * @param pP the fixed value of pattern parameter p, or null if not bound.
224 * @return the (partial) match object.
225 *
226 */
227 public static Inv33.Match newMatch(final Physical_Person pP) {
228 return new Immutable(pP);
229 }
230
231 private static final class Mutable extends Inv33.Match {
232 Mutable(final Physical_Person pP) {
233 super(pP);
234 }
235
236 @Override
237 public boolean isMutable() {
238 return true;
239 }
240 }
241
242 private static final class Immutable extends Inv33.Match {
243 Immutable(final Physical_Person pP) {
244 super(pP);
245 }
246
247 @Override
248 public boolean isMutable() {
249 return false;
250 }
251 }
252 }
253
254 /**
255 * Generated pattern matcher API of the queries.inv33 pattern,
256 * providing pattern-specific query methods.
257 *
258 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
259 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
260 *
261 * <p>Matches of the pattern will be represented as {@link Match}.
262 *
263 * <p>Original source:
264 * <code><pre>
265 * //inv21-MultiplicityChecked
266 * //inv22-MultiplicityChecked
267 * //inv23-MultiplicityChecked
268 * //inv24-MultiplicityChecked
269 * //inv25-MultiplicityChecked
270 * //inv26-MultiplicityChanged
271 * //inv27-dupOfInv24
272 * //inv28-dubOfInv23
273 * //inv29-MultiplicityChanged
274 * //inv30-AttributeRemoved
275 * //inv31-AttributeRemoved
276 * //inv32-AttributeRemoved
277 *
278 * //inv33-attribute-handled by multiplicity
279 * {@literal @}Constraint(message = "inv33", severity = "error", key = {p})
280 * pattern inv33(p : Physical_Person) {
281 * Physical_Person.birth_year(p, by);
282 * check(2018-by {@literal <} 0);
283 * } or {
284 * Physical_Person.birth_year(p, by);
285 * check(2018-by {@literal >} 100);
286 * }
287 * </pre></code>
288 *
289 * @see Match
290 * @see Inv33
291 *
292 */
293 public static class Matcher extends BaseMatcher<Inv33.Match> {
294 /**
295 * Initializes the pattern matcher within an existing VIATRA Query engine.
296 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
297 *
298 * @param engine the existing VIATRA Query engine in which this matcher will be created.
299 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
300 *
301 */
302 public static Inv33.Matcher on(final ViatraQueryEngine engine) {
303 // check if matcher already exists
304 Matcher matcher = engine.getExistingMatcher(querySpecification());
305 if (matcher == null) {
306 matcher = (Matcher)engine.getMatcher(querySpecification());
307 }
308 return matcher;
309 }
310
311 /**
312 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
313 * @return an initialized matcher
314 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
315 *
316 */
317 public static Inv33.Matcher create() {
318 return new Matcher();
319 }
320
321 private static final int POSITION_P = 0;
322
323 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv33.Matcher.class);
324
325 /**
326 * Initializes the pattern matcher within an existing VIATRA Query engine.
327 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
328 *
329 * @param engine the existing VIATRA Query engine in which this matcher will be created.
330 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
331 *
332 */
333 private Matcher() {
334 super(querySpecification());
335 }
336
337 /**
338 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
339 * @param pP the fixed value of pattern parameter p, or null if not bound.
340 * @return matches represented as a Match object.
341 *
342 */
343 public Collection<Inv33.Match> getAllMatches(final Physical_Person pP) {
344 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
345 }
346
347 /**
348 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
349 * </p>
350 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
351 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
352 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
353 * @param pP the fixed value of pattern parameter p, or null if not bound.
354 * @return a stream of matches represented as a Match object.
355 *
356 */
357 public Stream<Inv33.Match> streamAllMatches(final Physical_Person pP) {
358 return rawStreamAllMatches(new Object[]{pP});
359 }
360
361 /**
362 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
363 * Neither determinism nor randomness of selection is guaranteed.
364 * @param pP the fixed value of pattern parameter p, or null if not bound.
365 * @return a match represented as a Match object, or null if no match is found.
366 *
367 */
368 public Optional<Inv33.Match> getOneArbitraryMatch(final Physical_Person pP) {
369 return rawGetOneArbitraryMatch(new Object[]{pP});
370 }
371
372 /**
373 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
374 * under any possible substitution of the unspecified parameters (if any).
375 * @param pP the fixed value of pattern parameter p, or null if not bound.
376 * @return true if the input is a valid (partial) match of the pattern.
377 *
378 */
379 public boolean hasMatch(final Physical_Person pP) {
380 return rawHasMatch(new Object[]{pP});
381 }
382
383 /**
384 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
385 * @param pP the fixed value of pattern parameter p, or null if not bound.
386 * @return the number of pattern matches found.
387 *
388 */
389 public int countMatches(final Physical_Person pP) {
390 return rawCountMatches(new Object[]{pP});
391 }
392
393 /**
394 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
395 * Neither determinism nor randomness of selection is guaranteed.
396 * @param pP the fixed value of pattern parameter p, or null if not bound.
397 * @param processor the action that will process the selected match.
398 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
399 *
400 */
401 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super Inv33.Match> processor) {
402 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
403 }
404
405 /**
406 * Returns a new (partial) match.
407 * This can be used e.g. to call the matcher with a partial match.
408 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
409 * @param pP the fixed value of pattern parameter p, or null if not bound.
410 * @return the (partial) match object.
411 *
412 */
413 public Inv33.Match newMatch(final Physical_Person pP) {
414 return Inv33.Match.newMatch(pP);
415 }
416
417 /**
418 * Retrieve the set of values that occur in matches for p.
419 * @return the Set of all values or empty set if there are no matches
420 *
421 */
422 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
423 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
424 }
425
426 /**
427 * Retrieve the set of values that occur in matches for p.
428 * @return the Set of all values or empty set if there are no matches
429 *
430 */
431 public Set<Physical_Person> getAllValuesOfp() {
432 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
433 }
434
435 /**
436 * Retrieve the set of values that occur in matches for p.
437 * @return the Set of all values or empty set if there are no matches
438 *
439 */
440 public Stream<Physical_Person> streamAllValuesOfp() {
441 return rawStreamAllValuesOfp(emptyArray());
442 }
443
444 @Override
445 protected Inv33.Match tupleToMatch(final Tuple t) {
446 try {
447 return Inv33.Match.newMatch((Physical_Person) t.get(POSITION_P));
448 } catch(ClassCastException e) {
449 LOGGER.error("Element(s) in tuple not properly typed!",e);
450 return null;
451 }
452 }
453
454 @Override
455 protected Inv33.Match arrayToMatch(final Object[] match) {
456 try {
457 return Inv33.Match.newMatch((Physical_Person) match[POSITION_P]);
458 } catch(ClassCastException e) {
459 LOGGER.error("Element(s) in array not properly typed!",e);
460 return null;
461 }
462 }
463
464 @Override
465 protected Inv33.Match arrayToMatchMutable(final Object[] match) {
466 try {
467 return Inv33.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
468 } catch(ClassCastException e) {
469 LOGGER.error("Element(s) in array not properly typed!",e);
470 return null;
471 }
472 }
473
474 /**
475 * @return the singleton instance of the query specification of this pattern
476 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
477 *
478 */
479 public static IQuerySpecification<Inv33.Matcher> querySpecification() {
480 return Inv33.instance();
481 }
482 }
483
484 private Inv33() {
485 super(GeneratedPQuery.INSTANCE);
486 }
487
488 /**
489 * @return the singleton instance of the query specification
490 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
491 *
492 */
493 public static Inv33 instance() {
494 try{
495 return LazyHolder.INSTANCE;
496 } catch (ExceptionInInitializerError err) {
497 throw processInitializerError(err);
498 }
499 }
500
501 @Override
502 protected Inv33.Matcher instantiate(final ViatraQueryEngine engine) {
503 return Inv33.Matcher.on(engine);
504 }
505
506 @Override
507 public Inv33.Matcher instantiate() {
508 return Inv33.Matcher.create();
509 }
510
511 @Override
512 public Inv33.Match newEmptyMatch() {
513 return Inv33.Match.newEmptyMatch();
514 }
515
516 @Override
517 public Inv33.Match newMatch(final Object... parameters) {
518 return Inv33.Match.newMatch((Taxation.Physical_Person) parameters[0]);
519 }
520
521 /**
522 * Inner class allowing the singleton instance of {@link Inv33} to be created
523 * <b>not</b> at the class load time of the outer class,
524 * but rather at the first call to {@link Inv33#instance()}.
525 *
526 * <p> This workaround is required e.g. to support recursion.
527 *
528 */
529 private static class LazyHolder {
530 private static final Inv33 INSTANCE = new Inv33();
531
532 /**
533 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
534 * This initialization order is required to support indirect recursion.
535 *
536 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
537 *
538 */
539 private static final Object STATIC_INITIALIZER = ensureInitialized();
540
541 public static Object ensureInitialized() {
542 INSTANCE.ensureInitializedInternal();
543 return null;
544 }
545 }
546
547 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
548 private static final Inv33.GeneratedPQuery INSTANCE = new GeneratedPQuery();
549
550 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
551
552 private final List<PParameter> parameters = Arrays.asList(parameter_p);
553
554 private GeneratedPQuery() {
555 super(PVisibility.PUBLIC);
556 }
557
558 @Override
559 public String getFullyQualifiedName() {
560 return "queries.inv33";
561 }
562
563 @Override
564 public List<String> getParameterNames() {
565 return Arrays.asList("p");
566 }
567
568 @Override
569 public List<PParameter> getParameters() {
570 return parameters;
571 }
572
573 @Override
574 public Set<PBody> doGetContainedBodies() {
575 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
576 Set<PBody> bodies = new LinkedHashSet<>();
577 {
578 PBody body = new PBody(this);
579 PVariable var_p = body.getOrCreateVariableByName("p");
580 PVariable var_by = body.getOrCreateVariableByName("by");
581 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
582 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
583 new ExportedParameter(body, var_p, parameter_p)
584 ));
585 // Physical_Person.birth_year(p, by)
586 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
587 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
588 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
589 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
590 new Equality(body, var__virtual_0_, var_by);
591 // check(2018-by < 0)
592 new ExpressionEvaluation(body, new IExpressionEvaluator() {
593
594 @Override
595 public String getShortDescription() {
596 return "Expression evaluation from pattern inv33";
597 }
598
599 @Override
600 public Iterable<String> getInputParameterNames() {
601 return Arrays.asList("by");}
602
603 @Override
604 public Object evaluateExpression(IValueProvider provider) throws Exception {
605 Integer by = (Integer) provider.getValue("by");
606 return evaluateExpression_1_1(by);
607 }
608 }, null);
609 bodies.add(body);
610 }
611 {
612 PBody body = new PBody(this);
613 PVariable var_p = body.getOrCreateVariableByName("p");
614 PVariable var_by = body.getOrCreateVariableByName("by");
615 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
616 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
617 new ExportedParameter(body, var_p, parameter_p)
618 ));
619 // Physical_Person.birth_year(p, by)
620 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
621 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
622 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
623 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
624 new Equality(body, var__virtual_0_, var_by);
625 // check(2018-by > 100)
626 new ExpressionEvaluation(body, new IExpressionEvaluator() {
627
628 @Override
629 public String getShortDescription() {
630 return "Expression evaluation from pattern inv33";
631 }
632
633 @Override
634 public Iterable<String> getInputParameterNames() {
635 return Arrays.asList("by");}
636
637 @Override
638 public Object evaluateExpression(IValueProvider provider) throws Exception {
639 Integer by = (Integer) provider.getValue("by");
640 return evaluateExpression_2_1(by);
641 }
642 }, null);
643 bodies.add(body);
644 }
645 {
646 PAnnotation annotation = new PAnnotation("Constraint");
647 annotation.addAttribute("message", "inv33");
648 annotation.addAttribute("severity", "error");
649 annotation.addAttribute("key", Arrays.asList(new Object[] {
650 new ParameterReference("p")
651 }));
652 addAnnotation(annotation);
653 }
654 return bodies;
655 }
656 }
657
658 private static boolean evaluateExpression_1_1(final Integer by) {
659 return ((2018 - (by).intValue()) < 0);
660 }
661
662 private static boolean evaluateExpression_2_1(final Integer by) {
663 return ((2018 - (by).intValue()) > 100);
664 }
665}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java
new file mode 100644
index 00000000..89a24686
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv34.java
@@ -0,0 +1,639 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * //inv34-attribute-handled by multiplicity
54 * {@literal @}Constraint(message = "inv34", severity = "error", key = {p})
55 * pattern inv34(p : Physical_Person) {
56 * Physical_Person.birth_month(p, birthMonth);
57 * check(birthMonth {@literal <} 1);
58 * } or {
59 * Physical_Person.birth_month(p, birthMonth);
60 * check(birthMonth {@literal >} 12);
61 * }
62 * </pre></code>
63 *
64 * @see Matcher
65 * @see Match
66 *
67 */
68@SuppressWarnings("all")
69public final class Inv34 extends BaseGeneratedEMFQuerySpecification<Inv34.Matcher> {
70 /**
71 * Pattern-specific match representation of the queries.inv34 pattern,
72 * to be used in conjunction with {@link Matcher}.
73 *
74 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
75 * Each instance is a (possibly partial) substitution of pattern parameters,
76 * usable to represent a match of the pattern in the result of a query,
77 * or to specify the bound (fixed) input parameters when issuing a query.
78 *
79 * @see Matcher
80 *
81 */
82 public static abstract class Match extends BasePatternMatch {
83 private Physical_Person fP;
84
85 private static List<String> parameterNames = makeImmutableList("p");
86
87 private Match(final Physical_Person pP) {
88 this.fP = pP;
89 }
90
91 @Override
92 public Object get(final String parameterName) {
93 switch(parameterName) {
94 case "p": return this.fP;
95 default: return null;
96 }
97 }
98
99 @Override
100 public Object get(final int index) {
101 switch(index) {
102 case 0: return this.fP;
103 default: return null;
104 }
105 }
106
107 public Physical_Person getP() {
108 return this.fP;
109 }
110
111 @Override
112 public boolean set(final String parameterName, final Object newValue) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 if ("p".equals(parameterName) ) {
115 this.fP = (Physical_Person) newValue;
116 return true;
117 }
118 return false;
119 }
120
121 public void setP(final Physical_Person pP) {
122 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
123 this.fP = pP;
124 }
125
126 @Override
127 public String patternName() {
128 return "queries.inv34";
129 }
130
131 @Override
132 public List<String> parameterNames() {
133 return Inv34.Match.parameterNames;
134 }
135
136 @Override
137 public Object[] toArray() {
138 return new Object[]{fP};
139 }
140
141 @Override
142 public Inv34.Match toImmutable() {
143 return isMutable() ? newMatch(fP) : this;
144 }
145
146 @Override
147 public String prettyPrint() {
148 StringBuilder result = new StringBuilder();
149 result.append("\"p\"=" + prettyPrintValue(fP));
150 return result.toString();
151 }
152
153 @Override
154 public int hashCode() {
155 return Objects.hash(fP);
156 }
157
158 @Override
159 public boolean equals(final Object obj) {
160 if (this == obj)
161 return true;
162 if (obj == null) {
163 return false;
164 }
165 if ((obj instanceof Inv34.Match)) {
166 Inv34.Match other = (Inv34.Match) obj;
167 return Objects.equals(fP, other.fP);
168 } else {
169 // this should be infrequent
170 if (!(obj instanceof IPatternMatch)) {
171 return false;
172 }
173 IPatternMatch otherSig = (IPatternMatch) obj;
174 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
175 }
176 }
177
178 @Override
179 public Inv34 specification() {
180 return Inv34.instance();
181 }
182
183 /**
184 * Returns an empty, mutable match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @return the empty match.
188 *
189 */
190 public static Inv34.Match newEmptyMatch() {
191 return new Mutable(null);
192 }
193
194 /**
195 * Returns a mutable (partial) match.
196 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
197 *
198 * @param pP the fixed value of pattern parameter p, or null if not bound.
199 * @return the new, mutable (partial) match object.
200 *
201 */
202 public static Inv34.Match newMutableMatch(final Physical_Person pP) {
203 return new Mutable(pP);
204 }
205
206 /**
207 * Returns a new (partial) match.
208 * This can be used e.g. to call the matcher with a partial match.
209 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
210 * @param pP the fixed value of pattern parameter p, or null if not bound.
211 * @return the (partial) match object.
212 *
213 */
214 public static Inv34.Match newMatch(final Physical_Person pP) {
215 return new Immutable(pP);
216 }
217
218 private static final class Mutable extends Inv34.Match {
219 Mutable(final Physical_Person pP) {
220 super(pP);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return true;
226 }
227 }
228
229 private static final class Immutable extends Inv34.Match {
230 Immutable(final Physical_Person pP) {
231 super(pP);
232 }
233
234 @Override
235 public boolean isMutable() {
236 return false;
237 }
238 }
239 }
240
241 /**
242 * Generated pattern matcher API of the queries.inv34 pattern,
243 * providing pattern-specific query methods.
244 *
245 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
246 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
247 *
248 * <p>Matches of the pattern will be represented as {@link Match}.
249 *
250 * <p>Original source:
251 * <code><pre>
252 * //inv34-attribute-handled by multiplicity
253 * {@literal @}Constraint(message = "inv34", severity = "error", key = {p})
254 * pattern inv34(p : Physical_Person) {
255 * Physical_Person.birth_month(p, birthMonth);
256 * check(birthMonth {@literal <} 1);
257 * } or {
258 * Physical_Person.birth_month(p, birthMonth);
259 * check(birthMonth {@literal >} 12);
260 * }
261 * </pre></code>
262 *
263 * @see Match
264 * @see Inv34
265 *
266 */
267 public static class Matcher extends BaseMatcher<Inv34.Match> {
268 /**
269 * Initializes the pattern matcher within an existing VIATRA Query engine.
270 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
271 *
272 * @param engine the existing VIATRA Query engine in which this matcher will be created.
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 *
275 */
276 public static Inv34.Matcher on(final ViatraQueryEngine engine) {
277 // check if matcher already exists
278 Matcher matcher = engine.getExistingMatcher(querySpecification());
279 if (matcher == null) {
280 matcher = (Matcher)engine.getMatcher(querySpecification());
281 }
282 return matcher;
283 }
284
285 /**
286 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
287 * @return an initialized matcher
288 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
289 *
290 */
291 public static Inv34.Matcher create() {
292 return new Matcher();
293 }
294
295 private static final int POSITION_P = 0;
296
297 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv34.Matcher.class);
298
299 /**
300 * Initializes the pattern matcher within an existing VIATRA Query engine.
301 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
302 *
303 * @param engine the existing VIATRA Query engine in which this matcher will be created.
304 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
305 *
306 */
307 private Matcher() {
308 super(querySpecification());
309 }
310
311 /**
312 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
313 * @param pP the fixed value of pattern parameter p, or null if not bound.
314 * @return matches represented as a Match object.
315 *
316 */
317 public Collection<Inv34.Match> getAllMatches(final Physical_Person pP) {
318 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
319 }
320
321 /**
322 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
323 * </p>
324 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
325 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
326 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
327 * @param pP the fixed value of pattern parameter p, or null if not bound.
328 * @return a stream of matches represented as a Match object.
329 *
330 */
331 public Stream<Inv34.Match> streamAllMatches(final Physical_Person pP) {
332 return rawStreamAllMatches(new Object[]{pP});
333 }
334
335 /**
336 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
337 * Neither determinism nor randomness of selection is guaranteed.
338 * @param pP the fixed value of pattern parameter p, or null if not bound.
339 * @return a match represented as a Match object, or null if no match is found.
340 *
341 */
342 public Optional<Inv34.Match> getOneArbitraryMatch(final Physical_Person pP) {
343 return rawGetOneArbitraryMatch(new Object[]{pP});
344 }
345
346 /**
347 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
348 * under any possible substitution of the unspecified parameters (if any).
349 * @param pP the fixed value of pattern parameter p, or null if not bound.
350 * @return true if the input is a valid (partial) match of the pattern.
351 *
352 */
353 public boolean hasMatch(final Physical_Person pP) {
354 return rawHasMatch(new Object[]{pP});
355 }
356
357 /**
358 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
359 * @param pP the fixed value of pattern parameter p, or null if not bound.
360 * @return the number of pattern matches found.
361 *
362 */
363 public int countMatches(final Physical_Person pP) {
364 return rawCountMatches(new Object[]{pP});
365 }
366
367 /**
368 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
369 * Neither determinism nor randomness of selection is guaranteed.
370 * @param pP the fixed value of pattern parameter p, or null if not bound.
371 * @param processor the action that will process the selected match.
372 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
373 *
374 */
375 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super Inv34.Match> processor) {
376 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
377 }
378
379 /**
380 * Returns a new (partial) match.
381 * This can be used e.g. to call the matcher with a partial match.
382 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
383 * @param pP the fixed value of pattern parameter p, or null if not bound.
384 * @return the (partial) match object.
385 *
386 */
387 public Inv34.Match newMatch(final Physical_Person pP) {
388 return Inv34.Match.newMatch(pP);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for p.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
397 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for p.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Set<Physical_Person> getAllValuesOfp() {
406 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for p.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 public Stream<Physical_Person> streamAllValuesOfp() {
415 return rawStreamAllValuesOfp(emptyArray());
416 }
417
418 @Override
419 protected Inv34.Match tupleToMatch(final Tuple t) {
420 try {
421 return Inv34.Match.newMatch((Physical_Person) t.get(POSITION_P));
422 } catch(ClassCastException e) {
423 LOGGER.error("Element(s) in tuple not properly typed!",e);
424 return null;
425 }
426 }
427
428 @Override
429 protected Inv34.Match arrayToMatch(final Object[] match) {
430 try {
431 return Inv34.Match.newMatch((Physical_Person) match[POSITION_P]);
432 } catch(ClassCastException e) {
433 LOGGER.error("Element(s) in array not properly typed!",e);
434 return null;
435 }
436 }
437
438 @Override
439 protected Inv34.Match arrayToMatchMutable(final Object[] match) {
440 try {
441 return Inv34.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
442 } catch(ClassCastException e) {
443 LOGGER.error("Element(s) in array not properly typed!",e);
444 return null;
445 }
446 }
447
448 /**
449 * @return the singleton instance of the query specification of this pattern
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static IQuerySpecification<Inv34.Matcher> querySpecification() {
454 return Inv34.instance();
455 }
456 }
457
458 private Inv34() {
459 super(GeneratedPQuery.INSTANCE);
460 }
461
462 /**
463 * @return the singleton instance of the query specification
464 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
465 *
466 */
467 public static Inv34 instance() {
468 try{
469 return LazyHolder.INSTANCE;
470 } catch (ExceptionInInitializerError err) {
471 throw processInitializerError(err);
472 }
473 }
474
475 @Override
476 protected Inv34.Matcher instantiate(final ViatraQueryEngine engine) {
477 return Inv34.Matcher.on(engine);
478 }
479
480 @Override
481 public Inv34.Matcher instantiate() {
482 return Inv34.Matcher.create();
483 }
484
485 @Override
486 public Inv34.Match newEmptyMatch() {
487 return Inv34.Match.newEmptyMatch();
488 }
489
490 @Override
491 public Inv34.Match newMatch(final Object... parameters) {
492 return Inv34.Match.newMatch((Taxation.Physical_Person) parameters[0]);
493 }
494
495 /**
496 * Inner class allowing the singleton instance of {@link Inv34} to be created
497 * <b>not</b> at the class load time of the outer class,
498 * but rather at the first call to {@link Inv34#instance()}.
499 *
500 * <p> This workaround is required e.g. to support recursion.
501 *
502 */
503 private static class LazyHolder {
504 private static final Inv34 INSTANCE = new Inv34();
505
506 /**
507 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
508 * This initialization order is required to support indirect recursion.
509 *
510 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
511 *
512 */
513 private static final Object STATIC_INITIALIZER = ensureInitialized();
514
515 public static Object ensureInitialized() {
516 INSTANCE.ensureInitializedInternal();
517 return null;
518 }
519 }
520
521 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
522 private static final Inv34.GeneratedPQuery INSTANCE = new GeneratedPQuery();
523
524 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
525
526 private final List<PParameter> parameters = Arrays.asList(parameter_p);
527
528 private GeneratedPQuery() {
529 super(PVisibility.PUBLIC);
530 }
531
532 @Override
533 public String getFullyQualifiedName() {
534 return "queries.inv34";
535 }
536
537 @Override
538 public List<String> getParameterNames() {
539 return Arrays.asList("p");
540 }
541
542 @Override
543 public List<PParameter> getParameters() {
544 return parameters;
545 }
546
547 @Override
548 public Set<PBody> doGetContainedBodies() {
549 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
550 Set<PBody> bodies = new LinkedHashSet<>();
551 {
552 PBody body = new PBody(this);
553 PVariable var_p = body.getOrCreateVariableByName("p");
554 PVariable var_birthMonth = body.getOrCreateVariableByName("birthMonth");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
556 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
557 new ExportedParameter(body, var_p, parameter_p)
558 ));
559 // Physical_Person.birth_month(p, birthMonth)
560 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
561 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
562 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_month")));
563 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
564 new Equality(body, var__virtual_0_, var_birthMonth);
565 // check(birthMonth < 1)
566 new ExpressionEvaluation(body, new IExpressionEvaluator() {
567
568 @Override
569 public String getShortDescription() {
570 return "Expression evaluation from pattern inv34";
571 }
572
573 @Override
574 public Iterable<String> getInputParameterNames() {
575 return Arrays.asList("birthMonth");}
576
577 @Override
578 public Object evaluateExpression(IValueProvider provider) throws Exception {
579 Integer birthMonth = (Integer) provider.getValue("birthMonth");
580 return evaluateExpression_1_1(birthMonth);
581 }
582 }, null);
583 bodies.add(body);
584 }
585 {
586 PBody body = new PBody(this);
587 PVariable var_p = body.getOrCreateVariableByName("p");
588 PVariable var_birthMonth = body.getOrCreateVariableByName("birthMonth");
589 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
590 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
591 new ExportedParameter(body, var_p, parameter_p)
592 ));
593 // Physical_Person.birth_month(p, birthMonth)
594 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
595 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
596 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_month")));
597 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
598 new Equality(body, var__virtual_0_, var_birthMonth);
599 // check(birthMonth > 12)
600 new ExpressionEvaluation(body, new IExpressionEvaluator() {
601
602 @Override
603 public String getShortDescription() {
604 return "Expression evaluation from pattern inv34";
605 }
606
607 @Override
608 public Iterable<String> getInputParameterNames() {
609 return Arrays.asList("birthMonth");}
610
611 @Override
612 public Object evaluateExpression(IValueProvider provider) throws Exception {
613 Integer birthMonth = (Integer) provider.getValue("birthMonth");
614 return evaluateExpression_2_1(birthMonth);
615 }
616 }, null);
617 bodies.add(body);
618 }
619 {
620 PAnnotation annotation = new PAnnotation("Constraint");
621 annotation.addAttribute("message", "inv34");
622 annotation.addAttribute("severity", "error");
623 annotation.addAttribute("key", Arrays.asList(new Object[] {
624 new ParameterReference("p")
625 }));
626 addAnnotation(annotation);
627 }
628 return bodies;
629 }
630 }
631
632 private static boolean evaluateExpression_1_1(final Integer birthMonth) {
633 return ((birthMonth).intValue() < 1);
634 }
635
636 private static boolean evaluateExpression_2_1(final Integer birthMonth) {
637 return ((birthMonth).intValue() > 12);
638 }
639}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java
new file mode 100644
index 00000000..b5da21b4
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv35.java
@@ -0,0 +1,639 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
46import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * //inv35-attribute-handled by multiplicity
54 * {@literal @}Constraint(message = "inv35", severity = "error", key = {p})
55 * pattern inv35(p : Physical_Person) {
56 * Physical_Person.birth_day(p, birthDay);
57 * check(birthDay {@literal <} 1);
58 * } or {
59 * Physical_Person.birth_day(p, birthDay);
60 * check(birthDay {@literal >} 28);
61 * }
62 * </pre></code>
63 *
64 * @see Matcher
65 * @see Match
66 *
67 */
68@SuppressWarnings("all")
69public final class Inv35 extends BaseGeneratedEMFQuerySpecification<Inv35.Matcher> {
70 /**
71 * Pattern-specific match representation of the queries.inv35 pattern,
72 * to be used in conjunction with {@link Matcher}.
73 *
74 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
75 * Each instance is a (possibly partial) substitution of pattern parameters,
76 * usable to represent a match of the pattern in the result of a query,
77 * or to specify the bound (fixed) input parameters when issuing a query.
78 *
79 * @see Matcher
80 *
81 */
82 public static abstract class Match extends BasePatternMatch {
83 private Physical_Person fP;
84
85 private static List<String> parameterNames = makeImmutableList("p");
86
87 private Match(final Physical_Person pP) {
88 this.fP = pP;
89 }
90
91 @Override
92 public Object get(final String parameterName) {
93 switch(parameterName) {
94 case "p": return this.fP;
95 default: return null;
96 }
97 }
98
99 @Override
100 public Object get(final int index) {
101 switch(index) {
102 case 0: return this.fP;
103 default: return null;
104 }
105 }
106
107 public Physical_Person getP() {
108 return this.fP;
109 }
110
111 @Override
112 public boolean set(final String parameterName, final Object newValue) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 if ("p".equals(parameterName) ) {
115 this.fP = (Physical_Person) newValue;
116 return true;
117 }
118 return false;
119 }
120
121 public void setP(final Physical_Person pP) {
122 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
123 this.fP = pP;
124 }
125
126 @Override
127 public String patternName() {
128 return "queries.inv35";
129 }
130
131 @Override
132 public List<String> parameterNames() {
133 return Inv35.Match.parameterNames;
134 }
135
136 @Override
137 public Object[] toArray() {
138 return new Object[]{fP};
139 }
140
141 @Override
142 public Inv35.Match toImmutable() {
143 return isMutable() ? newMatch(fP) : this;
144 }
145
146 @Override
147 public String prettyPrint() {
148 StringBuilder result = new StringBuilder();
149 result.append("\"p\"=" + prettyPrintValue(fP));
150 return result.toString();
151 }
152
153 @Override
154 public int hashCode() {
155 return Objects.hash(fP);
156 }
157
158 @Override
159 public boolean equals(final Object obj) {
160 if (this == obj)
161 return true;
162 if (obj == null) {
163 return false;
164 }
165 if ((obj instanceof Inv35.Match)) {
166 Inv35.Match other = (Inv35.Match) obj;
167 return Objects.equals(fP, other.fP);
168 } else {
169 // this should be infrequent
170 if (!(obj instanceof IPatternMatch)) {
171 return false;
172 }
173 IPatternMatch otherSig = (IPatternMatch) obj;
174 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
175 }
176 }
177
178 @Override
179 public Inv35 specification() {
180 return Inv35.instance();
181 }
182
183 /**
184 * Returns an empty, mutable match.
185 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
186 *
187 * @return the empty match.
188 *
189 */
190 public static Inv35.Match newEmptyMatch() {
191 return new Mutable(null);
192 }
193
194 /**
195 * Returns a mutable (partial) match.
196 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
197 *
198 * @param pP the fixed value of pattern parameter p, or null if not bound.
199 * @return the new, mutable (partial) match object.
200 *
201 */
202 public static Inv35.Match newMutableMatch(final Physical_Person pP) {
203 return new Mutable(pP);
204 }
205
206 /**
207 * Returns a new (partial) match.
208 * This can be used e.g. to call the matcher with a partial match.
209 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
210 * @param pP the fixed value of pattern parameter p, or null if not bound.
211 * @return the (partial) match object.
212 *
213 */
214 public static Inv35.Match newMatch(final Physical_Person pP) {
215 return new Immutable(pP);
216 }
217
218 private static final class Mutable extends Inv35.Match {
219 Mutable(final Physical_Person pP) {
220 super(pP);
221 }
222
223 @Override
224 public boolean isMutable() {
225 return true;
226 }
227 }
228
229 private static final class Immutable extends Inv35.Match {
230 Immutable(final Physical_Person pP) {
231 super(pP);
232 }
233
234 @Override
235 public boolean isMutable() {
236 return false;
237 }
238 }
239 }
240
241 /**
242 * Generated pattern matcher API of the queries.inv35 pattern,
243 * providing pattern-specific query methods.
244 *
245 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
246 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
247 *
248 * <p>Matches of the pattern will be represented as {@link Match}.
249 *
250 * <p>Original source:
251 * <code><pre>
252 * //inv35-attribute-handled by multiplicity
253 * {@literal @}Constraint(message = "inv35", severity = "error", key = {p})
254 * pattern inv35(p : Physical_Person) {
255 * Physical_Person.birth_day(p, birthDay);
256 * check(birthDay {@literal <} 1);
257 * } or {
258 * Physical_Person.birth_day(p, birthDay);
259 * check(birthDay {@literal >} 28);
260 * }
261 * </pre></code>
262 *
263 * @see Match
264 * @see Inv35
265 *
266 */
267 public static class Matcher extends BaseMatcher<Inv35.Match> {
268 /**
269 * Initializes the pattern matcher within an existing VIATRA Query engine.
270 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
271 *
272 * @param engine the existing VIATRA Query engine in which this matcher will be created.
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 *
275 */
276 public static Inv35.Matcher on(final ViatraQueryEngine engine) {
277 // check if matcher already exists
278 Matcher matcher = engine.getExistingMatcher(querySpecification());
279 if (matcher == null) {
280 matcher = (Matcher)engine.getMatcher(querySpecification());
281 }
282 return matcher;
283 }
284
285 /**
286 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
287 * @return an initialized matcher
288 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
289 *
290 */
291 public static Inv35.Matcher create() {
292 return new Matcher();
293 }
294
295 private static final int POSITION_P = 0;
296
297 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv35.Matcher.class);
298
299 /**
300 * Initializes the pattern matcher within an existing VIATRA Query engine.
301 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
302 *
303 * @param engine the existing VIATRA Query engine in which this matcher will be created.
304 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
305 *
306 */
307 private Matcher() {
308 super(querySpecification());
309 }
310
311 /**
312 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
313 * @param pP the fixed value of pattern parameter p, or null if not bound.
314 * @return matches represented as a Match object.
315 *
316 */
317 public Collection<Inv35.Match> getAllMatches(final Physical_Person pP) {
318 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
319 }
320
321 /**
322 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
323 * </p>
324 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
325 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
326 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
327 * @param pP the fixed value of pattern parameter p, or null if not bound.
328 * @return a stream of matches represented as a Match object.
329 *
330 */
331 public Stream<Inv35.Match> streamAllMatches(final Physical_Person pP) {
332 return rawStreamAllMatches(new Object[]{pP});
333 }
334
335 /**
336 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
337 * Neither determinism nor randomness of selection is guaranteed.
338 * @param pP the fixed value of pattern parameter p, or null if not bound.
339 * @return a match represented as a Match object, or null if no match is found.
340 *
341 */
342 public Optional<Inv35.Match> getOneArbitraryMatch(final Physical_Person pP) {
343 return rawGetOneArbitraryMatch(new Object[]{pP});
344 }
345
346 /**
347 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
348 * under any possible substitution of the unspecified parameters (if any).
349 * @param pP the fixed value of pattern parameter p, or null if not bound.
350 * @return true if the input is a valid (partial) match of the pattern.
351 *
352 */
353 public boolean hasMatch(final Physical_Person pP) {
354 return rawHasMatch(new Object[]{pP});
355 }
356
357 /**
358 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
359 * @param pP the fixed value of pattern parameter p, or null if not bound.
360 * @return the number of pattern matches found.
361 *
362 */
363 public int countMatches(final Physical_Person pP) {
364 return rawCountMatches(new Object[]{pP});
365 }
366
367 /**
368 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
369 * Neither determinism nor randomness of selection is guaranteed.
370 * @param pP the fixed value of pattern parameter p, or null if not bound.
371 * @param processor the action that will process the selected match.
372 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
373 *
374 */
375 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super Inv35.Match> processor) {
376 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
377 }
378
379 /**
380 * Returns a new (partial) match.
381 * This can be used e.g. to call the matcher with a partial match.
382 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
383 * @param pP the fixed value of pattern parameter p, or null if not bound.
384 * @return the (partial) match object.
385 *
386 */
387 public Inv35.Match newMatch(final Physical_Person pP) {
388 return Inv35.Match.newMatch(pP);
389 }
390
391 /**
392 * Retrieve the set of values that occur in matches for p.
393 * @return the Set of all values or empty set if there are no matches
394 *
395 */
396 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
397 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
398 }
399
400 /**
401 * Retrieve the set of values that occur in matches for p.
402 * @return the Set of all values or empty set if there are no matches
403 *
404 */
405 public Set<Physical_Person> getAllValuesOfp() {
406 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
407 }
408
409 /**
410 * Retrieve the set of values that occur in matches for p.
411 * @return the Set of all values or empty set if there are no matches
412 *
413 */
414 public Stream<Physical_Person> streamAllValuesOfp() {
415 return rawStreamAllValuesOfp(emptyArray());
416 }
417
418 @Override
419 protected Inv35.Match tupleToMatch(final Tuple t) {
420 try {
421 return Inv35.Match.newMatch((Physical_Person) t.get(POSITION_P));
422 } catch(ClassCastException e) {
423 LOGGER.error("Element(s) in tuple not properly typed!",e);
424 return null;
425 }
426 }
427
428 @Override
429 protected Inv35.Match arrayToMatch(final Object[] match) {
430 try {
431 return Inv35.Match.newMatch((Physical_Person) match[POSITION_P]);
432 } catch(ClassCastException e) {
433 LOGGER.error("Element(s) in array not properly typed!",e);
434 return null;
435 }
436 }
437
438 @Override
439 protected Inv35.Match arrayToMatchMutable(final Object[] match) {
440 try {
441 return Inv35.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
442 } catch(ClassCastException e) {
443 LOGGER.error("Element(s) in array not properly typed!",e);
444 return null;
445 }
446 }
447
448 /**
449 * @return the singleton instance of the query specification of this pattern
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static IQuerySpecification<Inv35.Matcher> querySpecification() {
454 return Inv35.instance();
455 }
456 }
457
458 private Inv35() {
459 super(GeneratedPQuery.INSTANCE);
460 }
461
462 /**
463 * @return the singleton instance of the query specification
464 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
465 *
466 */
467 public static Inv35 instance() {
468 try{
469 return LazyHolder.INSTANCE;
470 } catch (ExceptionInInitializerError err) {
471 throw processInitializerError(err);
472 }
473 }
474
475 @Override
476 protected Inv35.Matcher instantiate(final ViatraQueryEngine engine) {
477 return Inv35.Matcher.on(engine);
478 }
479
480 @Override
481 public Inv35.Matcher instantiate() {
482 return Inv35.Matcher.create();
483 }
484
485 @Override
486 public Inv35.Match newEmptyMatch() {
487 return Inv35.Match.newEmptyMatch();
488 }
489
490 @Override
491 public Inv35.Match newMatch(final Object... parameters) {
492 return Inv35.Match.newMatch((Taxation.Physical_Person) parameters[0]);
493 }
494
495 /**
496 * Inner class allowing the singleton instance of {@link Inv35} to be created
497 * <b>not</b> at the class load time of the outer class,
498 * but rather at the first call to {@link Inv35#instance()}.
499 *
500 * <p> This workaround is required e.g. to support recursion.
501 *
502 */
503 private static class LazyHolder {
504 private static final Inv35 INSTANCE = new Inv35();
505
506 /**
507 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
508 * This initialization order is required to support indirect recursion.
509 *
510 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
511 *
512 */
513 private static final Object STATIC_INITIALIZER = ensureInitialized();
514
515 public static Object ensureInitialized() {
516 INSTANCE.ensureInitializedInternal();
517 return null;
518 }
519 }
520
521 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
522 private static final Inv35.GeneratedPQuery INSTANCE = new GeneratedPQuery();
523
524 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
525
526 private final List<PParameter> parameters = Arrays.asList(parameter_p);
527
528 private GeneratedPQuery() {
529 super(PVisibility.PUBLIC);
530 }
531
532 @Override
533 public String getFullyQualifiedName() {
534 return "queries.inv35";
535 }
536
537 @Override
538 public List<String> getParameterNames() {
539 return Arrays.asList("p");
540 }
541
542 @Override
543 public List<PParameter> getParameters() {
544 return parameters;
545 }
546
547 @Override
548 public Set<PBody> doGetContainedBodies() {
549 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
550 Set<PBody> bodies = new LinkedHashSet<>();
551 {
552 PBody body = new PBody(this);
553 PVariable var_p = body.getOrCreateVariableByName("p");
554 PVariable var_birthDay = body.getOrCreateVariableByName("birthDay");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
556 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
557 new ExportedParameter(body, var_p, parameter_p)
558 ));
559 // Physical_Person.birth_day(p, birthDay)
560 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
561 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
562 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_day")));
563 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
564 new Equality(body, var__virtual_0_, var_birthDay);
565 // check(birthDay < 1)
566 new ExpressionEvaluation(body, new IExpressionEvaluator() {
567
568 @Override
569 public String getShortDescription() {
570 return "Expression evaluation from pattern inv35";
571 }
572
573 @Override
574 public Iterable<String> getInputParameterNames() {
575 return Arrays.asList("birthDay");}
576
577 @Override
578 public Object evaluateExpression(IValueProvider provider) throws Exception {
579 Integer birthDay = (Integer) provider.getValue("birthDay");
580 return evaluateExpression_1_1(birthDay);
581 }
582 }, null);
583 bodies.add(body);
584 }
585 {
586 PBody body = new PBody(this);
587 PVariable var_p = body.getOrCreateVariableByName("p");
588 PVariable var_birthDay = body.getOrCreateVariableByName("birthDay");
589 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
590 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
591 new ExportedParameter(body, var_p, parameter_p)
592 ));
593 // Physical_Person.birth_day(p, birthDay)
594 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
595 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
596 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_day")));
597 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
598 new Equality(body, var__virtual_0_, var_birthDay);
599 // check(birthDay > 28)
600 new ExpressionEvaluation(body, new IExpressionEvaluator() {
601
602 @Override
603 public String getShortDescription() {
604 return "Expression evaluation from pattern inv35";
605 }
606
607 @Override
608 public Iterable<String> getInputParameterNames() {
609 return Arrays.asList("birthDay");}
610
611 @Override
612 public Object evaluateExpression(IValueProvider provider) throws Exception {
613 Integer birthDay = (Integer) provider.getValue("birthDay");
614 return evaluateExpression_2_1(birthDay);
615 }
616 }, null);
617 bodies.add(body);
618 }
619 {
620 PAnnotation annotation = new PAnnotation("Constraint");
621 annotation.addAttribute("message", "inv35");
622 annotation.addAttribute("severity", "error");
623 annotation.addAttribute("key", Arrays.asList(new Object[] {
624 new ParameterReference("p")
625 }));
626 addAnnotation(annotation);
627 }
628 return bodies;
629 }
630 }
631
632 private static boolean evaluateExpression_1_1(final Integer birthDay) {
633 return ((birthDay).intValue() < 1);
634 }
635
636 private static boolean evaluateExpression_2_1(final Integer birthDay) {
637 return ((birthDay).intValue() > 28);
638 }
639}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java
new file mode 100644
index 00000000..d86f31c9
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv47.java
@@ -0,0 +1,636 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Legal_Union_Record;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
36import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
40import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
41import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
43import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
44import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
45import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
46import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
47import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
48import queries.X_inv47;
49
50/**
51 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
52 *
53 * <p>Original source:
54 * <code><pre>
55 * //inv36-AttributeRemoved
56 * //inv37-AttributeRemoved
57 * //inv38-AttributeRemoved
58 * //inv39-AttributeRemoved
59 * //inv40-AttributeRemoved
60 * //inv41-AttributeRemoved
61 * //inv42-AttributeRemoved
62 * //inv43-AttributeRemoved
63 * //inv44-AttributeRemoved
64 * //inv45-AttributeRemoved
65 * //inv46-AttributeRemoved
66 *
67 * //inv47-attributes-handled by multiplicity
68 * {@literal @}Constraint(message = "inv47", severity = "error", key = {lur})
69 * pattern inv47(lur : Legal_Union_Record) {
70 * Legal_Union_Record.end_year(lur, endY);
71 * Legal_Union_Record.start_year(lur, startY);
72 * neg find x_inv47(lur);
73 * check(startY {@literal >}= endY);
74 * }
75 * </pre></code>
76 *
77 * @see Matcher
78 * @see Match
79 *
80 */
81@SuppressWarnings("all")
82public final class Inv47 extends BaseGeneratedEMFQuerySpecification<Inv47.Matcher> {
83 /**
84 * Pattern-specific match representation of the queries.inv47 pattern,
85 * to be used in conjunction with {@link Matcher}.
86 *
87 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
88 * Each instance is a (possibly partial) substitution of pattern parameters,
89 * usable to represent a match of the pattern in the result of a query,
90 * or to specify the bound (fixed) input parameters when issuing a query.
91 *
92 * @see Matcher
93 *
94 */
95 public static abstract class Match extends BasePatternMatch {
96 private Legal_Union_Record fLur;
97
98 private static List<String> parameterNames = makeImmutableList("lur");
99
100 private Match(final Legal_Union_Record pLur) {
101 this.fLur = pLur;
102 }
103
104 @Override
105 public Object get(final String parameterName) {
106 switch(parameterName) {
107 case "lur": return this.fLur;
108 default: return null;
109 }
110 }
111
112 @Override
113 public Object get(final int index) {
114 switch(index) {
115 case 0: return this.fLur;
116 default: return null;
117 }
118 }
119
120 public Legal_Union_Record getLur() {
121 return this.fLur;
122 }
123
124 @Override
125 public boolean set(final String parameterName, final Object newValue) {
126 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
127 if ("lur".equals(parameterName) ) {
128 this.fLur = (Legal_Union_Record) newValue;
129 return true;
130 }
131 return false;
132 }
133
134 public void setLur(final Legal_Union_Record pLur) {
135 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
136 this.fLur = pLur;
137 }
138
139 @Override
140 public String patternName() {
141 return "queries.inv47";
142 }
143
144 @Override
145 public List<String> parameterNames() {
146 return Inv47.Match.parameterNames;
147 }
148
149 @Override
150 public Object[] toArray() {
151 return new Object[]{fLur};
152 }
153
154 @Override
155 public Inv47.Match toImmutable() {
156 return isMutable() ? newMatch(fLur) : this;
157 }
158
159 @Override
160 public String prettyPrint() {
161 StringBuilder result = new StringBuilder();
162 result.append("\"lur\"=" + prettyPrintValue(fLur));
163 return result.toString();
164 }
165
166 @Override
167 public int hashCode() {
168 return Objects.hash(fLur);
169 }
170
171 @Override
172 public boolean equals(final Object obj) {
173 if (this == obj)
174 return true;
175 if (obj == null) {
176 return false;
177 }
178 if ((obj instanceof Inv47.Match)) {
179 Inv47.Match other = (Inv47.Match) obj;
180 return Objects.equals(fLur, other.fLur);
181 } else {
182 // this should be infrequent
183 if (!(obj instanceof IPatternMatch)) {
184 return false;
185 }
186 IPatternMatch otherSig = (IPatternMatch) obj;
187 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
188 }
189 }
190
191 @Override
192 public Inv47 specification() {
193 return Inv47.instance();
194 }
195
196 /**
197 * Returns an empty, mutable match.
198 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
199 *
200 * @return the empty match.
201 *
202 */
203 public static Inv47.Match newEmptyMatch() {
204 return new Mutable(null);
205 }
206
207 /**
208 * Returns a mutable (partial) match.
209 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
210 *
211 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
212 * @return the new, mutable (partial) match object.
213 *
214 */
215 public static Inv47.Match newMutableMatch(final Legal_Union_Record pLur) {
216 return new Mutable(pLur);
217 }
218
219 /**
220 * Returns a new (partial) match.
221 * This can be used e.g. to call the matcher with a partial match.
222 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
223 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
224 * @return the (partial) match object.
225 *
226 */
227 public static Inv47.Match newMatch(final Legal_Union_Record pLur) {
228 return new Immutable(pLur);
229 }
230
231 private static final class Mutable extends Inv47.Match {
232 Mutable(final Legal_Union_Record pLur) {
233 super(pLur);
234 }
235
236 @Override
237 public boolean isMutable() {
238 return true;
239 }
240 }
241
242 private static final class Immutable extends Inv47.Match {
243 Immutable(final Legal_Union_Record pLur) {
244 super(pLur);
245 }
246
247 @Override
248 public boolean isMutable() {
249 return false;
250 }
251 }
252 }
253
254 /**
255 * Generated pattern matcher API of the queries.inv47 pattern,
256 * providing pattern-specific query methods.
257 *
258 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
259 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
260 *
261 * <p>Matches of the pattern will be represented as {@link Match}.
262 *
263 * <p>Original source:
264 * <code><pre>
265 * //inv36-AttributeRemoved
266 * //inv37-AttributeRemoved
267 * //inv38-AttributeRemoved
268 * //inv39-AttributeRemoved
269 * //inv40-AttributeRemoved
270 * //inv41-AttributeRemoved
271 * //inv42-AttributeRemoved
272 * //inv43-AttributeRemoved
273 * //inv44-AttributeRemoved
274 * //inv45-AttributeRemoved
275 * //inv46-AttributeRemoved
276 *
277 * //inv47-attributes-handled by multiplicity
278 * {@literal @}Constraint(message = "inv47", severity = "error", key = {lur})
279 * pattern inv47(lur : Legal_Union_Record) {
280 * Legal_Union_Record.end_year(lur, endY);
281 * Legal_Union_Record.start_year(lur, startY);
282 * neg find x_inv47(lur);
283 * check(startY {@literal >}= endY);
284 * }
285 * </pre></code>
286 *
287 * @see Match
288 * @see Inv47
289 *
290 */
291 public static class Matcher extends BaseMatcher<Inv47.Match> {
292 /**
293 * Initializes the pattern matcher within an existing VIATRA Query engine.
294 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
295 *
296 * @param engine the existing VIATRA Query engine in which this matcher will be created.
297 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
298 *
299 */
300 public static Inv47.Matcher on(final ViatraQueryEngine engine) {
301 // check if matcher already exists
302 Matcher matcher = engine.getExistingMatcher(querySpecification());
303 if (matcher == null) {
304 matcher = (Matcher)engine.getMatcher(querySpecification());
305 }
306 return matcher;
307 }
308
309 /**
310 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
311 * @return an initialized matcher
312 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
313 *
314 */
315 public static Inv47.Matcher create() {
316 return new Matcher();
317 }
318
319 private static final int POSITION_LUR = 0;
320
321 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv47.Matcher.class);
322
323 /**
324 * Initializes the pattern matcher within an existing VIATRA Query engine.
325 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
326 *
327 * @param engine the existing VIATRA Query engine in which this matcher will be created.
328 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
329 *
330 */
331 private Matcher() {
332 super(querySpecification());
333 }
334
335 /**
336 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
337 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
338 * @return matches represented as a Match object.
339 *
340 */
341 public Collection<Inv47.Match> getAllMatches(final Legal_Union_Record pLur) {
342 return rawStreamAllMatches(new Object[]{pLur}).collect(Collectors.toSet());
343 }
344
345 /**
346 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
347 * </p>
348 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
349 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
350 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
351 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
352 * @return a stream of matches represented as a Match object.
353 *
354 */
355 public Stream<Inv47.Match> streamAllMatches(final Legal_Union_Record pLur) {
356 return rawStreamAllMatches(new Object[]{pLur});
357 }
358
359 /**
360 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
361 * Neither determinism nor randomness of selection is guaranteed.
362 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
363 * @return a match represented as a Match object, or null if no match is found.
364 *
365 */
366 public Optional<Inv47.Match> getOneArbitraryMatch(final Legal_Union_Record pLur) {
367 return rawGetOneArbitraryMatch(new Object[]{pLur});
368 }
369
370 /**
371 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
372 * under any possible substitution of the unspecified parameters (if any).
373 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
374 * @return true if the input is a valid (partial) match of the pattern.
375 *
376 */
377 public boolean hasMatch(final Legal_Union_Record pLur) {
378 return rawHasMatch(new Object[]{pLur});
379 }
380
381 /**
382 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
383 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
384 * @return the number of pattern matches found.
385 *
386 */
387 public int countMatches(final Legal_Union_Record pLur) {
388 return rawCountMatches(new Object[]{pLur});
389 }
390
391 /**
392 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
393 * Neither determinism nor randomness of selection is guaranteed.
394 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
395 * @param processor the action that will process the selected match.
396 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
397 *
398 */
399 public boolean forOneArbitraryMatch(final Legal_Union_Record pLur, final Consumer<? super Inv47.Match> processor) {
400 return rawForOneArbitraryMatch(new Object[]{pLur}, processor);
401 }
402
403 /**
404 * Returns a new (partial) match.
405 * This can be used e.g. to call the matcher with a partial match.
406 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
407 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
408 * @return the (partial) match object.
409 *
410 */
411 public Inv47.Match newMatch(final Legal_Union_Record pLur) {
412 return Inv47.Match.newMatch(pLur);
413 }
414
415 /**
416 * Retrieve the set of values that occur in matches for lur.
417 * @return the Set of all values or empty set if there are no matches
418 *
419 */
420 protected Stream<Legal_Union_Record> rawStreamAllValuesOflur(final Object[] parameters) {
421 return rawStreamAllValues(POSITION_LUR, parameters).map(Legal_Union_Record.class::cast);
422 }
423
424 /**
425 * Retrieve the set of values that occur in matches for lur.
426 * @return the Set of all values or empty set if there are no matches
427 *
428 */
429 public Set<Legal_Union_Record> getAllValuesOflur() {
430 return rawStreamAllValuesOflur(emptyArray()).collect(Collectors.toSet());
431 }
432
433 /**
434 * Retrieve the set of values that occur in matches for lur.
435 * @return the Set of all values or empty set if there are no matches
436 *
437 */
438 public Stream<Legal_Union_Record> streamAllValuesOflur() {
439 return rawStreamAllValuesOflur(emptyArray());
440 }
441
442 @Override
443 protected Inv47.Match tupleToMatch(final Tuple t) {
444 try {
445 return Inv47.Match.newMatch((Legal_Union_Record) t.get(POSITION_LUR));
446 } catch(ClassCastException e) {
447 LOGGER.error("Element(s) in tuple not properly typed!",e);
448 return null;
449 }
450 }
451
452 @Override
453 protected Inv47.Match arrayToMatch(final Object[] match) {
454 try {
455 return Inv47.Match.newMatch((Legal_Union_Record) match[POSITION_LUR]);
456 } catch(ClassCastException e) {
457 LOGGER.error("Element(s) in array not properly typed!",e);
458 return null;
459 }
460 }
461
462 @Override
463 protected Inv47.Match arrayToMatchMutable(final Object[] match) {
464 try {
465 return Inv47.Match.newMutableMatch((Legal_Union_Record) match[POSITION_LUR]);
466 } catch(ClassCastException e) {
467 LOGGER.error("Element(s) in array not properly typed!",e);
468 return null;
469 }
470 }
471
472 /**
473 * @return the singleton instance of the query specification of this pattern
474 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
475 *
476 */
477 public static IQuerySpecification<Inv47.Matcher> querySpecification() {
478 return Inv47.instance();
479 }
480 }
481
482 private Inv47() {
483 super(GeneratedPQuery.INSTANCE);
484 }
485
486 /**
487 * @return the singleton instance of the query specification
488 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
489 *
490 */
491 public static Inv47 instance() {
492 try{
493 return LazyHolder.INSTANCE;
494 } catch (ExceptionInInitializerError err) {
495 throw processInitializerError(err);
496 }
497 }
498
499 @Override
500 protected Inv47.Matcher instantiate(final ViatraQueryEngine engine) {
501 return Inv47.Matcher.on(engine);
502 }
503
504 @Override
505 public Inv47.Matcher instantiate() {
506 return Inv47.Matcher.create();
507 }
508
509 @Override
510 public Inv47.Match newEmptyMatch() {
511 return Inv47.Match.newEmptyMatch();
512 }
513
514 @Override
515 public Inv47.Match newMatch(final Object... parameters) {
516 return Inv47.Match.newMatch((Taxation.Legal_Union_Record) parameters[0]);
517 }
518
519 /**
520 * Inner class allowing the singleton instance of {@link Inv47} to be created
521 * <b>not</b> at the class load time of the outer class,
522 * but rather at the first call to {@link Inv47#instance()}.
523 *
524 * <p> This workaround is required e.g. to support recursion.
525 *
526 */
527 private static class LazyHolder {
528 private static final Inv47 INSTANCE = new Inv47();
529
530 /**
531 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
532 * This initialization order is required to support indirect recursion.
533 *
534 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
535 *
536 */
537 private static final Object STATIC_INITIALIZER = ensureInitialized();
538
539 public static Object ensureInitialized() {
540 INSTANCE.ensureInitializedInternal();
541 return null;
542 }
543 }
544
545 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
546 private static final Inv47.GeneratedPQuery INSTANCE = new GeneratedPQuery();
547
548 private final PParameter parameter_lur = new PParameter("lur", "Taxation.Legal_Union_Record", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Legal_Union_Record")), PParameterDirection.INOUT);
549
550 private final List<PParameter> parameters = Arrays.asList(parameter_lur);
551
552 private GeneratedPQuery() {
553 super(PVisibility.PUBLIC);
554 }
555
556 @Override
557 public String getFullyQualifiedName() {
558 return "queries.inv47";
559 }
560
561 @Override
562 public List<String> getParameterNames() {
563 return Arrays.asList("lur");
564 }
565
566 @Override
567 public List<PParameter> getParameters() {
568 return parameters;
569 }
570
571 @Override
572 public Set<PBody> doGetContainedBodies() {
573 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
574 Set<PBody> bodies = new LinkedHashSet<>();
575 {
576 PBody body = new PBody(this);
577 PVariable var_lur = body.getOrCreateVariableByName("lur");
578 PVariable var_endY = body.getOrCreateVariableByName("endY");
579 PVariable var_startY = body.getOrCreateVariableByName("startY");
580 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
581 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
582 new ExportedParameter(body, var_lur, parameter_lur)
583 ));
584 // Legal_Union_Record.end_year(lur, endY)
585 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
586 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
587 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "end_year")));
588 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
589 new Equality(body, var__virtual_0_, var_endY);
590 // Legal_Union_Record.start_year(lur, startY)
591 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
592 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
593 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "start_year")));
594 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
595 new Equality(body, var__virtual_1_, var_startY);
596 // neg find x_inv47(lur)
597 new NegativePatternCall(body, Tuples.flatTupleOf(var_lur), X_inv47.instance().getInternalQueryRepresentation());
598 // check(startY >= endY)
599 new ExpressionEvaluation(body, new IExpressionEvaluator() {
600
601 @Override
602 public String getShortDescription() {
603 return "Expression evaluation from pattern inv47";
604 }
605
606 @Override
607 public Iterable<String> getInputParameterNames() {
608 return Arrays.asList("endY", "startY");}
609
610 @Override
611 public Object evaluateExpression(IValueProvider provider) throws Exception {
612 Integer endY = (Integer) provider.getValue("endY");
613 Integer startY = (Integer) provider.getValue("startY");
614 return evaluateExpression_1_1(endY, startY);
615 }
616 }, null);
617 bodies.add(body);
618 }
619 {
620 PAnnotation annotation = new PAnnotation("Constraint");
621 annotation.addAttribute("message", "inv47");
622 annotation.addAttribute("severity", "error");
623 annotation.addAttribute("key", Arrays.asList(new Object[] {
624 new ParameterReference("lur")
625 }));
626 addAnnotation(annotation);
627 }
628 return bodies;
629 }
630 }
631
632 private static boolean evaluateExpression_1_1(final Integer endY, final Integer startY) {
633 boolean _greaterEqualsThan = (startY.compareTo(endY) >= 0);
634 return _greaterEqualsThan;
635 }
636}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java
new file mode 100644
index 00000000..66c66988
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv48.java
@@ -0,0 +1,566 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41import queries.X_inv48_Dis;
42import queries.X_inv48_notDis;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * //inv48-attributes-handled by multiplicity
50 * {@literal @}Constraint(message = "inv48", severity = "error", key = {p})
51 * pattern inv48(p : Physical_Person) {
52 * neg find x_inv48_notDis(p);
53 * neg find x_inv48_Dis(p);
54 * }
55 * </pre></code>
56 *
57 * @see Matcher
58 * @see Match
59 *
60 */
61@SuppressWarnings("all")
62public final class Inv48 extends BaseGeneratedEMFQuerySpecification<Inv48.Matcher> {
63 /**
64 * Pattern-specific match representation of the queries.inv48 pattern,
65 * to be used in conjunction with {@link Matcher}.
66 *
67 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
68 * Each instance is a (possibly partial) substitution of pattern parameters,
69 * usable to represent a match of the pattern in the result of a query,
70 * or to specify the bound (fixed) input parameters when issuing a query.
71 *
72 * @see Matcher
73 *
74 */
75 public static abstract class Match extends BasePatternMatch {
76 private Physical_Person fP;
77
78 private static List<String> parameterNames = makeImmutableList("p");
79
80 private Match(final Physical_Person pP) {
81 this.fP = pP;
82 }
83
84 @Override
85 public Object get(final String parameterName) {
86 switch(parameterName) {
87 case "p": return this.fP;
88 default: return null;
89 }
90 }
91
92 @Override
93 public Object get(final int index) {
94 switch(index) {
95 case 0: return this.fP;
96 default: return null;
97 }
98 }
99
100 public Physical_Person getP() {
101 return this.fP;
102 }
103
104 @Override
105 public boolean set(final String parameterName, final Object newValue) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 if ("p".equals(parameterName) ) {
108 this.fP = (Physical_Person) newValue;
109 return true;
110 }
111 return false;
112 }
113
114 public void setP(final Physical_Person pP) {
115 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
116 this.fP = pP;
117 }
118
119 @Override
120 public String patternName() {
121 return "queries.inv48";
122 }
123
124 @Override
125 public List<String> parameterNames() {
126 return Inv48.Match.parameterNames;
127 }
128
129 @Override
130 public Object[] toArray() {
131 return new Object[]{fP};
132 }
133
134 @Override
135 public Inv48.Match toImmutable() {
136 return isMutable() ? newMatch(fP) : this;
137 }
138
139 @Override
140 public String prettyPrint() {
141 StringBuilder result = new StringBuilder();
142 result.append("\"p\"=" + prettyPrintValue(fP));
143 return result.toString();
144 }
145
146 @Override
147 public int hashCode() {
148 return Objects.hash(fP);
149 }
150
151 @Override
152 public boolean equals(final Object obj) {
153 if (this == obj)
154 return true;
155 if (obj == null) {
156 return false;
157 }
158 if ((obj instanceof Inv48.Match)) {
159 Inv48.Match other = (Inv48.Match) obj;
160 return Objects.equals(fP, other.fP);
161 } else {
162 // this should be infrequent
163 if (!(obj instanceof IPatternMatch)) {
164 return false;
165 }
166 IPatternMatch otherSig = (IPatternMatch) obj;
167 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
168 }
169 }
170
171 @Override
172 public Inv48 specification() {
173 return Inv48.instance();
174 }
175
176 /**
177 * Returns an empty, mutable match.
178 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
179 *
180 * @return the empty match.
181 *
182 */
183 public static Inv48.Match newEmptyMatch() {
184 return new Mutable(null);
185 }
186
187 /**
188 * Returns a mutable (partial) match.
189 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
190 *
191 * @param pP the fixed value of pattern parameter p, or null if not bound.
192 * @return the new, mutable (partial) match object.
193 *
194 */
195 public static Inv48.Match newMutableMatch(final Physical_Person pP) {
196 return new Mutable(pP);
197 }
198
199 /**
200 * Returns a new (partial) match.
201 * This can be used e.g. to call the matcher with a partial match.
202 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
203 * @param pP the fixed value of pattern parameter p, or null if not bound.
204 * @return the (partial) match object.
205 *
206 */
207 public static Inv48.Match newMatch(final Physical_Person pP) {
208 return new Immutable(pP);
209 }
210
211 private static final class Mutable extends Inv48.Match {
212 Mutable(final Physical_Person pP) {
213 super(pP);
214 }
215
216 @Override
217 public boolean isMutable() {
218 return true;
219 }
220 }
221
222 private static final class Immutable extends Inv48.Match {
223 Immutable(final Physical_Person pP) {
224 super(pP);
225 }
226
227 @Override
228 public boolean isMutable() {
229 return false;
230 }
231 }
232 }
233
234 /**
235 * Generated pattern matcher API of the queries.inv48 pattern,
236 * providing pattern-specific query methods.
237 *
238 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
239 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
240 *
241 * <p>Matches of the pattern will be represented as {@link Match}.
242 *
243 * <p>Original source:
244 * <code><pre>
245 * //inv48-attributes-handled by multiplicity
246 * {@literal @}Constraint(message = "inv48", severity = "error", key = {p})
247 * pattern inv48(p : Physical_Person) {
248 * neg find x_inv48_notDis(p);
249 * neg find x_inv48_Dis(p);
250 * }
251 * </pre></code>
252 *
253 * @see Match
254 * @see Inv48
255 *
256 */
257 public static class Matcher extends BaseMatcher<Inv48.Match> {
258 /**
259 * Initializes the pattern matcher within an existing VIATRA Query engine.
260 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
261 *
262 * @param engine the existing VIATRA Query engine in which this matcher will be created.
263 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
264 *
265 */
266 public static Inv48.Matcher on(final ViatraQueryEngine engine) {
267 // check if matcher already exists
268 Matcher matcher = engine.getExistingMatcher(querySpecification());
269 if (matcher == null) {
270 matcher = (Matcher)engine.getMatcher(querySpecification());
271 }
272 return matcher;
273 }
274
275 /**
276 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
277 * @return an initialized matcher
278 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
279 *
280 */
281 public static Inv48.Matcher create() {
282 return new Matcher();
283 }
284
285 private static final int POSITION_P = 0;
286
287 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv48.Matcher.class);
288
289 /**
290 * Initializes the pattern matcher within an existing VIATRA Query engine.
291 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
292 *
293 * @param engine the existing VIATRA Query engine in which this matcher will be created.
294 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
295 *
296 */
297 private Matcher() {
298 super(querySpecification());
299 }
300
301 /**
302 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
303 * @param pP the fixed value of pattern parameter p, or null if not bound.
304 * @return matches represented as a Match object.
305 *
306 */
307 public Collection<Inv48.Match> getAllMatches(final Physical_Person pP) {
308 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
309 }
310
311 /**
312 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
313 * </p>
314 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
315 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
316 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
317 * @param pP the fixed value of pattern parameter p, or null if not bound.
318 * @return a stream of matches represented as a Match object.
319 *
320 */
321 public Stream<Inv48.Match> streamAllMatches(final Physical_Person pP) {
322 return rawStreamAllMatches(new Object[]{pP});
323 }
324
325 /**
326 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
327 * Neither determinism nor randomness of selection is guaranteed.
328 * @param pP the fixed value of pattern parameter p, or null if not bound.
329 * @return a match represented as a Match object, or null if no match is found.
330 *
331 */
332 public Optional<Inv48.Match> getOneArbitraryMatch(final Physical_Person pP) {
333 return rawGetOneArbitraryMatch(new Object[]{pP});
334 }
335
336 /**
337 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
338 * under any possible substitution of the unspecified parameters (if any).
339 * @param pP the fixed value of pattern parameter p, or null if not bound.
340 * @return true if the input is a valid (partial) match of the pattern.
341 *
342 */
343 public boolean hasMatch(final Physical_Person pP) {
344 return rawHasMatch(new Object[]{pP});
345 }
346
347 /**
348 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
349 * @param pP the fixed value of pattern parameter p, or null if not bound.
350 * @return the number of pattern matches found.
351 *
352 */
353 public int countMatches(final Physical_Person pP) {
354 return rawCountMatches(new Object[]{pP});
355 }
356
357 /**
358 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
359 * Neither determinism nor randomness of selection is guaranteed.
360 * @param pP the fixed value of pattern parameter p, or null if not bound.
361 * @param processor the action that will process the selected match.
362 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
363 *
364 */
365 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super Inv48.Match> processor) {
366 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
367 }
368
369 /**
370 * Returns a new (partial) match.
371 * This can be used e.g. to call the matcher with a partial match.
372 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
373 * @param pP the fixed value of pattern parameter p, or null if not bound.
374 * @return the (partial) match object.
375 *
376 */
377 public Inv48.Match newMatch(final Physical_Person pP) {
378 return Inv48.Match.newMatch(pP);
379 }
380
381 /**
382 * Retrieve the set of values that occur in matches for p.
383 * @return the Set of all values or empty set if there are no matches
384 *
385 */
386 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
387 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for p.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 public Set<Physical_Person> getAllValuesOfp() {
396 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
397 }
398
399 /**
400 * Retrieve the set of values that occur in matches for p.
401 * @return the Set of all values or empty set if there are no matches
402 *
403 */
404 public Stream<Physical_Person> streamAllValuesOfp() {
405 return rawStreamAllValuesOfp(emptyArray());
406 }
407
408 @Override
409 protected Inv48.Match tupleToMatch(final Tuple t) {
410 try {
411 return Inv48.Match.newMatch((Physical_Person) t.get(POSITION_P));
412 } catch(ClassCastException e) {
413 LOGGER.error("Element(s) in tuple not properly typed!",e);
414 return null;
415 }
416 }
417
418 @Override
419 protected Inv48.Match arrayToMatch(final Object[] match) {
420 try {
421 return Inv48.Match.newMatch((Physical_Person) match[POSITION_P]);
422 } catch(ClassCastException e) {
423 LOGGER.error("Element(s) in array not properly typed!",e);
424 return null;
425 }
426 }
427
428 @Override
429 protected Inv48.Match arrayToMatchMutable(final Object[] match) {
430 try {
431 return Inv48.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
432 } catch(ClassCastException e) {
433 LOGGER.error("Element(s) in array not properly typed!",e);
434 return null;
435 }
436 }
437
438 /**
439 * @return the singleton instance of the query specification of this pattern
440 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
441 *
442 */
443 public static IQuerySpecification<Inv48.Matcher> querySpecification() {
444 return Inv48.instance();
445 }
446 }
447
448 private Inv48() {
449 super(GeneratedPQuery.INSTANCE);
450 }
451
452 /**
453 * @return the singleton instance of the query specification
454 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
455 *
456 */
457 public static Inv48 instance() {
458 try{
459 return LazyHolder.INSTANCE;
460 } catch (ExceptionInInitializerError err) {
461 throw processInitializerError(err);
462 }
463 }
464
465 @Override
466 protected Inv48.Matcher instantiate(final ViatraQueryEngine engine) {
467 return Inv48.Matcher.on(engine);
468 }
469
470 @Override
471 public Inv48.Matcher instantiate() {
472 return Inv48.Matcher.create();
473 }
474
475 @Override
476 public Inv48.Match newEmptyMatch() {
477 return Inv48.Match.newEmptyMatch();
478 }
479
480 @Override
481 public Inv48.Match newMatch(final Object... parameters) {
482 return Inv48.Match.newMatch((Taxation.Physical_Person) parameters[0]);
483 }
484
485 /**
486 * Inner class allowing the singleton instance of {@link Inv48} to be created
487 * <b>not</b> at the class load time of the outer class,
488 * but rather at the first call to {@link Inv48#instance()}.
489 *
490 * <p> This workaround is required e.g. to support recursion.
491 *
492 */
493 private static class LazyHolder {
494 private static final Inv48 INSTANCE = new Inv48();
495
496 /**
497 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
498 * This initialization order is required to support indirect recursion.
499 *
500 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
501 *
502 */
503 private static final Object STATIC_INITIALIZER = ensureInitialized();
504
505 public static Object ensureInitialized() {
506 INSTANCE.ensureInitializedInternal();
507 return null;
508 }
509 }
510
511 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
512 private static final Inv48.GeneratedPQuery INSTANCE = new GeneratedPQuery();
513
514 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
515
516 private final List<PParameter> parameters = Arrays.asList(parameter_p);
517
518 private GeneratedPQuery() {
519 super(PVisibility.PUBLIC);
520 }
521
522 @Override
523 public String getFullyQualifiedName() {
524 return "queries.inv48";
525 }
526
527 @Override
528 public List<String> getParameterNames() {
529 return Arrays.asList("p");
530 }
531
532 @Override
533 public List<PParameter> getParameters() {
534 return parameters;
535 }
536
537 @Override
538 public Set<PBody> doGetContainedBodies() {
539 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
540 Set<PBody> bodies = new LinkedHashSet<>();
541 {
542 PBody body = new PBody(this);
543 PVariable var_p = body.getOrCreateVariableByName("p");
544 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
545 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
546 new ExportedParameter(body, var_p, parameter_p)
547 ));
548 // neg find x_inv48_notDis(p)
549 new NegativePatternCall(body, Tuples.flatTupleOf(var_p), X_inv48_notDis.instance().getInternalQueryRepresentation());
550 // neg find x_inv48_Dis(p)
551 new NegativePatternCall(body, Tuples.flatTupleOf(var_p), X_inv48_Dis.instance().getInternalQueryRepresentation());
552 bodies.add(body);
553 }
554 {
555 PAnnotation annotation = new PAnnotation("Constraint");
556 annotation.addAttribute("message", "inv48");
557 annotation.addAttribute("severity", "error");
558 annotation.addAttribute("key", Arrays.asList(new Object[] {
559 new ParameterReference("p")
560 }));
561 addAnnotation(annotation);
562 }
563 return bodies;
564 }
565 }
566}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java
new file mode 100644
index 00000000..3f8b975e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/Inv49.java
@@ -0,0 +1,561 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Legal_Union_Record;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
31import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41import queries.X_inv49_1;
42
43/**
44 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
45 *
46 * <p>Original source:
47 * <code><pre>
48 * //inv49-OclKindOf-handled by multiplicity
49 * {@literal @}Constraint(message = "inv49", severity = "error", key = {lur})
50 * pattern inv49(lur : Legal_Union_Record) {
51 * neg find x_inv49_1(lur);
52 * }
53 * </pre></code>
54 *
55 * @see Matcher
56 * @see Match
57 *
58 */
59@SuppressWarnings("all")
60public final class Inv49 extends BaseGeneratedEMFQuerySpecification<Inv49.Matcher> {
61 /**
62 * Pattern-specific match representation of the queries.inv49 pattern,
63 * to be used in conjunction with {@link Matcher}.
64 *
65 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
66 * Each instance is a (possibly partial) substitution of pattern parameters,
67 * usable to represent a match of the pattern in the result of a query,
68 * or to specify the bound (fixed) input parameters when issuing a query.
69 *
70 * @see Matcher
71 *
72 */
73 public static abstract class Match extends BasePatternMatch {
74 private Legal_Union_Record fLur;
75
76 private static List<String> parameterNames = makeImmutableList("lur");
77
78 private Match(final Legal_Union_Record pLur) {
79 this.fLur = pLur;
80 }
81
82 @Override
83 public Object get(final String parameterName) {
84 switch(parameterName) {
85 case "lur": return this.fLur;
86 default: return null;
87 }
88 }
89
90 @Override
91 public Object get(final int index) {
92 switch(index) {
93 case 0: return this.fLur;
94 default: return null;
95 }
96 }
97
98 public Legal_Union_Record getLur() {
99 return this.fLur;
100 }
101
102 @Override
103 public boolean set(final String parameterName, final Object newValue) {
104 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
105 if ("lur".equals(parameterName) ) {
106 this.fLur = (Legal_Union_Record) newValue;
107 return true;
108 }
109 return false;
110 }
111
112 public void setLur(final Legal_Union_Record pLur) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 this.fLur = pLur;
115 }
116
117 @Override
118 public String patternName() {
119 return "queries.inv49";
120 }
121
122 @Override
123 public List<String> parameterNames() {
124 return Inv49.Match.parameterNames;
125 }
126
127 @Override
128 public Object[] toArray() {
129 return new Object[]{fLur};
130 }
131
132 @Override
133 public Inv49.Match toImmutable() {
134 return isMutable() ? newMatch(fLur) : this;
135 }
136
137 @Override
138 public String prettyPrint() {
139 StringBuilder result = new StringBuilder();
140 result.append("\"lur\"=" + prettyPrintValue(fLur));
141 return result.toString();
142 }
143
144 @Override
145 public int hashCode() {
146 return Objects.hash(fLur);
147 }
148
149 @Override
150 public boolean equals(final Object obj) {
151 if (this == obj)
152 return true;
153 if (obj == null) {
154 return false;
155 }
156 if ((obj instanceof Inv49.Match)) {
157 Inv49.Match other = (Inv49.Match) obj;
158 return Objects.equals(fLur, other.fLur);
159 } else {
160 // this should be infrequent
161 if (!(obj instanceof IPatternMatch)) {
162 return false;
163 }
164 IPatternMatch otherSig = (IPatternMatch) obj;
165 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
166 }
167 }
168
169 @Override
170 public Inv49 specification() {
171 return Inv49.instance();
172 }
173
174 /**
175 * Returns an empty, mutable match.
176 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
177 *
178 * @return the empty match.
179 *
180 */
181 public static Inv49.Match newEmptyMatch() {
182 return new Mutable(null);
183 }
184
185 /**
186 * Returns a mutable (partial) match.
187 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
188 *
189 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
190 * @return the new, mutable (partial) match object.
191 *
192 */
193 public static Inv49.Match newMutableMatch(final Legal_Union_Record pLur) {
194 return new Mutable(pLur);
195 }
196
197 /**
198 * Returns a new (partial) match.
199 * This can be used e.g. to call the matcher with a partial match.
200 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
201 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
202 * @return the (partial) match object.
203 *
204 */
205 public static Inv49.Match newMatch(final Legal_Union_Record pLur) {
206 return new Immutable(pLur);
207 }
208
209 private static final class Mutable extends Inv49.Match {
210 Mutable(final Legal_Union_Record pLur) {
211 super(pLur);
212 }
213
214 @Override
215 public boolean isMutable() {
216 return true;
217 }
218 }
219
220 private static final class Immutable extends Inv49.Match {
221 Immutable(final Legal_Union_Record pLur) {
222 super(pLur);
223 }
224
225 @Override
226 public boolean isMutable() {
227 return false;
228 }
229 }
230 }
231
232 /**
233 * Generated pattern matcher API of the queries.inv49 pattern,
234 * providing pattern-specific query methods.
235 *
236 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
237 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
238 *
239 * <p>Matches of the pattern will be represented as {@link Match}.
240 *
241 * <p>Original source:
242 * <code><pre>
243 * //inv49-OclKindOf-handled by multiplicity
244 * {@literal @}Constraint(message = "inv49", severity = "error", key = {lur})
245 * pattern inv49(lur : Legal_Union_Record) {
246 * neg find x_inv49_1(lur);
247 * }
248 * </pre></code>
249 *
250 * @see Match
251 * @see Inv49
252 *
253 */
254 public static class Matcher extends BaseMatcher<Inv49.Match> {
255 /**
256 * Initializes the pattern matcher within an existing VIATRA Query engine.
257 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
258 *
259 * @param engine the existing VIATRA Query engine in which this matcher will be created.
260 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
261 *
262 */
263 public static Inv49.Matcher on(final ViatraQueryEngine engine) {
264 // check if matcher already exists
265 Matcher matcher = engine.getExistingMatcher(querySpecification());
266 if (matcher == null) {
267 matcher = (Matcher)engine.getMatcher(querySpecification());
268 }
269 return matcher;
270 }
271
272 /**
273 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
274 * @return an initialized matcher
275 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
276 *
277 */
278 public static Inv49.Matcher create() {
279 return new Matcher();
280 }
281
282 private static final int POSITION_LUR = 0;
283
284 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(Inv49.Matcher.class);
285
286 /**
287 * Initializes the pattern matcher within an existing VIATRA Query engine.
288 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
289 *
290 * @param engine the existing VIATRA Query engine in which this matcher will be created.
291 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
292 *
293 */
294 private Matcher() {
295 super(querySpecification());
296 }
297
298 /**
299 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
300 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
301 * @return matches represented as a Match object.
302 *
303 */
304 public Collection<Inv49.Match> getAllMatches(final Legal_Union_Record pLur) {
305 return rawStreamAllMatches(new Object[]{pLur}).collect(Collectors.toSet());
306 }
307
308 /**
309 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
310 * </p>
311 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
312 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
313 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
314 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
315 * @return a stream of matches represented as a Match object.
316 *
317 */
318 public Stream<Inv49.Match> streamAllMatches(final Legal_Union_Record pLur) {
319 return rawStreamAllMatches(new Object[]{pLur});
320 }
321
322 /**
323 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
324 * Neither determinism nor randomness of selection is guaranteed.
325 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
326 * @return a match represented as a Match object, or null if no match is found.
327 *
328 */
329 public Optional<Inv49.Match> getOneArbitraryMatch(final Legal_Union_Record pLur) {
330 return rawGetOneArbitraryMatch(new Object[]{pLur});
331 }
332
333 /**
334 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
335 * under any possible substitution of the unspecified parameters (if any).
336 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
337 * @return true if the input is a valid (partial) match of the pattern.
338 *
339 */
340 public boolean hasMatch(final Legal_Union_Record pLur) {
341 return rawHasMatch(new Object[]{pLur});
342 }
343
344 /**
345 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
346 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
347 * @return the number of pattern matches found.
348 *
349 */
350 public int countMatches(final Legal_Union_Record pLur) {
351 return rawCountMatches(new Object[]{pLur});
352 }
353
354 /**
355 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
356 * Neither determinism nor randomness of selection is guaranteed.
357 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
358 * @param processor the action that will process the selected match.
359 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
360 *
361 */
362 public boolean forOneArbitraryMatch(final Legal_Union_Record pLur, final Consumer<? super Inv49.Match> processor) {
363 return rawForOneArbitraryMatch(new Object[]{pLur}, processor);
364 }
365
366 /**
367 * Returns a new (partial) match.
368 * This can be used e.g. to call the matcher with a partial match.
369 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
370 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
371 * @return the (partial) match object.
372 *
373 */
374 public Inv49.Match newMatch(final Legal_Union_Record pLur) {
375 return Inv49.Match.newMatch(pLur);
376 }
377
378 /**
379 * Retrieve the set of values that occur in matches for lur.
380 * @return the Set of all values or empty set if there are no matches
381 *
382 */
383 protected Stream<Legal_Union_Record> rawStreamAllValuesOflur(final Object[] parameters) {
384 return rawStreamAllValues(POSITION_LUR, parameters).map(Legal_Union_Record.class::cast);
385 }
386
387 /**
388 * Retrieve the set of values that occur in matches for lur.
389 * @return the Set of all values or empty set if there are no matches
390 *
391 */
392 public Set<Legal_Union_Record> getAllValuesOflur() {
393 return rawStreamAllValuesOflur(emptyArray()).collect(Collectors.toSet());
394 }
395
396 /**
397 * Retrieve the set of values that occur in matches for lur.
398 * @return the Set of all values or empty set if there are no matches
399 *
400 */
401 public Stream<Legal_Union_Record> streamAllValuesOflur() {
402 return rawStreamAllValuesOflur(emptyArray());
403 }
404
405 @Override
406 protected Inv49.Match tupleToMatch(final Tuple t) {
407 try {
408 return Inv49.Match.newMatch((Legal_Union_Record) t.get(POSITION_LUR));
409 } catch(ClassCastException e) {
410 LOGGER.error("Element(s) in tuple not properly typed!",e);
411 return null;
412 }
413 }
414
415 @Override
416 protected Inv49.Match arrayToMatch(final Object[] match) {
417 try {
418 return Inv49.Match.newMatch((Legal_Union_Record) match[POSITION_LUR]);
419 } catch(ClassCastException e) {
420 LOGGER.error("Element(s) in array not properly typed!",e);
421 return null;
422 }
423 }
424
425 @Override
426 protected Inv49.Match arrayToMatchMutable(final Object[] match) {
427 try {
428 return Inv49.Match.newMutableMatch((Legal_Union_Record) match[POSITION_LUR]);
429 } catch(ClassCastException e) {
430 LOGGER.error("Element(s) in array not properly typed!",e);
431 return null;
432 }
433 }
434
435 /**
436 * @return the singleton instance of the query specification of this pattern
437 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
438 *
439 */
440 public static IQuerySpecification<Inv49.Matcher> querySpecification() {
441 return Inv49.instance();
442 }
443 }
444
445 private Inv49() {
446 super(GeneratedPQuery.INSTANCE);
447 }
448
449 /**
450 * @return the singleton instance of the query specification
451 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
452 *
453 */
454 public static Inv49 instance() {
455 try{
456 return LazyHolder.INSTANCE;
457 } catch (ExceptionInInitializerError err) {
458 throw processInitializerError(err);
459 }
460 }
461
462 @Override
463 protected Inv49.Matcher instantiate(final ViatraQueryEngine engine) {
464 return Inv49.Matcher.on(engine);
465 }
466
467 @Override
468 public Inv49.Matcher instantiate() {
469 return Inv49.Matcher.create();
470 }
471
472 @Override
473 public Inv49.Match newEmptyMatch() {
474 return Inv49.Match.newEmptyMatch();
475 }
476
477 @Override
478 public Inv49.Match newMatch(final Object... parameters) {
479 return Inv49.Match.newMatch((Taxation.Legal_Union_Record) parameters[0]);
480 }
481
482 /**
483 * Inner class allowing the singleton instance of {@link Inv49} to be created
484 * <b>not</b> at the class load time of the outer class,
485 * but rather at the first call to {@link Inv49#instance()}.
486 *
487 * <p> This workaround is required e.g. to support recursion.
488 *
489 */
490 private static class LazyHolder {
491 private static final Inv49 INSTANCE = new Inv49();
492
493 /**
494 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
495 * This initialization order is required to support indirect recursion.
496 *
497 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
498 *
499 */
500 private static final Object STATIC_INITIALIZER = ensureInitialized();
501
502 public static Object ensureInitialized() {
503 INSTANCE.ensureInitializedInternal();
504 return null;
505 }
506 }
507
508 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
509 private static final Inv49.GeneratedPQuery INSTANCE = new GeneratedPQuery();
510
511 private final PParameter parameter_lur = new PParameter("lur", "Taxation.Legal_Union_Record", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Legal_Union_Record")), PParameterDirection.INOUT);
512
513 private final List<PParameter> parameters = Arrays.asList(parameter_lur);
514
515 private GeneratedPQuery() {
516 super(PVisibility.PUBLIC);
517 }
518
519 @Override
520 public String getFullyQualifiedName() {
521 return "queries.inv49";
522 }
523
524 @Override
525 public List<String> getParameterNames() {
526 return Arrays.asList("lur");
527 }
528
529 @Override
530 public List<PParameter> getParameters() {
531 return parameters;
532 }
533
534 @Override
535 public Set<PBody> doGetContainedBodies() {
536 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
537 Set<PBody> bodies = new LinkedHashSet<>();
538 {
539 PBody body = new PBody(this);
540 PVariable var_lur = body.getOrCreateVariableByName("lur");
541 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
542 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
543 new ExportedParameter(body, var_lur, parameter_lur)
544 ));
545 // neg find x_inv49_1(lur)
546 new NegativePatternCall(body, Tuples.flatTupleOf(var_lur), X_inv49_1.instance().getInternalQueryRepresentation());
547 bodies.add(body);
548 }
549 {
550 PAnnotation annotation = new PAnnotation("Constraint");
551 annotation.addAttribute("message", "inv49");
552 annotation.addAttribute("severity", "error");
553 annotation.addAttribute("key", Arrays.asList(new Object[] {
554 new ParameterReference("lur")
555 }));
556 addAnnotation(annotation);
557 }
558 return bodies;
559 }
560 }
561}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java
new file mode 100644
index 00000000..89ae2bcc
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_eligAll.java
@@ -0,0 +1,606 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Dependent;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46
47/**
48 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
49 *
50 * <p>Original source:
51 * <code><pre>
52 * pattern x_inv03_eligAll(dep : Dependent) {
53 * Dependent.birth_year(dep, by);
54 * check(2018-by {@literal <}= 21);
55 * } or {
56 * Dependent.continued_studies(dep, true);
57 * }
58 * </pre></code>
59 *
60 * @see Matcher
61 * @see Match
62 *
63 */
64@SuppressWarnings("all")
65public final class X_inv03_eligAll extends BaseGeneratedEMFQuerySpecification<X_inv03_eligAll.Matcher> {
66 /**
67 * Pattern-specific match representation of the queries.x_inv03_eligAll pattern,
68 * to be used in conjunction with {@link Matcher}.
69 *
70 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
71 * Each instance is a (possibly partial) substitution of pattern parameters,
72 * usable to represent a match of the pattern in the result of a query,
73 * or to specify the bound (fixed) input parameters when issuing a query.
74 *
75 * @see Matcher
76 *
77 */
78 public static abstract class Match extends BasePatternMatch {
79 private Dependent fDep;
80
81 private static List<String> parameterNames = makeImmutableList("dep");
82
83 private Match(final Dependent pDep) {
84 this.fDep = pDep;
85 }
86
87 @Override
88 public Object get(final String parameterName) {
89 switch(parameterName) {
90 case "dep": return this.fDep;
91 default: return null;
92 }
93 }
94
95 @Override
96 public Object get(final int index) {
97 switch(index) {
98 case 0: return this.fDep;
99 default: return null;
100 }
101 }
102
103 public Dependent getDep() {
104 return this.fDep;
105 }
106
107 @Override
108 public boolean set(final String parameterName, final Object newValue) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 if ("dep".equals(parameterName) ) {
111 this.fDep = (Dependent) newValue;
112 return true;
113 }
114 return false;
115 }
116
117 public void setDep(final Dependent pDep) {
118 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
119 this.fDep = pDep;
120 }
121
122 @Override
123 public String patternName() {
124 return "queries.x_inv03_eligAll";
125 }
126
127 @Override
128 public List<String> parameterNames() {
129 return X_inv03_eligAll.Match.parameterNames;
130 }
131
132 @Override
133 public Object[] toArray() {
134 return new Object[]{fDep};
135 }
136
137 @Override
138 public X_inv03_eligAll.Match toImmutable() {
139 return isMutable() ? newMatch(fDep) : this;
140 }
141
142 @Override
143 public String prettyPrint() {
144 StringBuilder result = new StringBuilder();
145 result.append("\"dep\"=" + prettyPrintValue(fDep));
146 return result.toString();
147 }
148
149 @Override
150 public int hashCode() {
151 return Objects.hash(fDep);
152 }
153
154 @Override
155 public boolean equals(final Object obj) {
156 if (this == obj)
157 return true;
158 if (obj == null) {
159 return false;
160 }
161 if ((obj instanceof X_inv03_eligAll.Match)) {
162 X_inv03_eligAll.Match other = (X_inv03_eligAll.Match) obj;
163 return Objects.equals(fDep, other.fDep);
164 } else {
165 // this should be infrequent
166 if (!(obj instanceof IPatternMatch)) {
167 return false;
168 }
169 IPatternMatch otherSig = (IPatternMatch) obj;
170 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
171 }
172 }
173
174 @Override
175 public X_inv03_eligAll specification() {
176 return X_inv03_eligAll.instance();
177 }
178
179 /**
180 * Returns an empty, mutable match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @return the empty match.
184 *
185 */
186 public static X_inv03_eligAll.Match newEmptyMatch() {
187 return new Mutable(null);
188 }
189
190 /**
191 * Returns a mutable (partial) match.
192 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
193 *
194 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static X_inv03_eligAll.Match newMutableMatch(final Dependent pDep) {
199 return new Mutable(pDep);
200 }
201
202 /**
203 * Returns a new (partial) match.
204 * This can be used e.g. to call the matcher with a partial match.
205 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
206 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
207 * @return the (partial) match object.
208 *
209 */
210 public static X_inv03_eligAll.Match newMatch(final Dependent pDep) {
211 return new Immutable(pDep);
212 }
213
214 private static final class Mutable extends X_inv03_eligAll.Match {
215 Mutable(final Dependent pDep) {
216 super(pDep);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return true;
222 }
223 }
224
225 private static final class Immutable extends X_inv03_eligAll.Match {
226 Immutable(final Dependent pDep) {
227 super(pDep);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return false;
233 }
234 }
235 }
236
237 /**
238 * Generated pattern matcher API of the queries.x_inv03_eligAll pattern,
239 * providing pattern-specific query methods.
240 *
241 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
242 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
243 *
244 * <p>Matches of the pattern will be represented as {@link Match}.
245 *
246 * <p>Original source:
247 * <code><pre>
248 * pattern x_inv03_eligAll(dep : Dependent) {
249 * Dependent.birth_year(dep, by);
250 * check(2018-by {@literal <}= 21);
251 * } or {
252 * Dependent.continued_studies(dep, true);
253 * }
254 * </pre></code>
255 *
256 * @see Match
257 * @see X_inv03_eligAll
258 *
259 */
260 public static class Matcher extends BaseMatcher<X_inv03_eligAll.Match> {
261 /**
262 * Initializes the pattern matcher within an existing VIATRA Query engine.
263 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
264 *
265 * @param engine the existing VIATRA Query engine in which this matcher will be created.
266 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
267 *
268 */
269 public static X_inv03_eligAll.Matcher on(final ViatraQueryEngine engine) {
270 // check if matcher already exists
271 Matcher matcher = engine.getExistingMatcher(querySpecification());
272 if (matcher == null) {
273 matcher = (Matcher)engine.getMatcher(querySpecification());
274 }
275 return matcher;
276 }
277
278 /**
279 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
280 * @return an initialized matcher
281 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
282 *
283 */
284 public static X_inv03_eligAll.Matcher create() {
285 return new Matcher();
286 }
287
288 private static final int POSITION_DEP = 0;
289
290 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv03_eligAll.Matcher.class);
291
292 /**
293 * Initializes the pattern matcher within an existing VIATRA Query engine.
294 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
295 *
296 * @param engine the existing VIATRA Query engine in which this matcher will be created.
297 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
298 *
299 */
300 private Matcher() {
301 super(querySpecification());
302 }
303
304 /**
305 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
306 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
307 * @return matches represented as a Match object.
308 *
309 */
310 public Collection<X_inv03_eligAll.Match> getAllMatches(final Dependent pDep) {
311 return rawStreamAllMatches(new Object[]{pDep}).collect(Collectors.toSet());
312 }
313
314 /**
315 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
316 * </p>
317 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
318 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
319 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
320 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
321 * @return a stream of matches represented as a Match object.
322 *
323 */
324 public Stream<X_inv03_eligAll.Match> streamAllMatches(final Dependent pDep) {
325 return rawStreamAllMatches(new Object[]{pDep});
326 }
327
328 /**
329 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
330 * Neither determinism nor randomness of selection is guaranteed.
331 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
332 * @return a match represented as a Match object, or null if no match is found.
333 *
334 */
335 public Optional<X_inv03_eligAll.Match> getOneArbitraryMatch(final Dependent pDep) {
336 return rawGetOneArbitraryMatch(new Object[]{pDep});
337 }
338
339 /**
340 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
341 * under any possible substitution of the unspecified parameters (if any).
342 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
343 * @return true if the input is a valid (partial) match of the pattern.
344 *
345 */
346 public boolean hasMatch(final Dependent pDep) {
347 return rawHasMatch(new Object[]{pDep});
348 }
349
350 /**
351 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
352 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
353 * @return the number of pattern matches found.
354 *
355 */
356 public int countMatches(final Dependent pDep) {
357 return rawCountMatches(new Object[]{pDep});
358 }
359
360 /**
361 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
362 * Neither determinism nor randomness of selection is guaranteed.
363 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
364 * @param processor the action that will process the selected match.
365 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
366 *
367 */
368 public boolean forOneArbitraryMatch(final Dependent pDep, final Consumer<? super X_inv03_eligAll.Match> processor) {
369 return rawForOneArbitraryMatch(new Object[]{pDep}, processor);
370 }
371
372 /**
373 * Returns a new (partial) match.
374 * This can be used e.g. to call the matcher with a partial match.
375 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
376 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
377 * @return the (partial) match object.
378 *
379 */
380 public X_inv03_eligAll.Match newMatch(final Dependent pDep) {
381 return X_inv03_eligAll.Match.newMatch(pDep);
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for dep.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 protected Stream<Dependent> rawStreamAllValuesOfdep(final Object[] parameters) {
390 return rawStreamAllValues(POSITION_DEP, parameters).map(Dependent.class::cast);
391 }
392
393 /**
394 * Retrieve the set of values that occur in matches for dep.
395 * @return the Set of all values or empty set if there are no matches
396 *
397 */
398 public Set<Dependent> getAllValuesOfdep() {
399 return rawStreamAllValuesOfdep(emptyArray()).collect(Collectors.toSet());
400 }
401
402 /**
403 * Retrieve the set of values that occur in matches for dep.
404 * @return the Set of all values or empty set if there are no matches
405 *
406 */
407 public Stream<Dependent> streamAllValuesOfdep() {
408 return rawStreamAllValuesOfdep(emptyArray());
409 }
410
411 @Override
412 protected X_inv03_eligAll.Match tupleToMatch(final Tuple t) {
413 try {
414 return X_inv03_eligAll.Match.newMatch((Dependent) t.get(POSITION_DEP));
415 } catch(ClassCastException e) {
416 LOGGER.error("Element(s) in tuple not properly typed!",e);
417 return null;
418 }
419 }
420
421 @Override
422 protected X_inv03_eligAll.Match arrayToMatch(final Object[] match) {
423 try {
424 return X_inv03_eligAll.Match.newMatch((Dependent) match[POSITION_DEP]);
425 } catch(ClassCastException e) {
426 LOGGER.error("Element(s) in array not properly typed!",e);
427 return null;
428 }
429 }
430
431 @Override
432 protected X_inv03_eligAll.Match arrayToMatchMutable(final Object[] match) {
433 try {
434 return X_inv03_eligAll.Match.newMutableMatch((Dependent) match[POSITION_DEP]);
435 } catch(ClassCastException e) {
436 LOGGER.error("Element(s) in array not properly typed!",e);
437 return null;
438 }
439 }
440
441 /**
442 * @return the singleton instance of the query specification of this pattern
443 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
444 *
445 */
446 public static IQuerySpecification<X_inv03_eligAll.Matcher> querySpecification() {
447 return X_inv03_eligAll.instance();
448 }
449 }
450
451 private X_inv03_eligAll() {
452 super(GeneratedPQuery.INSTANCE);
453 }
454
455 /**
456 * @return the singleton instance of the query specification
457 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
458 *
459 */
460 public static X_inv03_eligAll instance() {
461 try{
462 return LazyHolder.INSTANCE;
463 } catch (ExceptionInInitializerError err) {
464 throw processInitializerError(err);
465 }
466 }
467
468 @Override
469 protected X_inv03_eligAll.Matcher instantiate(final ViatraQueryEngine engine) {
470 return X_inv03_eligAll.Matcher.on(engine);
471 }
472
473 @Override
474 public X_inv03_eligAll.Matcher instantiate() {
475 return X_inv03_eligAll.Matcher.create();
476 }
477
478 @Override
479 public X_inv03_eligAll.Match newEmptyMatch() {
480 return X_inv03_eligAll.Match.newEmptyMatch();
481 }
482
483 @Override
484 public X_inv03_eligAll.Match newMatch(final Object... parameters) {
485 return X_inv03_eligAll.Match.newMatch((Taxation.Dependent) parameters[0]);
486 }
487
488 /**
489 * Inner class allowing the singleton instance of {@link X_inv03_eligAll} to be created
490 * <b>not</b> at the class load time of the outer class,
491 * but rather at the first call to {@link X_inv03_eligAll#instance()}.
492 *
493 * <p> This workaround is required e.g. to support recursion.
494 *
495 */
496 private static class LazyHolder {
497 private static final X_inv03_eligAll INSTANCE = new X_inv03_eligAll();
498
499 /**
500 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
501 * This initialization order is required to support indirect recursion.
502 *
503 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
504 *
505 */
506 private static final Object STATIC_INITIALIZER = ensureInitialized();
507
508 public static Object ensureInitialized() {
509 INSTANCE.ensureInitializedInternal();
510 return null;
511 }
512 }
513
514 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
515 private static final X_inv03_eligAll.GeneratedPQuery INSTANCE = new GeneratedPQuery();
516
517 private final PParameter parameter_dep = new PParameter("dep", "Taxation.Dependent", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Dependent")), PParameterDirection.INOUT);
518
519 private final List<PParameter> parameters = Arrays.asList(parameter_dep);
520
521 private GeneratedPQuery() {
522 super(PVisibility.PUBLIC);
523 }
524
525 @Override
526 public String getFullyQualifiedName() {
527 return "queries.x_inv03_eligAll";
528 }
529
530 @Override
531 public List<String> getParameterNames() {
532 return Arrays.asList("dep");
533 }
534
535 @Override
536 public List<PParameter> getParameters() {
537 return parameters;
538 }
539
540 @Override
541 public Set<PBody> doGetContainedBodies() {
542 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
543 Set<PBody> bodies = new LinkedHashSet<>();
544 {
545 PBody body = new PBody(this);
546 PVariable var_dep = body.getOrCreateVariableByName("dep");
547 PVariable var_by = body.getOrCreateVariableByName("by");
548 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
549 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
550 new ExportedParameter(body, var_dep, parameter_dep)
551 ));
552 // Dependent.birth_year(dep, by)
553 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
554 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "birth_year")));
556 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
557 new Equality(body, var__virtual_0_, var_by);
558 // check(2018-by <= 21)
559 new ExpressionEvaluation(body, new IExpressionEvaluator() {
560
561 @Override
562 public String getShortDescription() {
563 return "Expression evaluation from pattern x_inv03_eligAll";
564 }
565
566 @Override
567 public Iterable<String> getInputParameterNames() {
568 return Arrays.asList("by");}
569
570 @Override
571 public Object evaluateExpression(IValueProvider provider) throws Exception {
572 Integer by = (Integer) provider.getValue("by");
573 return evaluateExpression_1_1(by);
574 }
575 }, null);
576 bodies.add(body);
577 }
578 {
579 PBody body = new PBody(this);
580 PVariable var_dep = body.getOrCreateVariableByName("dep");
581 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
582 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
583 new ExportedParameter(body, var_dep, parameter_dep)
584 ));
585 // Dependent.continued_studies(dep, true)
586 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
587 new ConstantValue(body, var__virtual_0_, true);
588 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
589 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
590 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Dependent", "continued_studies")));
591 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EBoolean")));
592 new Equality(body, var__virtual_1_, var__virtual_0_);
593 bodies.add(body);
594 }
595 return bodies;
596 }
597 }
598
599 private static boolean evaluateExpression_1_1(final Integer by) {
600 return ((2018 - (by).intValue()) <= 21);
601 }
602
603 private static boolean evaluateExpression_2_1() {
604 return true;
605 }
606}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java
new file mode 100644
index 00000000..66e47407
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv03_hasAll.java
@@ -0,0 +1,551 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Dependent;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40
41/**
42 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
43 *
44 * <p>Original source:
45 * <code><pre>
46 * pattern x_inv03_hasAll(dep : Dependent) {
47 * Dependent.allowances(dep, _);
48 * }
49 * </pre></code>
50 *
51 * @see Matcher
52 * @see Match
53 *
54 */
55@SuppressWarnings("all")
56public final class X_inv03_hasAll extends BaseGeneratedEMFQuerySpecification<X_inv03_hasAll.Matcher> {
57 /**
58 * Pattern-specific match representation of the queries.x_inv03_hasAll pattern,
59 * to be used in conjunction with {@link Matcher}.
60 *
61 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
62 * Each instance is a (possibly partial) substitution of pattern parameters,
63 * usable to represent a match of the pattern in the result of a query,
64 * or to specify the bound (fixed) input parameters when issuing a query.
65 *
66 * @see Matcher
67 *
68 */
69 public static abstract class Match extends BasePatternMatch {
70 private Dependent fDep;
71
72 private static List<String> parameterNames = makeImmutableList("dep");
73
74 private Match(final Dependent pDep) {
75 this.fDep = pDep;
76 }
77
78 @Override
79 public Object get(final String parameterName) {
80 switch(parameterName) {
81 case "dep": return this.fDep;
82 default: return null;
83 }
84 }
85
86 @Override
87 public Object get(final int index) {
88 switch(index) {
89 case 0: return this.fDep;
90 default: return null;
91 }
92 }
93
94 public Dependent getDep() {
95 return this.fDep;
96 }
97
98 @Override
99 public boolean set(final String parameterName, final Object newValue) {
100 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
101 if ("dep".equals(parameterName) ) {
102 this.fDep = (Dependent) newValue;
103 return true;
104 }
105 return false;
106 }
107
108 public void setDep(final Dependent pDep) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 this.fDep = pDep;
111 }
112
113 @Override
114 public String patternName() {
115 return "queries.x_inv03_hasAll";
116 }
117
118 @Override
119 public List<String> parameterNames() {
120 return X_inv03_hasAll.Match.parameterNames;
121 }
122
123 @Override
124 public Object[] toArray() {
125 return new Object[]{fDep};
126 }
127
128 @Override
129 public X_inv03_hasAll.Match toImmutable() {
130 return isMutable() ? newMatch(fDep) : this;
131 }
132
133 @Override
134 public String prettyPrint() {
135 StringBuilder result = new StringBuilder();
136 result.append("\"dep\"=" + prettyPrintValue(fDep));
137 return result.toString();
138 }
139
140 @Override
141 public int hashCode() {
142 return Objects.hash(fDep);
143 }
144
145 @Override
146 public boolean equals(final Object obj) {
147 if (this == obj)
148 return true;
149 if (obj == null) {
150 return false;
151 }
152 if ((obj instanceof X_inv03_hasAll.Match)) {
153 X_inv03_hasAll.Match other = (X_inv03_hasAll.Match) obj;
154 return Objects.equals(fDep, other.fDep);
155 } else {
156 // this should be infrequent
157 if (!(obj instanceof IPatternMatch)) {
158 return false;
159 }
160 IPatternMatch otherSig = (IPatternMatch) obj;
161 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
162 }
163 }
164
165 @Override
166 public X_inv03_hasAll specification() {
167 return X_inv03_hasAll.instance();
168 }
169
170 /**
171 * Returns an empty, mutable match.
172 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
173 *
174 * @return the empty match.
175 *
176 */
177 public static X_inv03_hasAll.Match newEmptyMatch() {
178 return new Mutable(null);
179 }
180
181 /**
182 * Returns a mutable (partial) match.
183 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
184 *
185 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
186 * @return the new, mutable (partial) match object.
187 *
188 */
189 public static X_inv03_hasAll.Match newMutableMatch(final Dependent pDep) {
190 return new Mutable(pDep);
191 }
192
193 /**
194 * Returns a new (partial) match.
195 * This can be used e.g. to call the matcher with a partial match.
196 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
197 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
198 * @return the (partial) match object.
199 *
200 */
201 public static X_inv03_hasAll.Match newMatch(final Dependent pDep) {
202 return new Immutable(pDep);
203 }
204
205 private static final class Mutable extends X_inv03_hasAll.Match {
206 Mutable(final Dependent pDep) {
207 super(pDep);
208 }
209
210 @Override
211 public boolean isMutable() {
212 return true;
213 }
214 }
215
216 private static final class Immutable extends X_inv03_hasAll.Match {
217 Immutable(final Dependent pDep) {
218 super(pDep);
219 }
220
221 @Override
222 public boolean isMutable() {
223 return false;
224 }
225 }
226 }
227
228 /**
229 * Generated pattern matcher API of the queries.x_inv03_hasAll pattern,
230 * providing pattern-specific query methods.
231 *
232 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
233 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
234 *
235 * <p>Matches of the pattern will be represented as {@link Match}.
236 *
237 * <p>Original source:
238 * <code><pre>
239 * pattern x_inv03_hasAll(dep : Dependent) {
240 * Dependent.allowances(dep, _);
241 * }
242 * </pre></code>
243 *
244 * @see Match
245 * @see X_inv03_hasAll
246 *
247 */
248 public static class Matcher extends BaseMatcher<X_inv03_hasAll.Match> {
249 /**
250 * Initializes the pattern matcher within an existing VIATRA Query engine.
251 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
252 *
253 * @param engine the existing VIATRA Query engine in which this matcher will be created.
254 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
255 *
256 */
257 public static X_inv03_hasAll.Matcher on(final ViatraQueryEngine engine) {
258 // check if matcher already exists
259 Matcher matcher = engine.getExistingMatcher(querySpecification());
260 if (matcher == null) {
261 matcher = (Matcher)engine.getMatcher(querySpecification());
262 }
263 return matcher;
264 }
265
266 /**
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 * @return an initialized matcher
269 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
270 *
271 */
272 public static X_inv03_hasAll.Matcher create() {
273 return new Matcher();
274 }
275
276 private static final int POSITION_DEP = 0;
277
278 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv03_hasAll.Matcher.class);
279
280 /**
281 * Initializes the pattern matcher within an existing VIATRA Query engine.
282 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
283 *
284 * @param engine the existing VIATRA Query engine in which this matcher will be created.
285 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
286 *
287 */
288 private Matcher() {
289 super(querySpecification());
290 }
291
292 /**
293 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
294 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
295 * @return matches represented as a Match object.
296 *
297 */
298 public Collection<X_inv03_hasAll.Match> getAllMatches(final Dependent pDep) {
299 return rawStreamAllMatches(new Object[]{pDep}).collect(Collectors.toSet());
300 }
301
302 /**
303 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
304 * </p>
305 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
306 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
307 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
308 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
309 * @return a stream of matches represented as a Match object.
310 *
311 */
312 public Stream<X_inv03_hasAll.Match> streamAllMatches(final Dependent pDep) {
313 return rawStreamAllMatches(new Object[]{pDep});
314 }
315
316 /**
317 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
318 * Neither determinism nor randomness of selection is guaranteed.
319 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
320 * @return a match represented as a Match object, or null if no match is found.
321 *
322 */
323 public Optional<X_inv03_hasAll.Match> getOneArbitraryMatch(final Dependent pDep) {
324 return rawGetOneArbitraryMatch(new Object[]{pDep});
325 }
326
327 /**
328 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
329 * under any possible substitution of the unspecified parameters (if any).
330 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
331 * @return true if the input is a valid (partial) match of the pattern.
332 *
333 */
334 public boolean hasMatch(final Dependent pDep) {
335 return rawHasMatch(new Object[]{pDep});
336 }
337
338 /**
339 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
340 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
341 * @return the number of pattern matches found.
342 *
343 */
344 public int countMatches(final Dependent pDep) {
345 return rawCountMatches(new Object[]{pDep});
346 }
347
348 /**
349 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
350 * Neither determinism nor randomness of selection is guaranteed.
351 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
352 * @param processor the action that will process the selected match.
353 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
354 *
355 */
356 public boolean forOneArbitraryMatch(final Dependent pDep, final Consumer<? super X_inv03_hasAll.Match> processor) {
357 return rawForOneArbitraryMatch(new Object[]{pDep}, processor);
358 }
359
360 /**
361 * Returns a new (partial) match.
362 * This can be used e.g. to call the matcher with a partial match.
363 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
364 * @param pDep the fixed value of pattern parameter dep, or null if not bound.
365 * @return the (partial) match object.
366 *
367 */
368 public X_inv03_hasAll.Match newMatch(final Dependent pDep) {
369 return X_inv03_hasAll.Match.newMatch(pDep);
370 }
371
372 /**
373 * Retrieve the set of values that occur in matches for dep.
374 * @return the Set of all values or empty set if there are no matches
375 *
376 */
377 protected Stream<Dependent> rawStreamAllValuesOfdep(final Object[] parameters) {
378 return rawStreamAllValues(POSITION_DEP, parameters).map(Dependent.class::cast);
379 }
380
381 /**
382 * Retrieve the set of values that occur in matches for dep.
383 * @return the Set of all values or empty set if there are no matches
384 *
385 */
386 public Set<Dependent> getAllValuesOfdep() {
387 return rawStreamAllValuesOfdep(emptyArray()).collect(Collectors.toSet());
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for dep.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 public Stream<Dependent> streamAllValuesOfdep() {
396 return rawStreamAllValuesOfdep(emptyArray());
397 }
398
399 @Override
400 protected X_inv03_hasAll.Match tupleToMatch(final Tuple t) {
401 try {
402 return X_inv03_hasAll.Match.newMatch((Dependent) t.get(POSITION_DEP));
403 } catch(ClassCastException e) {
404 LOGGER.error("Element(s) in tuple not properly typed!",e);
405 return null;
406 }
407 }
408
409 @Override
410 protected X_inv03_hasAll.Match arrayToMatch(final Object[] match) {
411 try {
412 return X_inv03_hasAll.Match.newMatch((Dependent) match[POSITION_DEP]);
413 } catch(ClassCastException e) {
414 LOGGER.error("Element(s) in array not properly typed!",e);
415 return null;
416 }
417 }
418
419 @Override
420 protected X_inv03_hasAll.Match arrayToMatchMutable(final Object[] match) {
421 try {
422 return X_inv03_hasAll.Match.newMutableMatch((Dependent) match[POSITION_DEP]);
423 } catch(ClassCastException e) {
424 LOGGER.error("Element(s) in array not properly typed!",e);
425 return null;
426 }
427 }
428
429 /**
430 * @return the singleton instance of the query specification of this pattern
431 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
432 *
433 */
434 public static IQuerySpecification<X_inv03_hasAll.Matcher> querySpecification() {
435 return X_inv03_hasAll.instance();
436 }
437 }
438
439 private X_inv03_hasAll() {
440 super(GeneratedPQuery.INSTANCE);
441 }
442
443 /**
444 * @return the singleton instance of the query specification
445 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
446 *
447 */
448 public static X_inv03_hasAll instance() {
449 try{
450 return LazyHolder.INSTANCE;
451 } catch (ExceptionInInitializerError err) {
452 throw processInitializerError(err);
453 }
454 }
455
456 @Override
457 protected X_inv03_hasAll.Matcher instantiate(final ViatraQueryEngine engine) {
458 return X_inv03_hasAll.Matcher.on(engine);
459 }
460
461 @Override
462 public X_inv03_hasAll.Matcher instantiate() {
463 return X_inv03_hasAll.Matcher.create();
464 }
465
466 @Override
467 public X_inv03_hasAll.Match newEmptyMatch() {
468 return X_inv03_hasAll.Match.newEmptyMatch();
469 }
470
471 @Override
472 public X_inv03_hasAll.Match newMatch(final Object... parameters) {
473 return X_inv03_hasAll.Match.newMatch((Taxation.Dependent) parameters[0]);
474 }
475
476 /**
477 * Inner class allowing the singleton instance of {@link X_inv03_hasAll} to be created
478 * <b>not</b> at the class load time of the outer class,
479 * but rather at the first call to {@link X_inv03_hasAll#instance()}.
480 *
481 * <p> This workaround is required e.g. to support recursion.
482 *
483 */
484 private static class LazyHolder {
485 private static final X_inv03_hasAll INSTANCE = new X_inv03_hasAll();
486
487 /**
488 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
489 * This initialization order is required to support indirect recursion.
490 *
491 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
492 *
493 */
494 private static final Object STATIC_INITIALIZER = ensureInitialized();
495
496 public static Object ensureInitialized() {
497 INSTANCE.ensureInitializedInternal();
498 return null;
499 }
500 }
501
502 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
503 private static final X_inv03_hasAll.GeneratedPQuery INSTANCE = new GeneratedPQuery();
504
505 private final PParameter parameter_dep = new PParameter("dep", "Taxation.Dependent", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Dependent")), PParameterDirection.INOUT);
506
507 private final List<PParameter> parameters = Arrays.asList(parameter_dep);
508
509 private GeneratedPQuery() {
510 super(PVisibility.PUBLIC);
511 }
512
513 @Override
514 public String getFullyQualifiedName() {
515 return "queries.x_inv03_hasAll";
516 }
517
518 @Override
519 public List<String> getParameterNames() {
520 return Arrays.asList("dep");
521 }
522
523 @Override
524 public List<PParameter> getParameters() {
525 return parameters;
526 }
527
528 @Override
529 public Set<PBody> doGetContainedBodies() {
530 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
531 Set<PBody> bodies = new LinkedHashSet<>();
532 {
533 PBody body = new PBody(this);
534 PVariable var_dep = body.getOrCreateVariableByName("dep");
535 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
536 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
537 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
538 new ExportedParameter(body, var_dep, parameter_dep)
539 ));
540 // Dependent.allowances(dep, _)
541 new TypeConstraint(body, Tuples.flatTupleOf(var_dep), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
542 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
543 new TypeConstraint(body, Tuples.flatTupleOf(var_dep, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Dependent", "allowances")));
544 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
545 new Equality(body, var__virtual_0_, var___0_);
546 bodies.add(body);
547 }
548 return bodies;
549 }
550 }
551}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java
new file mode 100644
index 00000000..4c2a7299
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv05_inRange.java
@@ -0,0 +1,628 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * pattern x_inv05_inRange(inc : Income) {
52 * Income.details.worked_days(inc, wd);
53 * check(wd {@literal <} 1);
54 * } or {
55 * Income.details.worked_days(inc, wd);
56 * check(wd {@literal >} 25);
57 * }
58 * </pre></code>
59 *
60 * @see Matcher
61 * @see Match
62 *
63 */
64@SuppressWarnings("all")
65public final class X_inv05_inRange extends BaseGeneratedEMFQuerySpecification<X_inv05_inRange.Matcher> {
66 /**
67 * Pattern-specific match representation of the queries.x_inv05_inRange pattern,
68 * to be used in conjunction with {@link Matcher}.
69 *
70 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
71 * Each instance is a (possibly partial) substitution of pattern parameters,
72 * usable to represent a match of the pattern in the result of a query,
73 * or to specify the bound (fixed) input parameters when issuing a query.
74 *
75 * @see Matcher
76 *
77 */
78 public static abstract class Match extends BasePatternMatch {
79 private Income fInc;
80
81 private static List<String> parameterNames = makeImmutableList("inc");
82
83 private Match(final Income pInc) {
84 this.fInc = pInc;
85 }
86
87 @Override
88 public Object get(final String parameterName) {
89 switch(parameterName) {
90 case "inc": return this.fInc;
91 default: return null;
92 }
93 }
94
95 @Override
96 public Object get(final int index) {
97 switch(index) {
98 case 0: return this.fInc;
99 default: return null;
100 }
101 }
102
103 public Income getInc() {
104 return this.fInc;
105 }
106
107 @Override
108 public boolean set(final String parameterName, final Object newValue) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 if ("inc".equals(parameterName) ) {
111 this.fInc = (Income) newValue;
112 return true;
113 }
114 return false;
115 }
116
117 public void setInc(final Income pInc) {
118 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
119 this.fInc = pInc;
120 }
121
122 @Override
123 public String patternName() {
124 return "queries.x_inv05_inRange";
125 }
126
127 @Override
128 public List<String> parameterNames() {
129 return X_inv05_inRange.Match.parameterNames;
130 }
131
132 @Override
133 public Object[] toArray() {
134 return new Object[]{fInc};
135 }
136
137 @Override
138 public X_inv05_inRange.Match toImmutable() {
139 return isMutable() ? newMatch(fInc) : this;
140 }
141
142 @Override
143 public String prettyPrint() {
144 StringBuilder result = new StringBuilder();
145 result.append("\"inc\"=" + prettyPrintValue(fInc));
146 return result.toString();
147 }
148
149 @Override
150 public int hashCode() {
151 return Objects.hash(fInc);
152 }
153
154 @Override
155 public boolean equals(final Object obj) {
156 if (this == obj)
157 return true;
158 if (obj == null) {
159 return false;
160 }
161 if ((obj instanceof X_inv05_inRange.Match)) {
162 X_inv05_inRange.Match other = (X_inv05_inRange.Match) obj;
163 return Objects.equals(fInc, other.fInc);
164 } else {
165 // this should be infrequent
166 if (!(obj instanceof IPatternMatch)) {
167 return false;
168 }
169 IPatternMatch otherSig = (IPatternMatch) obj;
170 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
171 }
172 }
173
174 @Override
175 public X_inv05_inRange specification() {
176 return X_inv05_inRange.instance();
177 }
178
179 /**
180 * Returns an empty, mutable match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @return the empty match.
184 *
185 */
186 public static X_inv05_inRange.Match newEmptyMatch() {
187 return new Mutable(null);
188 }
189
190 /**
191 * Returns a mutable (partial) match.
192 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
193 *
194 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static X_inv05_inRange.Match newMutableMatch(final Income pInc) {
199 return new Mutable(pInc);
200 }
201
202 /**
203 * Returns a new (partial) match.
204 * This can be used e.g. to call the matcher with a partial match.
205 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
206 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
207 * @return the (partial) match object.
208 *
209 */
210 public static X_inv05_inRange.Match newMatch(final Income pInc) {
211 return new Immutable(pInc);
212 }
213
214 private static final class Mutable extends X_inv05_inRange.Match {
215 Mutable(final Income pInc) {
216 super(pInc);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return true;
222 }
223 }
224
225 private static final class Immutable extends X_inv05_inRange.Match {
226 Immutable(final Income pInc) {
227 super(pInc);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return false;
233 }
234 }
235 }
236
237 /**
238 * Generated pattern matcher API of the queries.x_inv05_inRange pattern,
239 * providing pattern-specific query methods.
240 *
241 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
242 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
243 *
244 * <p>Matches of the pattern will be represented as {@link Match}.
245 *
246 * <p>Original source:
247 * <code><pre>
248 * pattern x_inv05_inRange(inc : Income) {
249 * Income.details.worked_days(inc, wd);
250 * check(wd {@literal <} 1);
251 * } or {
252 * Income.details.worked_days(inc, wd);
253 * check(wd {@literal >} 25);
254 * }
255 * </pre></code>
256 *
257 * @see Match
258 * @see X_inv05_inRange
259 *
260 */
261 public static class Matcher extends BaseMatcher<X_inv05_inRange.Match> {
262 /**
263 * Initializes the pattern matcher within an existing VIATRA Query engine.
264 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
265 *
266 * @param engine the existing VIATRA Query engine in which this matcher will be created.
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 *
269 */
270 public static X_inv05_inRange.Matcher on(final ViatraQueryEngine engine) {
271 // check if matcher already exists
272 Matcher matcher = engine.getExistingMatcher(querySpecification());
273 if (matcher == null) {
274 matcher = (Matcher)engine.getMatcher(querySpecification());
275 }
276 return matcher;
277 }
278
279 /**
280 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
281 * @return an initialized matcher
282 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
283 *
284 */
285 public static X_inv05_inRange.Matcher create() {
286 return new Matcher();
287 }
288
289 private static final int POSITION_INC = 0;
290
291 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv05_inRange.Matcher.class);
292
293 /**
294 * Initializes the pattern matcher within an existing VIATRA Query engine.
295 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
296 *
297 * @param engine the existing VIATRA Query engine in which this matcher will be created.
298 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
299 *
300 */
301 private Matcher() {
302 super(querySpecification());
303 }
304
305 /**
306 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
307 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<X_inv05_inRange.Match> getAllMatches(final Income pInc) {
312 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
322 * @return a stream of matches represented as a Match object.
323 *
324 */
325 public Stream<X_inv05_inRange.Match> streamAllMatches(final Income pInc) {
326 return rawStreamAllMatches(new Object[]{pInc});
327 }
328
329 /**
330 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
331 * Neither determinism nor randomness of selection is guaranteed.
332 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
333 * @return a match represented as a Match object, or null if no match is found.
334 *
335 */
336 public Optional<X_inv05_inRange.Match> getOneArbitraryMatch(final Income pInc) {
337 return rawGetOneArbitraryMatch(new Object[]{pInc});
338 }
339
340 /**
341 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
342 * under any possible substitution of the unspecified parameters (if any).
343 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
344 * @return true if the input is a valid (partial) match of the pattern.
345 *
346 */
347 public boolean hasMatch();
348
349 /**
350 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
351 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
352 * @return the number of pattern matches found.
353 *
354 */
355 public int countMatches(final Income pInc) {
356 return rawCountMatches(new Object[]{pInc});
357 }
358
359 /**
360 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
361 * Neither determinism nor randomness of selection is guaranteed.
362 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
363 * @param processor the action that will process the selected match.
364 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
365 *
366 */
367 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super X_inv05_inRange.Match> processor) {
368 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
369 }
370
371 /**
372 * Returns a new (partial) match.
373 * This can be used e.g. to call the matcher with a partial match.
374 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
375 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
376 * @return the (partial) match object.
377 *
378 */
379 public X_inv05_inRange.Match newMatch(final Income pInc) {
380 return X_inv05_inRange.Match.newMatch(pInc);
381 }
382
383 /**
384 * Retrieve the set of values that occur in matches for inc.
385 * @return the Set of all values or empty set if there are no matches
386 *
387 */
388 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
389 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for inc.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 public Set<Income> getAllValuesOfinc() {
398 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
399 }
400
401 /**
402 * Retrieve the set of values that occur in matches for inc.
403 * @return the Set of all values or empty set if there are no matches
404 *
405 */
406 public Stream<Income> streamAllValuesOfinc() {
407 return rawStreamAllValuesOfinc(emptyArray());
408 }
409
410 @Override
411 protected X_inv05_inRange.Match tupleToMatch(final Tuple t) {
412 try {
413 return X_inv05_inRange.Match.newMatch((Income) t.get(POSITION_INC));
414 } catch(ClassCastException e) {
415 LOGGER.error("Element(s) in tuple not properly typed!",e);
416 return null;
417 }
418 }
419
420 @Override
421 protected X_inv05_inRange.Match arrayToMatch(final Object[] match) {
422 try {
423 return X_inv05_inRange.Match.newMatch((Income) match[POSITION_INC]);
424 } catch(ClassCastException e) {
425 LOGGER.error("Element(s) in array not properly typed!",e);
426 return null;
427 }
428 }
429
430 @Override
431 protected X_inv05_inRange.Match arrayToMatchMutable(final Object[] match) {
432 try {
433 return X_inv05_inRange.Match.newMutableMatch((Income) match[POSITION_INC]);
434 } catch(ClassCastException e) {
435 LOGGER.error("Element(s) in array not properly typed!",e);
436 return null;
437 }
438 }
439
440 /**
441 * @return the singleton instance of the query specification of this pattern
442 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
443 *
444 */
445 public static IQuerySpecification<X_inv05_inRange.Matcher> querySpecification() {
446 return X_inv05_inRange.instance();
447 }
448 }
449
450 private X_inv05_inRange() {
451 super(GeneratedPQuery.INSTANCE);
452 }
453
454 /**
455 * @return the singleton instance of the query specification
456 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
457 *
458 */
459 public static X_inv05_inRange instance() {
460 try{
461 return LazyHolder.INSTANCE;
462 } catch (ExceptionInInitializerError err) {
463 throw processInitializerError(err);
464 }
465 }
466
467 @Override
468 protected X_inv05_inRange.Matcher instantiate(final ViatraQueryEngine engine) {
469 return X_inv05_inRange.Matcher.on(engine);
470 }
471
472 @Override
473 public X_inv05_inRange.Matcher instantiate() {
474 return X_inv05_inRange.Matcher.create();
475 }
476
477 @Override
478 public X_inv05_inRange.Match newEmptyMatch() {
479 return X_inv05_inRange.Match.newEmptyMatch();
480 }
481
482 @Override
483 public X_inv05_inRange.Match newMatch(final Object... parameters) {
484 return X_inv05_inRange.Match.newMatch((Taxation.Income) parameters[0]);
485 }
486
487 /**
488 * Inner class allowing the singleton instance of {@link X_inv05_inRange} to be created
489 * <b>not</b> at the class load time of the outer class,
490 * but rather at the first call to {@link X_inv05_inRange#instance()}.
491 *
492 * <p> This workaround is required e.g. to support recursion.
493 *
494 */
495 private static class LazyHolder {
496 private static final X_inv05_inRange INSTANCE = new X_inv05_inRange();
497
498 /**
499 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
500 * This initialization order is required to support indirect recursion.
501 *
502 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
503 *
504 */
505 private static final Object STATIC_INITIALIZER = ensureInitialized();
506
507 public static Object ensureInitialized() {
508 INSTANCE.ensureInitializedInternal();
509 return null;
510 }
511 }
512
513 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
514 private static final X_inv05_inRange.GeneratedPQuery INSTANCE = new GeneratedPQuery();
515
516 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
517
518 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
519
520 private GeneratedPQuery() {
521 super(PVisibility.PUBLIC);
522 }
523
524 @Override
525 public String getFullyQualifiedName() {
526 return "queries.x_inv05_inRange";
527 }
528
529 @Override
530 public List<String> getParameterNames() {
531 return Arrays.asList("inc");
532 }
533
534 @Override
535 public List<PParameter> getParameters() {
536 return parameters;
537 }
538
539 @Override
540 public Set<PBody> doGetContainedBodies() {
541 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
542 Set<PBody> bodies = new LinkedHashSet<>();
543 {
544 PBody body = new PBody(this);
545 PVariable var_inc = body.getOrCreateVariableByName("inc");
546 PVariable var_wd = body.getOrCreateVariableByName("wd");
547 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
548 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
549 new ExportedParameter(body, var_inc, parameter_inc)
550 ));
551 // Income.details.worked_days(inc, wd)
552 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
553 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
554 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
555 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
556 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "worked_days")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
559 new Equality(body, var__virtual_1_, var_wd);
560 // check(wd < 1)
561 new ExpressionEvaluation(body, new IExpressionEvaluator() {
562
563 @Override
564 public String getShortDescription() {
565 return "Expression evaluation from pattern x_inv05_inRange";
566 }
567
568 @Override
569 public Iterable<String> getInputParameterNames() {
570 return Arrays.asList("wd");}
571
572 @Override
573 public Object evaluateExpression(IValueProvider provider) throws Exception {
574 Integer wd = (Integer) provider.getValue("wd");
575 return evaluateExpression_1_1(wd);
576 }
577 }, null);
578 bodies.add(body);
579 }
580 {
581 PBody body = new PBody(this);
582 PVariable var_inc = body.getOrCreateVariableByName("inc");
583 PVariable var_wd = body.getOrCreateVariableByName("wd");
584 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
585 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
586 new ExportedParameter(body, var_inc, parameter_inc)
587 ));
588 // Income.details.worked_days(inc, wd)
589 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
590 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
591 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
592 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
593 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
594 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "worked_days")));
595 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
596 new Equality(body, var__virtual_1_, var_wd);
597 // check(wd > 25)
598 new ExpressionEvaluation(body, new IExpressionEvaluator() {
599
600 @Override
601 public String getShortDescription() {
602 return "Expression evaluation from pattern x_inv05_inRange";
603 }
604
605 @Override
606 public Iterable<String> getInputParameterNames() {
607 return Arrays.asList("wd");}
608
609 @Override
610 public Object evaluateExpression(IValueProvider provider) throws Exception {
611 Integer wd = (Integer) provider.getValue("wd");
612 return evaluateExpression_2_1(wd);
613 }
614 }, null);
615 bodies.add(body);
616 }
617 return bodies;
618 }
619 }
620
621 private static boolean evaluateExpression_1_1(final Integer wd) {
622 return ((wd).intValue() < 1);
623 }
624
625 private static boolean evaluateExpression_2_1(final Integer wd) {
626 return ((wd).intValue() > 25);
627 }
628}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java
new file mode 100644
index 00000000..7974c256
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_inRange.java
@@ -0,0 +1,630 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * pattern x_inv08_inRange(inc : Income) {
52 * Income.details.distance(inc, dist);
53 * check(dist {@literal <} 0);
54 * } or {
55 * Income.details.distance(inc, dist);
56 * check(dist {@literal >} 100);
57 * }
58 * </pre></code>
59 *
60 * @see Matcher
61 * @see Match
62 *
63 */
64@SuppressWarnings("all")
65public final class X_inv08_inRange extends BaseGeneratedEMFQuerySpecification<X_inv08_inRange.Matcher> {
66 /**
67 * Pattern-specific match representation of the queries.x_inv08_inRange pattern,
68 * to be used in conjunction with {@link Matcher}.
69 *
70 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
71 * Each instance is a (possibly partial) substitution of pattern parameters,
72 * usable to represent a match of the pattern in the result of a query,
73 * or to specify the bound (fixed) input parameters when issuing a query.
74 *
75 * @see Matcher
76 *
77 */
78 public static abstract class Match extends BasePatternMatch {
79 private Income fInc;
80
81 private static List<String> parameterNames = makeImmutableList("inc");
82
83 private Match(final Income pInc) {
84 this.fInc = pInc;
85 }
86
87 @Override
88 public Object get(final String parameterName) {
89 switch(parameterName) {
90 case "inc": return this.fInc;
91 default: return null;
92 }
93 }
94
95 @Override
96 public Object get(final int index) {
97 switch(index) {
98 case 0: return this.fInc;
99 default: return null;
100 }
101 }
102
103 public Income getInc() {
104 return this.fInc;
105 }
106
107 @Override
108 public boolean set(final String parameterName, final Object newValue) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 if ("inc".equals(parameterName) ) {
111 this.fInc = (Income) newValue;
112 return true;
113 }
114 return false;
115 }
116
117 public void setInc(final Income pInc) {
118 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
119 this.fInc = pInc;
120 }
121
122 @Override
123 public String patternName() {
124 return "queries.x_inv08_inRange";
125 }
126
127 @Override
128 public List<String> parameterNames() {
129 return X_inv08_inRange.Match.parameterNames;
130 }
131
132 @Override
133 public Object[] toArray() {
134 return new Object[]{fInc};
135 }
136
137 @Override
138 public X_inv08_inRange.Match toImmutable() {
139 return isMutable() ? newMatch(fInc) : this;
140 }
141
142 @Override
143 public String prettyPrint() {
144 StringBuilder result = new StringBuilder();
145 result.append("\"inc\"=" + prettyPrintValue(fInc));
146 return result.toString();
147 }
148
149 @Override
150 public int hashCode() {
151 return Objects.hash(fInc);
152 }
153
154 @Override
155 public boolean equals(final Object obj) {
156 if (this == obj)
157 return true;
158 if (obj == null) {
159 return false;
160 }
161 if ((obj instanceof X_inv08_inRange.Match)) {
162 X_inv08_inRange.Match other = (X_inv08_inRange.Match) obj;
163 return Objects.equals(fInc, other.fInc);
164 } else {
165 // this should be infrequent
166 if (!(obj instanceof IPatternMatch)) {
167 return false;
168 }
169 IPatternMatch otherSig = (IPatternMatch) obj;
170 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
171 }
172 }
173
174 @Override
175 public X_inv08_inRange specification() {
176 return X_inv08_inRange.instance();
177 }
178
179 /**
180 * Returns an empty, mutable match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @return the empty match.
184 *
185 */
186 public static X_inv08_inRange.Match newEmptyMatch() {
187 return new Mutable(null);
188 }
189
190 /**
191 * Returns a mutable (partial) match.
192 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
193 *
194 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static X_inv08_inRange.Match newMutableMatch(final Income pInc) {
199 return new Mutable(pInc);
200 }
201
202 /**
203 * Returns a new (partial) match.
204 * This can be used e.g. to call the matcher with a partial match.
205 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
206 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
207 * @return the (partial) match object.
208 *
209 */
210 public static X_inv08_inRange.Match newMatch(final Income pInc) {
211 return new Immutable(pInc);
212 }
213
214 private static final class Mutable extends X_inv08_inRange.Match {
215 Mutable(final Income pInc) {
216 super(pInc);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return true;
222 }
223 }
224
225 private static final class Immutable extends X_inv08_inRange.Match {
226 Immutable(final Income pInc) {
227 super(pInc);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return false;
233 }
234 }
235 }
236
237 /**
238 * Generated pattern matcher API of the queries.x_inv08_inRange pattern,
239 * providing pattern-specific query methods.
240 *
241 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
242 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
243 *
244 * <p>Matches of the pattern will be represented as {@link Match}.
245 *
246 * <p>Original source:
247 * <code><pre>
248 * pattern x_inv08_inRange(inc : Income) {
249 * Income.details.distance(inc, dist);
250 * check(dist {@literal <} 0);
251 * } or {
252 * Income.details.distance(inc, dist);
253 * check(dist {@literal >} 100);
254 * }
255 * </pre></code>
256 *
257 * @see Match
258 * @see X_inv08_inRange
259 *
260 */
261 public static class Matcher extends BaseMatcher<X_inv08_inRange.Match> {
262 /**
263 * Initializes the pattern matcher within an existing VIATRA Query engine.
264 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
265 *
266 * @param engine the existing VIATRA Query engine in which this matcher will be created.
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 *
269 */
270 public static X_inv08_inRange.Matcher on(final ViatraQueryEngine engine) {
271 // check if matcher already exists
272 Matcher matcher = engine.getExistingMatcher(querySpecification());
273 if (matcher == null) {
274 matcher = (Matcher)engine.getMatcher(querySpecification());
275 }
276 return matcher;
277 }
278
279 /**
280 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
281 * @return an initialized matcher
282 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
283 *
284 */
285 public static X_inv08_inRange.Matcher create() {
286 return new Matcher();
287 }
288
289 private static final int POSITION_INC = 0;
290
291 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv08_inRange.Matcher.class);
292
293 /**
294 * Initializes the pattern matcher within an existing VIATRA Query engine.
295 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
296 *
297 * @param engine the existing VIATRA Query engine in which this matcher will be created.
298 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
299 *
300 */
301 private Matcher() {
302 super(querySpecification());
303 }
304
305 /**
306 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
307 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<X_inv08_inRange.Match> getAllMatches(final Income pInc) {
312 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
322 * @return a stream of matches represented as a Match object.
323 *
324 */
325 public Stream<X_inv08_inRange.Match> streamAllMatches(final Income pInc) {
326 return rawStreamAllMatches(new Object[]{pInc});
327 }
328
329 /**
330 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
331 * Neither determinism nor randomness of selection is guaranteed.
332 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
333 * @return a match represented as a Match object, or null if no match is found.
334 *
335 */
336 public Optional<X_inv08_inRange.Match> getOneArbitraryMatch(final Income pInc) {
337 return rawGetOneArbitraryMatch(new Object[]{pInc});
338 }
339
340 /**
341 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
342 * under any possible substitution of the unspecified parameters (if any).
343 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
344 * @return true if the input is a valid (partial) match of the pattern.
345 *
346 */
347 public boolean hasMatch(final Income pInc) {
348 return rawHasMatch(new Object[]{pInc});
349 }
350
351 /**
352 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
353 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
354 * @return the number of pattern matches found.
355 *
356 */
357 public int countMatches(final Income pInc) {
358 return rawCountMatches(new Object[]{pInc});
359 }
360
361 /**
362 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
363 * Neither determinism nor randomness of selection is guaranteed.
364 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
365 * @param processor the action that will process the selected match.
366 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
367 *
368 */
369 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super X_inv08_inRange.Match> processor) {
370 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
371 }
372
373 /**
374 * Returns a new (partial) match.
375 * This can be used e.g. to call the matcher with a partial match.
376 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
377 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
378 * @return the (partial) match object.
379 *
380 */
381 public X_inv08_inRange.Match newMatch(final Income pInc) {
382 return X_inv08_inRange.Match.newMatch(pInc);
383 }
384
385 /**
386 * Retrieve the set of values that occur in matches for inc.
387 * @return the Set of all values or empty set if there are no matches
388 *
389 */
390 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
391 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
392 }
393
394 /**
395 * Retrieve the set of values that occur in matches for inc.
396 * @return the Set of all values or empty set if there are no matches
397 *
398 */
399 public Set<Income> getAllValuesOfinc() {
400 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
401 }
402
403 /**
404 * Retrieve the set of values that occur in matches for inc.
405 * @return the Set of all values or empty set if there are no matches
406 *
407 */
408 public Stream<Income> streamAllValuesOfinc() {
409 return rawStreamAllValuesOfinc(emptyArray());
410 }
411
412 @Override
413 protected X_inv08_inRange.Match tupleToMatch(final Tuple t) {
414 try {
415 return X_inv08_inRange.Match.newMatch((Income) t.get(POSITION_INC));
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in tuple not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected X_inv08_inRange.Match arrayToMatch(final Object[] match) {
424 try {
425 return X_inv08_inRange.Match.newMatch((Income) match[POSITION_INC]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 @Override
433 protected X_inv08_inRange.Match arrayToMatchMutable(final Object[] match) {
434 try {
435 return X_inv08_inRange.Match.newMutableMatch((Income) match[POSITION_INC]);
436 } catch(ClassCastException e) {
437 LOGGER.error("Element(s) in array not properly typed!",e);
438 return null;
439 }
440 }
441
442 /**
443 * @return the singleton instance of the query specification of this pattern
444 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
445 *
446 */
447 public static IQuerySpecification<X_inv08_inRange.Matcher> querySpecification() {
448 return X_inv08_inRange.instance();
449 }
450 }
451
452 private X_inv08_inRange() {
453 super(GeneratedPQuery.INSTANCE);
454 }
455
456 /**
457 * @return the singleton instance of the query specification
458 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
459 *
460 */
461 public static X_inv08_inRange instance() {
462 try{
463 return LazyHolder.INSTANCE;
464 } catch (ExceptionInInitializerError err) {
465 throw processInitializerError(err);
466 }
467 }
468
469 @Override
470 protected X_inv08_inRange.Matcher instantiate(final ViatraQueryEngine engine) {
471 return X_inv08_inRange.Matcher.on(engine);
472 }
473
474 @Override
475 public X_inv08_inRange.Matcher instantiate() {
476 return X_inv08_inRange.Matcher.create();
477 }
478
479 @Override
480 public X_inv08_inRange.Match newEmptyMatch() {
481 return X_inv08_inRange.Match.newEmptyMatch();
482 }
483
484 @Override
485 public X_inv08_inRange.Match newMatch(final Object... parameters) {
486 return X_inv08_inRange.Match.newMatch((Taxation.Income) parameters[0]);
487 }
488
489 /**
490 * Inner class allowing the singleton instance of {@link X_inv08_inRange} to be created
491 * <b>not</b> at the class load time of the outer class,
492 * but rather at the first call to {@link X_inv08_inRange#instance()}.
493 *
494 * <p> This workaround is required e.g. to support recursion.
495 *
496 */
497 private static class LazyHolder {
498 private static final X_inv08_inRange INSTANCE = new X_inv08_inRange();
499
500 /**
501 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
502 * This initialization order is required to support indirect recursion.
503 *
504 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
505 *
506 */
507 private static final Object STATIC_INITIALIZER = ensureInitialized();
508
509 public static Object ensureInitialized() {
510 INSTANCE.ensureInitializedInternal();
511 return null;
512 }
513 }
514
515 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
516 private static final X_inv08_inRange.GeneratedPQuery INSTANCE = new GeneratedPQuery();
517
518 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
519
520 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
521
522 private GeneratedPQuery() {
523 super(PVisibility.PUBLIC);
524 }
525
526 @Override
527 public String getFullyQualifiedName() {
528 return "queries.x_inv08_inRange";
529 }
530
531 @Override
532 public List<String> getParameterNames() {
533 return Arrays.asList("inc");
534 }
535
536 @Override
537 public List<PParameter> getParameters() {
538 return parameters;
539 }
540
541 @Override
542 public Set<PBody> doGetContainedBodies() {
543 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
544 Set<PBody> bodies = new LinkedHashSet<>();
545 {
546 PBody body = new PBody(this);
547 PVariable var_inc = body.getOrCreateVariableByName("inc");
548 PVariable var_dist = body.getOrCreateVariableByName("dist");
549 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
550 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
551 new ExportedParameter(body, var_inc, parameter_inc)
552 ));
553 // Income.details.distance(inc, dist)
554 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
555 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
556 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
557 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
558 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
559 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "distance")));
560 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
561 new Equality(body, var__virtual_1_, var_dist);
562 // check(dist < 0)
563 new ExpressionEvaluation(body, new IExpressionEvaluator() {
564
565 @Override
566 public String getShortDescription() {
567 return "Expression evaluation from pattern x_inv08_inRange";
568 }
569
570 @Override
571 public Iterable<String> getInputParameterNames() {
572 return Arrays.asList("dist");}
573
574 @Override
575 public Object evaluateExpression(IValueProvider provider) throws Exception {
576 Double dist = (Double) provider.getValue("dist");
577 return evaluateExpression_1_1(dist);
578 }
579 }, null);
580 bodies.add(body);
581 }
582 {
583 PBody body = new PBody(this);
584 PVariable var_inc = body.getOrCreateVariableByName("inc");
585 PVariable var_dist = body.getOrCreateVariableByName("dist");
586 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
587 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
588 new ExportedParameter(body, var_inc, parameter_inc)
589 ));
590 // Income.details.distance(inc, dist)
591 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
592 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
593 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "details")));
594 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Detail")));
595 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
596 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income_Detail", "distance")));
597 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
598 new Equality(body, var__virtual_1_, var_dist);
599 // check(dist > 100)
600 new ExpressionEvaluation(body, new IExpressionEvaluator() {
601
602 @Override
603 public String getShortDescription() {
604 return "Expression evaluation from pattern x_inv08_inRange";
605 }
606
607 @Override
608 public Iterable<String> getInputParameterNames() {
609 return Arrays.asList("dist");}
610
611 @Override
612 public Object evaluateExpression(IValueProvider provider) throws Exception {
613 Double dist = (Double) provider.getValue("dist");
614 return evaluateExpression_2_1(dist);
615 }
616 }, null);
617 bodies.add(body);
618 }
619 return bodies;
620 }
621 }
622
623 private static boolean evaluateExpression_1_1(final Double dist) {
624 return ((dist).doubleValue() < 0);
625 }
626
627 private static boolean evaluateExpression_2_1(final Double dist) {
628 return ((dist).doubleValue() > 100);
629 }
630}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java
new file mode 100644
index 00000000..2bffe499
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_noType.java
@@ -0,0 +1,551 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40
41/**
42 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
43 *
44 * <p>Original source:
45 * <code><pre>
46 * pattern x_inv08_noType(inc : Income) {
47 * Income.income_type(inc, _);
48 * }
49 * </pre></code>
50 *
51 * @see Matcher
52 * @see Match
53 *
54 */
55@SuppressWarnings("all")
56public final class X_inv08_noType extends BaseGeneratedEMFQuerySpecification<X_inv08_noType.Matcher> {
57 /**
58 * Pattern-specific match representation of the queries.x_inv08_noType pattern,
59 * to be used in conjunction with {@link Matcher}.
60 *
61 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
62 * Each instance is a (possibly partial) substitution of pattern parameters,
63 * usable to represent a match of the pattern in the result of a query,
64 * or to specify the bound (fixed) input parameters when issuing a query.
65 *
66 * @see Matcher
67 *
68 */
69 public static abstract class Match extends BasePatternMatch {
70 private Income fInc;
71
72 private static List<String> parameterNames = makeImmutableList("inc");
73
74 private Match(final Income pInc) {
75 this.fInc = pInc;
76 }
77
78 @Override
79 public Object get(final String parameterName) {
80 switch(parameterName) {
81 case "inc": return this.fInc;
82 default: return null;
83 }
84 }
85
86 @Override
87 public Object get(final int index) {
88 switch(index) {
89 case 0: return this.fInc;
90 default: return null;
91 }
92 }
93
94 public Income getInc() {
95 return this.fInc;
96 }
97
98 @Override
99 public boolean set(final String parameterName, final Object newValue) {
100 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
101 if ("inc".equals(parameterName) ) {
102 this.fInc = (Income) newValue;
103 return true;
104 }
105 return false;
106 }
107
108 public void setInc(final Income pInc) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 this.fInc = pInc;
111 }
112
113 @Override
114 public String patternName() {
115 return "queries.x_inv08_noType";
116 }
117
118 @Override
119 public List<String> parameterNames() {
120 return X_inv08_noType.Match.parameterNames;
121 }
122
123 @Override
124 public Object[] toArray() {
125 return new Object[]{fInc};
126 }
127
128 @Override
129 public X_inv08_noType.Match toImmutable() {
130 return isMutable() ? newMatch(fInc) : this;
131 }
132
133 @Override
134 public String prettyPrint() {
135 StringBuilder result = new StringBuilder();
136 result.append("\"inc\"=" + prettyPrintValue(fInc));
137 return result.toString();
138 }
139
140 @Override
141 public int hashCode() {
142 return Objects.hash(fInc);
143 }
144
145 @Override
146 public boolean equals(final Object obj) {
147 if (this == obj)
148 return true;
149 if (obj == null) {
150 return false;
151 }
152 if ((obj instanceof X_inv08_noType.Match)) {
153 X_inv08_noType.Match other = (X_inv08_noType.Match) obj;
154 return Objects.equals(fInc, other.fInc);
155 } else {
156 // this should be infrequent
157 if (!(obj instanceof IPatternMatch)) {
158 return false;
159 }
160 IPatternMatch otherSig = (IPatternMatch) obj;
161 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
162 }
163 }
164
165 @Override
166 public X_inv08_noType specification() {
167 return X_inv08_noType.instance();
168 }
169
170 /**
171 * Returns an empty, mutable match.
172 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
173 *
174 * @return the empty match.
175 *
176 */
177 public static X_inv08_noType.Match newEmptyMatch() {
178 return new Mutable(null);
179 }
180
181 /**
182 * Returns a mutable (partial) match.
183 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
184 *
185 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
186 * @return the new, mutable (partial) match object.
187 *
188 */
189 public static X_inv08_noType.Match newMutableMatch(final Income pInc) {
190 return new Mutable(pInc);
191 }
192
193 /**
194 * Returns a new (partial) match.
195 * This can be used e.g. to call the matcher with a partial match.
196 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
197 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
198 * @return the (partial) match object.
199 *
200 */
201 public static X_inv08_noType.Match newMatch(final Income pInc) {
202 return new Immutable(pInc);
203 }
204
205 private static final class Mutable extends X_inv08_noType.Match {
206 Mutable(final Income pInc) {
207 super(pInc);
208 }
209
210 @Override
211 public boolean isMutable() {
212 return true;
213 }
214 }
215
216 private static final class Immutable extends X_inv08_noType.Match {
217 Immutable(final Income pInc) {
218 super(pInc);
219 }
220
221 @Override
222 public boolean isMutable() {
223 return false;
224 }
225 }
226 }
227
228 /**
229 * Generated pattern matcher API of the queries.x_inv08_noType pattern,
230 * providing pattern-specific query methods.
231 *
232 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
233 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
234 *
235 * <p>Matches of the pattern will be represented as {@link Match}.
236 *
237 * <p>Original source:
238 * <code><pre>
239 * pattern x_inv08_noType(inc : Income) {
240 * Income.income_type(inc, _);
241 * }
242 * </pre></code>
243 *
244 * @see Match
245 * @see X_inv08_noType
246 *
247 */
248 public static class Matcher extends BaseMatcher<X_inv08_noType.Match> {
249 /**
250 * Initializes the pattern matcher within an existing VIATRA Query engine.
251 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
252 *
253 * @param engine the existing VIATRA Query engine in which this matcher will be created.
254 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
255 *
256 */
257 public static X_inv08_noType.Matcher on(final ViatraQueryEngine engine) {
258 // check if matcher already exists
259 Matcher matcher = engine.getExistingMatcher(querySpecification());
260 if (matcher == null) {
261 matcher = (Matcher)engine.getMatcher(querySpecification());
262 }
263 return matcher;
264 }
265
266 /**
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 * @return an initialized matcher
269 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
270 *
271 */
272 public static X_inv08_noType.Matcher create() {
273 return new Matcher();
274 }
275
276 private static final int POSITION_INC = 0;
277
278 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv08_noType.Matcher.class);
279
280 /**
281 * Initializes the pattern matcher within an existing VIATRA Query engine.
282 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
283 *
284 * @param engine the existing VIATRA Query engine in which this matcher will be created.
285 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
286 *
287 */
288 private Matcher() {
289 super(querySpecification());
290 }
291
292 /**
293 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
294 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
295 * @return matches represented as a Match object.
296 *
297 */
298 public Collection<X_inv08_noType.Match> getAllMatches(final Income pInc) {
299 return rawStreamAllMatches(new Object[]{pInc}).collect(Collectors.toSet());
300 }
301
302 /**
303 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
304 * </p>
305 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
306 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
307 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
308 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
309 * @return a stream of matches represented as a Match object.
310 *
311 */
312 public Stream<X_inv08_noType.Match> streamAllMatches(final Income pInc) {
313 return rawStreamAllMatches(new Object[]{pInc});
314 }
315
316 /**
317 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
318 * Neither determinism nor randomness of selection is guaranteed.
319 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
320 * @return a match represented as a Match object, or null if no match is found.
321 *
322 */
323 public Optional<X_inv08_noType.Match> getOneArbitraryMatch(final Income pInc) {
324 return rawGetOneArbitraryMatch(new Object[]{pInc});
325 }
326
327 /**
328 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
329 * under any possible substitution of the unspecified parameters (if any).
330 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
331 * @return true if the input is a valid (partial) match of the pattern.
332 *
333 */
334 public boolean hasMatch(final Income pInc) {
335 return rawHasMatch(new Object[]{pInc});
336 }
337
338 /**
339 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
340 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
341 * @return the number of pattern matches found.
342 *
343 */
344 public int countMatches(final Income pInc) {
345 return rawCountMatches(new Object[]{pInc});
346 }
347
348 /**
349 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
350 * Neither determinism nor randomness of selection is guaranteed.
351 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
352 * @param processor the action that will process the selected match.
353 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
354 *
355 */
356 public boolean forOneArbitraryMatch(final Income pInc, final Consumer<? super X_inv08_noType.Match> processor) {
357 return rawForOneArbitraryMatch(new Object[]{pInc}, processor);
358 }
359
360 /**
361 * Returns a new (partial) match.
362 * This can be used e.g. to call the matcher with a partial match.
363 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
364 * @param pInc the fixed value of pattern parameter inc, or null if not bound.
365 * @return the (partial) match object.
366 *
367 */
368 public X_inv08_noType.Match newMatch(final Income pInc) {
369 return X_inv08_noType.Match.newMatch(pInc);
370 }
371
372 /**
373 * Retrieve the set of values that occur in matches for inc.
374 * @return the Set of all values or empty set if there are no matches
375 *
376 */
377 protected Stream<Income> rawStreamAllValuesOfinc(final Object[] parameters) {
378 return rawStreamAllValues(POSITION_INC, parameters).map(Income.class::cast);
379 }
380
381 /**
382 * Retrieve the set of values that occur in matches for inc.
383 * @return the Set of all values or empty set if there are no matches
384 *
385 */
386 public Set<Income> getAllValuesOfinc() {
387 return rawStreamAllValuesOfinc(emptyArray()).collect(Collectors.toSet());
388 }
389
390 /**
391 * Retrieve the set of values that occur in matches for inc.
392 * @return the Set of all values or empty set if there are no matches
393 *
394 */
395 public Stream<Income> streamAllValuesOfinc() {
396 return rawStreamAllValuesOfinc(emptyArray());
397 }
398
399 @Override
400 protected X_inv08_noType.Match tupleToMatch(final Tuple t) {
401 try {
402 return X_inv08_noType.Match.newMatch((Income) t.get(POSITION_INC));
403 } catch(ClassCastException e) {
404 LOGGER.error("Element(s) in tuple not properly typed!",e);
405 return null;
406 }
407 }
408
409 @Override
410 protected X_inv08_noType.Match arrayToMatch(final Object[] match) {
411 try {
412 return X_inv08_noType.Match.newMatch((Income) match[POSITION_INC]);
413 } catch(ClassCastException e) {
414 LOGGER.error("Element(s) in array not properly typed!",e);
415 return null;
416 }
417 }
418
419 @Override
420 protected X_inv08_noType.Match arrayToMatchMutable(final Object[] match) {
421 try {
422 return X_inv08_noType.Match.newMutableMatch((Income) match[POSITION_INC]);
423 } catch(ClassCastException e) {
424 LOGGER.error("Element(s) in array not properly typed!",e);
425 return null;
426 }
427 }
428
429 /**
430 * @return the singleton instance of the query specification of this pattern
431 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
432 *
433 */
434 public static IQuerySpecification<X_inv08_noType.Matcher> querySpecification() {
435 return X_inv08_noType.instance();
436 }
437 }
438
439 private X_inv08_noType() {
440 super(GeneratedPQuery.INSTANCE);
441 }
442
443 /**
444 * @return the singleton instance of the query specification
445 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
446 *
447 */
448 public static X_inv08_noType instance() {
449 try{
450 return LazyHolder.INSTANCE;
451 } catch (ExceptionInInitializerError err) {
452 throw processInitializerError(err);
453 }
454 }
455
456 @Override
457 protected X_inv08_noType.Matcher instantiate(final ViatraQueryEngine engine) {
458 return X_inv08_noType.Matcher.on(engine);
459 }
460
461 @Override
462 public X_inv08_noType.Matcher instantiate() {
463 return X_inv08_noType.Matcher.create();
464 }
465
466 @Override
467 public X_inv08_noType.Match newEmptyMatch() {
468 return X_inv08_noType.Match.newEmptyMatch();
469 }
470
471 @Override
472 public X_inv08_noType.Match newMatch(final Object... parameters) {
473 return X_inv08_noType.Match.newMatch((Taxation.Income) parameters[0]);
474 }
475
476 /**
477 * Inner class allowing the singleton instance of {@link X_inv08_noType} to be created
478 * <b>not</b> at the class load time of the outer class,
479 * but rather at the first call to {@link X_inv08_noType#instance()}.
480 *
481 * <p> This workaround is required e.g. to support recursion.
482 *
483 */
484 private static class LazyHolder {
485 private static final X_inv08_noType INSTANCE = new X_inv08_noType();
486
487 /**
488 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
489 * This initialization order is required to support indirect recursion.
490 *
491 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
492 *
493 */
494 private static final Object STATIC_INITIALIZER = ensureInitialized();
495
496 public static Object ensureInitialized() {
497 INSTANCE.ensureInitializedInternal();
498 return null;
499 }
500 }
501
502 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
503 private static final X_inv08_noType.GeneratedPQuery INSTANCE = new GeneratedPQuery();
504
505 private final PParameter parameter_inc = new PParameter("inc", "Taxation.Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Income")), PParameterDirection.INOUT);
506
507 private final List<PParameter> parameters = Arrays.asList(parameter_inc);
508
509 private GeneratedPQuery() {
510 super(PVisibility.PUBLIC);
511 }
512
513 @Override
514 public String getFullyQualifiedName() {
515 return "queries.x_inv08_noType";
516 }
517
518 @Override
519 public List<String> getParameterNames() {
520 return Arrays.asList("inc");
521 }
522
523 @Override
524 public List<PParameter> getParameters() {
525 return parameters;
526 }
527
528 @Override
529 public Set<PBody> doGetContainedBodies() {
530 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
531 Set<PBody> bodies = new LinkedHashSet<>();
532 {
533 PBody body = new PBody(this);
534 PVariable var_inc = body.getOrCreateVariableByName("inc");
535 PVariable var___0_ = body.getOrCreateVariableByName("_<0>");
536 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
537 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
538 new ExportedParameter(body, var_inc, parameter_inc)
539 ));
540 // Income.income_type(inc, _)
541 new TypeConstraint(body, Tuples.flatTupleOf(var_inc), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
542 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
543 new TypeConstraint(body, Tuples.flatTupleOf(var_inc, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_type")));
544 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income_Type")));
545 new Equality(body, var__virtual_0_, var___0_);
546 bodies.add(body);
547 }
548 return bodies;
549 }
550 }
551}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java
new file mode 100644
index 00000000..4b4029a8
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv08_notEI.java
@@ -0,0 +1,544 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Employment_Income;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
35import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
36import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
37import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
38
39/**
40 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
41 *
42 * <p>Original source:
43 * <code><pre>
44 * pattern x_inv08_notEI(type : Employment_Income) {
45 * Employment_Income(type);
46 * }
47 * </pre></code>
48 *
49 * @see Matcher
50 * @see Match
51 *
52 */
53@SuppressWarnings("all")
54public final class X_inv08_notEI extends BaseGeneratedEMFQuerySpecification<X_inv08_notEI.Matcher> {
55 /**
56 * Pattern-specific match representation of the queries.x_inv08_notEI pattern,
57 * to be used in conjunction with {@link Matcher}.
58 *
59 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
60 * Each instance is a (possibly partial) substitution of pattern parameters,
61 * usable to represent a match of the pattern in the result of a query,
62 * or to specify the bound (fixed) input parameters when issuing a query.
63 *
64 * @see Matcher
65 *
66 */
67 public static abstract class Match extends BasePatternMatch {
68 private Employment_Income fType;
69
70 private static List<String> parameterNames = makeImmutableList("type");
71
72 private Match(final Employment_Income pType) {
73 this.fType = pType;
74 }
75
76 @Override
77 public Object get(final String parameterName) {
78 switch(parameterName) {
79 case "type": return this.fType;
80 default: return null;
81 }
82 }
83
84 @Override
85 public Object get(final int index) {
86 switch(index) {
87 case 0: return this.fType;
88 default: return null;
89 }
90 }
91
92 public Employment_Income getType() {
93 return this.fType;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("type".equals(parameterName) ) {
100 this.fType = (Employment_Income) newValue;
101 return true;
102 }
103 return false;
104 }
105
106 public void setType(final Employment_Income pType) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 this.fType = pType;
109 }
110
111 @Override
112 public String patternName() {
113 return "queries.x_inv08_notEI";
114 }
115
116 @Override
117 public List<String> parameterNames() {
118 return X_inv08_notEI.Match.parameterNames;
119 }
120
121 @Override
122 public Object[] toArray() {
123 return new Object[]{fType};
124 }
125
126 @Override
127 public X_inv08_notEI.Match toImmutable() {
128 return isMutable() ? newMatch(fType) : this;
129 }
130
131 @Override
132 public String prettyPrint() {
133 StringBuilder result = new StringBuilder();
134 result.append("\"type\"=" + prettyPrintValue(fType));
135 return result.toString();
136 }
137
138 @Override
139 public int hashCode() {
140 return Objects.hash(fType);
141 }
142
143 @Override
144 public boolean equals(final Object obj) {
145 if (this == obj)
146 return true;
147 if (obj == null) {
148 return false;
149 }
150 if ((obj instanceof X_inv08_notEI.Match)) {
151 X_inv08_notEI.Match other = (X_inv08_notEI.Match) obj;
152 return Objects.equals(fType, other.fType);
153 } else {
154 // this should be infrequent
155 if (!(obj instanceof IPatternMatch)) {
156 return false;
157 }
158 IPatternMatch otherSig = (IPatternMatch) obj;
159 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
160 }
161 }
162
163 @Override
164 public X_inv08_notEI specification() {
165 return X_inv08_notEI.instance();
166 }
167
168 /**
169 * Returns an empty, mutable match.
170 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
171 *
172 * @return the empty match.
173 *
174 */
175 public static X_inv08_notEI.Match newEmptyMatch() {
176 return new Mutable(null);
177 }
178
179 /**
180 * Returns a mutable (partial) match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @param pType the fixed value of pattern parameter type, or null if not bound.
184 * @return the new, mutable (partial) match object.
185 *
186 */
187 public static X_inv08_notEI.Match newMutableMatch(final Employment_Income pType) {
188 return new Mutable(pType);
189 }
190
191 /**
192 * Returns a new (partial) match.
193 * This can be used e.g. to call the matcher with a partial match.
194 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
195 * @param pType the fixed value of pattern parameter type, or null if not bound.
196 * @return the (partial) match object.
197 *
198 */
199 public static X_inv08_notEI.Match newMatch(final Employment_Income pType) {
200 return new Immutable(pType);
201 }
202
203 private static final class Mutable extends X_inv08_notEI.Match {
204 Mutable(final Employment_Income pType) {
205 super(pType);
206 }
207
208 @Override
209 public boolean isMutable() {
210 return true;
211 }
212 }
213
214 private static final class Immutable extends X_inv08_notEI.Match {
215 Immutable(final Employment_Income pType) {
216 super(pType);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return false;
222 }
223 }
224 }
225
226 /**
227 * Generated pattern matcher API of the queries.x_inv08_notEI pattern,
228 * providing pattern-specific query methods.
229 *
230 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
231 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
232 *
233 * <p>Matches of the pattern will be represented as {@link Match}.
234 *
235 * <p>Original source:
236 * <code><pre>
237 * pattern x_inv08_notEI(type : Employment_Income) {
238 * Employment_Income(type);
239 * }
240 * </pre></code>
241 *
242 * @see Match
243 * @see X_inv08_notEI
244 *
245 */
246 public static class Matcher extends BaseMatcher<X_inv08_notEI.Match> {
247 /**
248 * Initializes the pattern matcher within an existing VIATRA Query engine.
249 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
250 *
251 * @param engine the existing VIATRA Query engine in which this matcher will be created.
252 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
253 *
254 */
255 public static X_inv08_notEI.Matcher on(final ViatraQueryEngine engine) {
256 // check if matcher already exists
257 Matcher matcher = engine.getExistingMatcher(querySpecification());
258 if (matcher == null) {
259 matcher = (Matcher)engine.getMatcher(querySpecification());
260 }
261 return matcher;
262 }
263
264 /**
265 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
266 * @return an initialized matcher
267 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
268 *
269 */
270 public static X_inv08_notEI.Matcher create() {
271 return new Matcher();
272 }
273
274 private static final int POSITION_TYPE = 0;
275
276 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv08_notEI.Matcher.class);
277
278 /**
279 * Initializes the pattern matcher within an existing VIATRA Query engine.
280 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
281 *
282 * @param engine the existing VIATRA Query engine in which this matcher will be created.
283 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
284 *
285 */
286 private Matcher() {
287 super(querySpecification());
288 }
289
290 /**
291 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
292 * @param pType the fixed value of pattern parameter type, or null if not bound.
293 * @return matches represented as a Match object.
294 *
295 */
296 public Collection<X_inv08_notEI.Match> getAllMatches(final Employment_Income pType) {
297 return rawStreamAllMatches(new Object[]{pType}).collect(Collectors.toSet());
298 }
299
300 /**
301 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
302 * </p>
303 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
304 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
305 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
306 * @param pType the fixed value of pattern parameter type, or null if not bound.
307 * @return a stream of matches represented as a Match object.
308 *
309 */
310 public Stream<X_inv08_notEI.Match> streamAllMatches(final Employment_Income pType) {
311 return rawStreamAllMatches(new Object[]{pType});
312 }
313
314 /**
315 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
316 * Neither determinism nor randomness of selection is guaranteed.
317 * @param pType the fixed value of pattern parameter type, or null if not bound.
318 * @return a match represented as a Match object, or null if no match is found.
319 *
320 */
321 public Optional<X_inv08_notEI.Match> getOneArbitraryMatch(final Employment_Income pType) {
322 return rawGetOneArbitraryMatch(new Object[]{pType});
323 }
324
325 /**
326 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
327 * under any possible substitution of the unspecified parameters (if any).
328 * @param pType the fixed value of pattern parameter type, or null if not bound.
329 * @return true if the input is a valid (partial) match of the pattern.
330 *
331 */
332 public boolean hasMatch(final Employment_Income pType) {
333 return rawHasMatch(new Object[]{pType});
334 }
335
336 /**
337 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
338 * @param pType the fixed value of pattern parameter type, or null if not bound.
339 * @return the number of pattern matches found.
340 *
341 */
342 public int countMatches(final Employment_Income pType) {
343 return rawCountMatches(new Object[]{pType});
344 }
345
346 /**
347 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
348 * Neither determinism nor randomness of selection is guaranteed.
349 * @param pType the fixed value of pattern parameter type, or null if not bound.
350 * @param processor the action that will process the selected match.
351 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
352 *
353 */
354 public boolean forOneArbitraryMatch(final Employment_Income pType, final Consumer<? super X_inv08_notEI.Match> processor) {
355 return rawForOneArbitraryMatch(new Object[]{pType}, processor);
356 }
357
358 /**
359 * Returns a new (partial) match.
360 * This can be used e.g. to call the matcher with a partial match.
361 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
362 * @param pType the fixed value of pattern parameter type, or null if not bound.
363 * @return the (partial) match object.
364 *
365 */
366 public X_inv08_notEI.Match newMatch(final Employment_Income pType) {
367 return X_inv08_notEI.Match.newMatch(pType);
368 }
369
370 /**
371 * Retrieve the set of values that occur in matches for type.
372 * @return the Set of all values or empty set if there are no matches
373 *
374 */
375 protected Stream<Employment_Income> rawStreamAllValuesOftype(final Object[] parameters) {
376 return rawStreamAllValues(POSITION_TYPE, parameters).map(Employment_Income.class::cast);
377 }
378
379 /**
380 * Retrieve the set of values that occur in matches for type.
381 * @return the Set of all values or empty set if there are no matches
382 *
383 */
384 public Set<Employment_Income> getAllValuesOftype() {
385 return rawStreamAllValuesOftype(emptyArray()).collect(Collectors.toSet());
386 }
387
388 /**
389 * Retrieve the set of values that occur in matches for type.
390 * @return the Set of all values or empty set if there are no matches
391 *
392 */
393 public Stream<Employment_Income> streamAllValuesOftype() {
394 return rawStreamAllValuesOftype(emptyArray());
395 }
396
397 @Override
398 protected X_inv08_notEI.Match tupleToMatch(final Tuple t) {
399 try {
400 return X_inv08_notEI.Match.newMatch((Employment_Income) t.get(POSITION_TYPE));
401 } catch(ClassCastException e) {
402 LOGGER.error("Element(s) in tuple not properly typed!",e);
403 return null;
404 }
405 }
406
407 @Override
408 protected X_inv08_notEI.Match arrayToMatch(final Object[] match) {
409 try {
410 return X_inv08_notEI.Match.newMatch((Employment_Income) match[POSITION_TYPE]);
411 } catch(ClassCastException e) {
412 LOGGER.error("Element(s) in array not properly typed!",e);
413 return null;
414 }
415 }
416
417 @Override
418 protected X_inv08_notEI.Match arrayToMatchMutable(final Object[] match) {
419 try {
420 return X_inv08_notEI.Match.newMutableMatch((Employment_Income) match[POSITION_TYPE]);
421 } catch(ClassCastException e) {
422 LOGGER.error("Element(s) in array not properly typed!",e);
423 return null;
424 }
425 }
426
427 /**
428 * @return the singleton instance of the query specification of this pattern
429 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
430 *
431 */
432 public static IQuerySpecification<X_inv08_notEI.Matcher> querySpecification() {
433 return X_inv08_notEI.instance();
434 }
435 }
436
437 private X_inv08_notEI() {
438 super(GeneratedPQuery.INSTANCE);
439 }
440
441 /**
442 * @return the singleton instance of the query specification
443 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
444 *
445 */
446 public static X_inv08_notEI instance() {
447 try{
448 return LazyHolder.INSTANCE;
449 } catch (ExceptionInInitializerError err) {
450 throw processInitializerError(err);
451 }
452 }
453
454 @Override
455 protected X_inv08_notEI.Matcher instantiate(final ViatraQueryEngine engine) {
456 return X_inv08_notEI.Matcher.on(engine);
457 }
458
459 @Override
460 public X_inv08_notEI.Matcher instantiate() {
461 return X_inv08_notEI.Matcher.create();
462 }
463
464 @Override
465 public X_inv08_notEI.Match newEmptyMatch() {
466 return X_inv08_notEI.Match.newEmptyMatch();
467 }
468
469 @Override
470 public X_inv08_notEI.Match newMatch(final Object... parameters) {
471 return X_inv08_notEI.Match.newMatch((Taxation.Employment_Income) parameters[0]);
472 }
473
474 /**
475 * Inner class allowing the singleton instance of {@link X_inv08_notEI} to be created
476 * <b>not</b> at the class load time of the outer class,
477 * but rather at the first call to {@link X_inv08_notEI#instance()}.
478 *
479 * <p> This workaround is required e.g. to support recursion.
480 *
481 */
482 private static class LazyHolder {
483 private static final X_inv08_notEI INSTANCE = new X_inv08_notEI();
484
485 /**
486 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
487 * This initialization order is required to support indirect recursion.
488 *
489 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
490 *
491 */
492 private static final Object STATIC_INITIALIZER = ensureInitialized();
493
494 public static Object ensureInitialized() {
495 INSTANCE.ensureInitializedInternal();
496 return null;
497 }
498 }
499
500 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
501 private static final X_inv08_notEI.GeneratedPQuery INSTANCE = new GeneratedPQuery();
502
503 private final PParameter parameter_type = new PParameter("type", "Taxation.Employment_Income", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Employment_Income")), PParameterDirection.INOUT);
504
505 private final List<PParameter> parameters = Arrays.asList(parameter_type);
506
507 private GeneratedPQuery() {
508 super(PVisibility.PUBLIC);
509 }
510
511 @Override
512 public String getFullyQualifiedName() {
513 return "queries.x_inv08_notEI";
514 }
515
516 @Override
517 public List<String> getParameterNames() {
518 return Arrays.asList("type");
519 }
520
521 @Override
522 public List<PParameter> getParameters() {
523 return parameters;
524 }
525
526 @Override
527 public Set<PBody> doGetContainedBodies() {
528 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
529 Set<PBody> bodies = new LinkedHashSet<>();
530 {
531 PBody body = new PBody(this);
532 PVariable var_type = body.getOrCreateVariableByName("type");
533 new TypeConstraint(body, Tuples.flatTupleOf(var_type), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Employment_Income")));
534 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
535 new ExportedParameter(body, var_type, parameter_type)
536 ));
537 // Employment_Income(type)
538 new TypeConstraint(body, Tuples.flatTupleOf(var_type), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Employment_Income")));
539 bodies.add(body);
540 }
541 return bodies;
542 }
543 }
544}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java
new file mode 100644
index 00000000..35b30b0f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incNotOver100.java
@@ -0,0 +1,610 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Expense;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.stream.Stream;
15import org.apache.log4j.Logger;
16import org.eclipse.emf.ecore.EClass;
17import org.eclipse.emf.ecore.EDataType;
18import org.eclipse.viatra.query.runtime.api.IPatternMatch;
19import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
20import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
21import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
23import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
24import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
25import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
26import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
29import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
40import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
41
42/**
43 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
44 *
45 * <p>Original source:
46 * <code><pre>
47 * pattern x_inv11_incNotOver100(exp : Expense) {
48 * Expense.income.income_amount(exp, incVal);
49 * check(incVal / 2 {@literal <}= 50);
50 * } or {
51 * Expense.declared_amount(exp, decl);
52 * check(decl {@literal <} 50);
53 * } or {
54 * Expense.income.income_amount(exp, incVal);
55 * Expense.declared_amount(exp, decl);
56 * check(decl {@literal >} incVal/2);
57 * }
58 * </pre></code>
59 *
60 * @see Matcher
61 * @see Match
62 *
63 */
64@SuppressWarnings("all")
65public final class X_inv11_incNotOver100 extends BaseGeneratedEMFQuerySpecification<X_inv11_incNotOver100.Matcher> {
66 /**
67 * Pattern-specific match representation of the queries.x_inv11_incNotOver100 pattern,
68 * to be used in conjunction with {@link Matcher}.
69 *
70 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
71 * Each instance is a (possibly partial) substitution of pattern parameters,
72 * usable to represent a match of the pattern in the result of a query,
73 * or to specify the bound (fixed) input parameters when issuing a query.
74 *
75 * @see Matcher
76 *
77 */
78 public static abstract class Match extends BasePatternMatch {
79 private Expense fExp;
80
81 private static List<String> parameterNames = makeImmutableList("exp");
82
83 private Match(final Expense pExp) {
84 this.fExp = pExp;
85 }
86
87 @Override
88 public Object get(final String parameterName) {
89 switch(parameterName) {
90 case "exp": return this.fExp;
91 default: return null;
92 }
93 }
94
95 @Override
96 public Object get(final int index) {
97 switch(index) {
98 case 0: return this.fExp;
99 default: return null;
100 }
101 }
102
103 public Expense getExp() {
104 return this.fExp;
105 }
106
107 @Override
108 public boolean set(final String parameterName, final Object newValue) {
109 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
110 if ("exp".equals(parameterName) ) {
111 this.fExp = (Expense) newValue;
112 return true;
113 }
114 return false;
115 }
116
117 public void setExp(final Expense pExp) {
118 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
119 this.fExp = pExp;
120 }
121
122 @Override
123 public String patternName() {
124 return "queries.x_inv11_incNotOver100";
125 }
126
127 @Override
128 public List<String> parameterNames() {
129 return X_inv11_incNotOver100.Match.parameterNames;
130 }
131
132 @Override
133 public Object[] toArray() {
134 return new Object[]{fExp};
135 }
136
137 @Override
138 public X_inv11_incNotOver100.Match toImmutable() {
139 return isMutable() ? newMatch(fExp) : this;
140 }
141
142 @Override
143 public String prettyPrint() {
144 StringBuilder result = new StringBuilder();
145 result.append("\"exp\"=" + prettyPrintValue(fExp));
146 return result.toString();
147 }
148
149 @Override
150 public int hashCode() {
151 return Objects.hash(fExp);
152 }
153
154 @Override
155 public boolean equals(final Object obj) {
156 if (this == obj)
157 return true;
158 if (obj == null) {
159 return false;
160 }
161 if ((obj instanceof X_inv11_incNotOver100.Match)) {
162 X_inv11_incNotOver100.Match other = (X_inv11_incNotOver100.Match) obj;
163 return Objects.equals(fExp, other.fExp);
164 } else {
165 // this should be infrequent
166 if (!(obj instanceof IPatternMatch)) {
167 return false;
168 }
169 IPatternMatch otherSig = (IPatternMatch) obj;
170 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
171 }
172 }
173
174 @Override
175 public X_inv11_incNotOver100 specification() {
176 return X_inv11_incNotOver100.instance();
177 }
178
179 /**
180 * Returns an empty, mutable match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @return the empty match.
184 *
185 */
186 public static X_inv11_incNotOver100.Match newEmptyMatch() {
187 return new Mutable(null);
188 }
189
190 /**
191 * Returns a mutable (partial) match.
192 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
193 *
194 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
195 * @return the new, mutable (partial) match object.
196 *
197 */
198 public static X_inv11_incNotOver100.Match newMutableMatch(final Expense pExp) {
199 return new Mutable(pExp);
200 }
201
202 /**
203 * Returns a new (partial) match.
204 * This can be used e.g. to call the matcher with a partial match.
205 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
206 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
207 * @return the (partial) match object.
208 *
209 */
210 public static X_inv11_incNotOver100.Match newMatch(final Expense pExp) {
211 return new Immutable(pExp);
212 }
213
214 private static final class Mutable extends X_inv11_incNotOver100.Match {
215 Mutable(final Expense pExp) {
216 super(pExp);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return true;
222 }
223 }
224
225 private static final class Immutable extends X_inv11_incNotOver100.Match {
226 Immutable(final Expense pExp) {
227 super(pExp);
228 }
229
230 @Override
231 public boolean isMutable() {
232 return false;
233 }
234 }
235 }
236
237 /**
238 * Generated pattern matcher API of the queries.x_inv11_incNotOver100 pattern,
239 * providing pattern-specific query methods.
240 *
241 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
242 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
243 *
244 * <p>Matches of the pattern will be represented as {@link Match}.
245 *
246 * <p>Original source:
247 * <code><pre>
248 * pattern x_inv11_incNotOver100(exp : Expense) {
249 * Expense.income.income_amount(exp, incVal);
250 * check(incVal / 2 {@literal <}= 50);
251 * } or {
252 * Expense.declared_amount(exp, decl);
253 * check(decl {@literal <} 50);
254 * } or {
255 * Expense.income.income_amount(exp, incVal);
256 * Expense.declared_amount(exp, decl);
257 * check(decl {@literal >} incVal/2);
258 * }
259 * </pre></code>
260 *
261 * @see Match
262 * @see X_inv11_incNotOver100
263 *
264 */
265 public static class Matcher extends BaseMatcher<X_inv11_incNotOver100.Match> {
266 /**
267 * Initializes the pattern matcher within an existing VIATRA Query engine.
268 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
269 *
270 * @param engine the existing VIATRA Query engine in which this matcher will be created.
271 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
272 *
273 */
274 public static X_inv11_incNotOver100.Matcher on(final ViatraQueryEngine engine) {
275 // check if matcher already exists
276 Matcher matcher = engine.getExistingMatcher(querySpecification());
277 if (matcher == null) {
278 matcher = (Matcher)engine.getMatcher(querySpecification());
279 }
280 return matcher;
281 }
282
283 /**
284 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
285 * @return an initialized matcher
286 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
287 *
288 */
289 public static X_inv11_incNotOver100.Matcher create() {
290 return new Matcher();
291 }
292
293 private static final int POSITION_EXP = 0;
294
295 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv11_incNotOver100.Matcher.class);
296
297 /**
298 * Initializes the pattern matcher within an existing VIATRA Query engine.
299 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
300 *
301 * @param engine the existing VIATRA Query engine in which this matcher will be created.
302 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
303 *
304 */
305 private Matcher() {
306 super(querySpecification());
307 }
308
309 /**
310 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
311 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
312 * @return matches represented as a Match object.
313 *
314 */
315 public Collection<X_inv11_incNotOver100.Match> getAllMatches();
316
317 /**
318 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
319 * </p>
320 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
321 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
322 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
323 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
324 * @return a stream of matches represented as a Match object.
325 *
326 */
327 public Stream<X_inv11_incNotOver100.Match> streamAllMatches(final Expense pExp) {
328 return rawStreamAllMatches(new Object[]{pExp});
329 }
330
331 /**
332 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
333 * Neither determinism nor randomness of selection is guaranteed.
334 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
335 * @return a match represented as a Match object, or null if no match is found.
336 *
337 */
338 public Optional<X_inv11_incNotOver100.Match> getOneArbitraryMatch(final Expense pExp) {
339 return rawGetOneArbitraryMatch(new Object[]{pExp});
340 }
341
342 /**
343 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
344 * under any possible substitution of the unspecified parameters (if any).
345 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
346 * @return true if the input is a valid (partial) match of the pattern.
347 *
348 */
349 public boolean hasMatch(final Expense pExp) {
350 return rawHasMatch(new Object[]{pExp});
351 }
352
353 /**
354 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
355 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
356 * @return the number of pattern matches found.
357 *
358 */
359 public int countMatches(final Expense pExp) {
360 return rawCountMatches(new Object[]{pExp});
361 }
362
363 /**
364 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
365 * Neither determinism nor randomness of selection is guaranteed.
366 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
367 * @param processor the action that will process the selected match.
368 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
369 *
370 */
371 public boolean forOneArbitraryMatch();
372
373 /**
374 * Returns a new (partial) match.
375 * This can be used e.g. to call the matcher with a partial match.
376 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
377 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
378 * @return the (partial) match object.
379 *
380 */
381 public X_inv11_incNotOver100.Match newMatch(final Expense pExp) {
382 return X_inv11_incNotOver100.Match.newMatch(pExp);
383 }
384 }
385
386 private X_inv11_incNotOver100() {
387 super(GeneratedPQuery.INSTANCE);
388 }
389
390 /**
391 * @return the singleton instance of the query specification
392 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
393 *
394 */
395 public static X_inv11_incNotOver100 instance() {
396 try{
397 return LazyHolder.INSTANCE;
398 } catch (ExceptionInInitializerError err) {
399 throw processInitializerError(err);
400 }
401 }
402
403 @Override
404 protected X_inv11_incNotOver100.Matcher instantiate(final ViatraQueryEngine engine) {
405 return X_inv11_incNotOver100.Matcher.on(engine);
406 }
407
408 @Override
409 public X_inv11_incNotOver100.Matcher instantiate() {
410 return X_inv11_incNotOver100.Matcher.create();
411 }
412
413 @Override
414 public X_inv11_incNotOver100.Match newEmptyMatch() {
415 return X_inv11_incNotOver100.Match.newEmptyMatch();
416 }
417
418 @Override
419 public X_inv11_incNotOver100.Match newMatch(final Object... parameters) {
420 return X_inv11_incNotOver100.Match.newMatch((Taxation.Expense) parameters[0]);
421 }
422
423 /**
424 * Inner class allowing the singleton instance of {@link X_inv11_incNotOver100} to be created
425 * <b>not</b> at the class load time of the outer class,
426 * but rather at the first call to {@link X_inv11_incNotOver100#instance()}.
427 *
428 * <p> This workaround is required e.g. to support recursion.
429 *
430 */
431 private static class LazyHolder {
432 private static final X_inv11_incNotOver100 INSTANCE = new X_inv11_incNotOver100();
433
434 /**
435 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
436 * This initialization order is required to support indirect recursion.
437 *
438 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
439 *
440 */
441 private static final Object STATIC_INITIALIZER = ensureInitialized();
442
443 public static Object ensureInitialized() {
444 INSTANCE.ensureInitializedInternal();
445 return null;
446 }
447 }
448
449 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
450 private static final X_inv11_incNotOver100.GeneratedPQuery INSTANCE = new GeneratedPQuery();
451
452 private final PParameter parameter_exp = new PParameter("exp", "Taxation.Expense", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Expense")), PParameterDirection.INOUT);
453
454 private final List<PParameter> parameters = Arrays.asList(parameter_exp);
455
456 private GeneratedPQuery() {
457 super(PVisibility.PUBLIC);
458 }
459
460 @Override
461 public String getFullyQualifiedName() {
462 return "queries.x_inv11_incNotOver100";
463 }
464
465 @Override
466 public List<String> getParameterNames() {
467 return Arrays.asList("exp");
468 }
469
470 @Override
471 public List<PParameter> getParameters() {
472 return parameters;
473 }
474
475 @Override
476 public Set<PBody> doGetContainedBodies() {
477 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
478 Set<PBody> bodies = new LinkedHashSet<>();
479 {
480 PBody body = new PBody(this);
481 PVariable var_exp = body.getOrCreateVariableByName("exp");
482 PVariable var_incVal = body.getOrCreateVariableByName("incVal");
483 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
484 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
485 new ExportedParameter(body, var_exp, parameter_exp)
486 ));
487 // Expense.income.income_amount(exp, incVal)
488 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
489 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
490 new TypeConstraint(body, Tuples.flatTupleOf(var_exp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Expense", "income")));
491 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
492 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
493 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_amount")));
494 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
495 new Equality(body, var__virtual_1_, var_incVal);
496 // check(incVal / 2 <= 50)
497 new ExpressionEvaluation(body, new IExpressionEvaluator() {
498
499 @Override
500 public String getShortDescription() {
501 return "Expression evaluation from pattern x_inv11_incNotOver100";
502 }
503
504 @Override
505 public Iterable<String> getInputParameterNames() {
506 return Arrays.asList("incVal");}
507
508 @Override
509 public Object evaluateExpression(IValueProvider provider) throws Exception {
510 Double incVal = (Double) provider.getValue("incVal");
511 return evaluateExpression_1_1(incVal);
512 }
513 }, null);
514 bodies.add(body);
515 }
516 {
517 PBody body = new PBody(this);
518 PVariable var_exp = body.getOrCreateVariableByName("exp");
519 PVariable var_decl = body.getOrCreateVariableByName("decl");
520 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
521 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
522 new ExportedParameter(body, var_exp, parameter_exp)
523 ));
524 // Expense.declared_amount(exp, decl)
525 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
526 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
527 new TypeConstraint(body, Tuples.flatTupleOf(var_exp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Expense", "declared_amount")));
528 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
529 new Equality(body, var__virtual_0_, var_decl);
530 // check(decl < 50)
531 new ExpressionEvaluation(body, new IExpressionEvaluator() {
532
533 @Override
534 public String getShortDescription() {
535 return "Expression evaluation from pattern x_inv11_incNotOver100";
536 }
537
538 @Override
539 public Iterable<String> getInputParameterNames() {
540 return Arrays.asList("decl");}
541
542 @Override
543 public Object evaluateExpression(IValueProvider provider) throws Exception {
544 Double decl = (Double) provider.getValue("decl");
545 return evaluateExpression_2_1(decl);
546 }
547 }, null);
548 bodies.add(body);
549 }
550 {
551 PBody body = new PBody(this);
552 PVariable var_exp = body.getOrCreateVariableByName("exp");
553 PVariable var_incVal = body.getOrCreateVariableByName("incVal");
554 PVariable var_decl = body.getOrCreateVariableByName("decl");
555 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
556 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
557 new ExportedParameter(body, var_exp, parameter_exp)
558 ));
559 // Expense.income.income_amount(exp, incVal)
560 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
561 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
562 new TypeConstraint(body, Tuples.flatTupleOf(var_exp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Expense", "income")));
563 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
564 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
565 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_amount")));
566 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
567 new Equality(body, var__virtual_1_, var_incVal);
568 // Expense.declared_amount(exp, decl)
569 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
570 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
571 new TypeConstraint(body, Tuples.flatTupleOf(var_exp, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Expense", "declared_amount")));
572 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
573 new Equality(body, var__virtual_2_, var_decl);
574 // check(decl > incVal/2)
575 new ExpressionEvaluation(body, new IExpressionEvaluator() {
576
577 @Override
578 public String getShortDescription() {
579 return "Expression evaluation from pattern x_inv11_incNotOver100";
580 }
581
582 @Override
583 public Iterable<String> getInputParameterNames() {
584 return Arrays.asList("decl", "incVal");}
585
586 @Override
587 public Object evaluateExpression(IValueProvider provider) throws Exception {
588 Double decl = (Double) provider.getValue("decl");
589 Double incVal = (Double) provider.getValue("incVal");
590 return evaluateExpression_3_1(decl, incVal);
591 }
592 }, null);
593 bodies.add(body);
594 }
595 return bodies;
596 }
597 }
598
599 private static boolean evaluateExpression_1_1(final Double incVal) {
600 return (((incVal).doubleValue() / 2) <= 50);
601 }
602
603 private static boolean evaluateExpression_2_1(final Double decl) {
604 return ((decl).doubleValue() < 50);
605 }
606
607 private static boolean evaluateExpression_3_1(final Double decl, final Double incVal) {
608 return ((decl).doubleValue() > ((incVal).doubleValue() / 2));
609 }
610}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java
new file mode 100644
index 00000000..27f7a2dc
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv11_incOver100.java
@@ -0,0 +1,629 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Expense;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
42import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
44import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
45
46/**
47 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
48 *
49 * <p>Original source:
50 * <code><pre>
51 * pattern x_inv11_incOver100(exp : Expense) {
52 * Expense.income.income_amount(exp, incVal);
53 * check(incVal / 2 {@literal >} 50);
54 *
55 * } or {
56 * Expense.declared_amount(exp, decl);
57 * check(decl != 50);
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class X_inv11_incOver100 extends BaseGeneratedEMFQuerySpecification<X_inv11_incOver100.Matcher> {
67 /**
68 * Pattern-specific match representation of the queries.x_inv11_incOver100 pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private Expense fExp;
81
82 private static List<String> parameterNames = makeImmutableList("exp");
83
84 private Match(final Expense pExp) {
85 this.fExp = pExp;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 switch(parameterName) {
91 case "exp": return this.fExp;
92 default: return null;
93 }
94 }
95
96 @Override
97 public Object get(final int index) {
98 switch(index) {
99 case 0: return this.fExp;
100 default: return null;
101 }
102 }
103
104 public Expense getExp() {
105 return this.fExp;
106 }
107
108 @Override
109 public boolean set(final String parameterName, final Object newValue) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 if ("exp".equals(parameterName) ) {
112 this.fExp = (Expense) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setExp(final Expense pExp) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fExp = pExp;
121 }
122
123 @Override
124 public String patternName() {
125 return "queries.x_inv11_incOver100";
126 }
127
128 @Override
129 public List<String> parameterNames() {
130 return X_inv11_incOver100.Match.parameterNames;
131 }
132
133 @Override
134 public Object[] toArray() {
135 return new Object[]{fExp};
136 }
137
138 @Override
139 public X_inv11_incOver100.Match toImmutable() {
140 return isMutable() ? newMatch(fExp) : this;
141 }
142
143 @Override
144 public String prettyPrint() {
145 StringBuilder result = new StringBuilder();
146 result.append("\"exp\"=" + prettyPrintValue(fExp));
147 return result.toString();
148 }
149
150 @Override
151 public int hashCode() {
152 return Objects.hash(fExp);
153 }
154
155 @Override
156 public boolean equals(final Object obj) {
157 if (this == obj)
158 return true;
159 if (obj == null) {
160 return false;
161 }
162 if ((obj instanceof X_inv11_incOver100.Match)) {
163 X_inv11_incOver100.Match other = (X_inv11_incOver100.Match) obj;
164 return Objects.equals(fExp, other.fExp);
165 } else {
166 // this should be infrequent
167 if (!(obj instanceof IPatternMatch)) {
168 return false;
169 }
170 IPatternMatch otherSig = (IPatternMatch) obj;
171 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
172 }
173 }
174
175 @Override
176 public X_inv11_incOver100 specification() {
177 return X_inv11_incOver100.instance();
178 }
179
180 /**
181 * Returns an empty, mutable match.
182 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
183 *
184 * @return the empty match.
185 *
186 */
187 public static X_inv11_incOver100.Match newEmptyMatch() {
188 return new Mutable(null);
189 }
190
191 /**
192 * Returns a mutable (partial) match.
193 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
194 *
195 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
196 * @return the new, mutable (partial) match object.
197 *
198 */
199 public static X_inv11_incOver100.Match newMutableMatch(final Expense pExp) {
200 return new Mutable(pExp);
201 }
202
203 /**
204 * Returns a new (partial) match.
205 * This can be used e.g. to call the matcher with a partial match.
206 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
207 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
208 * @return the (partial) match object.
209 *
210 */
211 public static X_inv11_incOver100.Match newMatch(final Expense pExp) {
212 return new Immutable(pExp);
213 }
214
215 private static final class Mutable extends X_inv11_incOver100.Match {
216 Mutable(final Expense pExp) {
217 super(pExp);
218 }
219
220 @Override
221 public boolean isMutable() {
222 return true;
223 }
224 }
225
226 private static final class Immutable extends X_inv11_incOver100.Match {
227 Immutable(final Expense pExp) {
228 super(pExp);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return false;
234 }
235 }
236 }
237
238 /**
239 * Generated pattern matcher API of the queries.x_inv11_incOver100 pattern,
240 * providing pattern-specific query methods.
241 *
242 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
243 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
244 *
245 * <p>Matches of the pattern will be represented as {@link Match}.
246 *
247 * <p>Original source:
248 * <code><pre>
249 * pattern x_inv11_incOver100(exp : Expense) {
250 * Expense.income.income_amount(exp, incVal);
251 * check(incVal / 2 {@literal >} 50);
252 *
253 * } or {
254 * Expense.declared_amount(exp, decl);
255 * check(decl != 50);
256 * }
257 * </pre></code>
258 *
259 * @see Match
260 * @see X_inv11_incOver100
261 *
262 */
263 public static class Matcher extends BaseMatcher<X_inv11_incOver100.Match> {
264 /**
265 * Initializes the pattern matcher within an existing VIATRA Query engine.
266 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
267 *
268 * @param engine the existing VIATRA Query engine in which this matcher will be created.
269 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
270 *
271 */
272 public static X_inv11_incOver100.Matcher on(final ViatraQueryEngine engine) {
273 // check if matcher already exists
274 Matcher matcher = engine.getExistingMatcher(querySpecification());
275 if (matcher == null) {
276 matcher = (Matcher)engine.getMatcher(querySpecification());
277 }
278 return matcher;
279 }
280
281 /**
282 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
283 * @return an initialized matcher
284 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
285 *
286 */
287 public static X_inv11_incOver100.Matcher create() {
288 return new Matcher();
289 }
290
291 private static final int POSITION_EXP = 0;
292
293 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv11_incOver100.Matcher.class);
294
295 /**
296 * Initializes the pattern matcher within an existing VIATRA Query engine.
297 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
298 *
299 * @param engine the existing VIATRA Query engine in which this matcher will be created.
300 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
301 *
302 */
303 private Matcher() {
304 super(querySpecification());
305 }
306
307 /**
308 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
309 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
310 * @return matches represented as a Match object.
311 *
312 */
313 public Collection<X_inv11_incOver100.Match> getAllMatches(final Expense pExp) {
314 return rawStreamAllMatches(new Object[]{pExp}).collect(Collectors.toSet());
315 }
316
317 /**
318 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
319 * </p>
320 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
321 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
322 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
323 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
324 * @return a stream of matches represented as a Match object.
325 *
326 */
327 public Stream<X_inv11_incOver100.Match> streamAllMatches(final Expense pExp) {
328 return rawStreamAllMatches(new Object[]{pExp});
329 }
330
331 /**
332 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
333 * Neither determinism nor randomness of selection is guaranteed.
334 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
335 * @return a match represented as a Match object, or null if no match is found.
336 *
337 */
338 public Optional<X_inv11_incOver100.Match> getOneArbitraryMatch(final Expense pExp) {
339 return rawGetOneArbitraryMatch(new Object[]{pExp});
340 }
341
342 /**
343 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
344 * under any possible substitution of the unspecified parameters (if any).
345 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
346 * @return true if the input is a valid (partial) match of the pattern.
347 *
348 */
349 public boolean hasMatch(final Expense pExp) {
350 return rawHasMatch(new Object[]{pExp});
351 }
352
353 /**
354 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
355 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
356 * @return the number of pattern matches found.
357 *
358 */
359 public int countMatches(final Expense pExp) {
360 return rawCountMatches(new Object[]{pExp});
361 }
362
363 /**
364 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
365 * Neither determinism nor randomness of selection is guaranteed.
366 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
367 * @param processor the action that will process the selected match.
368 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
369 *
370 */
371 public boolean forOneArbitraryMatch(final Expense pExp, final Consumer<? super X_inv11_incOver100.Match> processor) {
372 return rawForOneArbitraryMatch(new Object[]{pExp}, processor);
373 }
374
375 /**
376 * Returns a new (partial) match.
377 * This can be used e.g. to call the matcher with a partial match.
378 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
379 * @param pExp the fixed value of pattern parameter exp, or null if not bound.
380 * @return the (partial) match object.
381 *
382 */
383 public X_inv11_incOver100.Match newMatch(final Expense pExp) {
384 return X_inv11_incOver100.Match.newMatch(pExp);
385 }
386
387 /**
388 * Retrieve the set of values that occur in matches for exp.
389 * @return the Set of all values or empty set if there are no matches
390 *
391 */
392 protected Stream<Expense> rawStreamAllValuesOfexp(final Object[] parameters) {
393 return rawStreamAllValues(POSITION_EXP, parameters).map(Expense.class::cast);
394 }
395
396 /**
397 * Retrieve the set of values that occur in matches for exp.
398 * @return the Set of all values or empty set if there are no matches
399 *
400 */
401 public Set<Expense> getAllValuesOfexp() {
402 return rawStreamAllValuesOfexp(emptyArray()).collect(Collectors.toSet());
403 }
404
405 /**
406 * Retrieve the set of values that occur in matches for exp.
407 * @return the Set of all values or empty set if there are no matches
408 *
409 */
410 public Stream<Expense> streamAllValuesOfexp() {
411 return rawStreamAllValuesOfexp(emptyArray());
412 }
413
414 @Override
415 protected X_inv11_incOver100.Match tupleToMatch(final Tuple t) {
416 try {
417 return X_inv11_incOver100.Match.newMatch((Expense) t.get(POSITION_EXP));
418 } catch(ClassCastException e) {
419 LOGGER.error("Element(s) in tuple not properly typed!",e);
420 return null;
421 }
422 }
423
424 @Override
425 protected X_inv11_incOver100.Match arrayToMatch(final Object[] match) {
426 try {
427 return X_inv11_incOver100.Match.newMatch((Expense) match[POSITION_EXP]);
428 } catch(ClassCastException e) {
429 LOGGER.error("Element(s) in array not properly typed!",e);
430 return null;
431 }
432 }
433
434 @Override
435 protected X_inv11_incOver100.Match arrayToMatchMutable(final Object[] match) {
436 try {
437 return X_inv11_incOver100.Match.newMutableMatch((Expense) match[POSITION_EXP]);
438 } catch(ClassCastException e) {
439 LOGGER.error("Element(s) in array not properly typed!",e);
440 return null;
441 }
442 }
443
444 /**
445 * @return the singleton instance of the query specification of this pattern
446 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
447 *
448 */
449 public static IQuerySpecification<X_inv11_incOver100.Matcher> querySpecification() {
450 return X_inv11_incOver100.instance();
451 }
452 }
453
454 private X_inv11_incOver100() {
455 super(GeneratedPQuery.INSTANCE);
456 }
457
458 /**
459 * @return the singleton instance of the query specification
460 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
461 *
462 */
463 public static X_inv11_incOver100 instance() {
464 try{
465 return LazyHolder.INSTANCE;
466 } catch (ExceptionInInitializerError err) {
467 throw processInitializerError(err);
468 }
469 }
470
471 @Override
472 protected X_inv11_incOver100.Matcher instantiate(final ViatraQueryEngine engine) {
473 return X_inv11_incOver100.Matcher.on(engine);
474 }
475
476 @Override
477 public X_inv11_incOver100.Matcher instantiate() {
478 return X_inv11_incOver100.Matcher.create();
479 }
480
481 @Override
482 public X_inv11_incOver100.Match newEmptyMatch() {
483 return X_inv11_incOver100.Match.newEmptyMatch();
484 }
485
486 @Override
487 public X_inv11_incOver100.Match newMatch(final Object... parameters) {
488 return X_inv11_incOver100.Match.newMatch((Taxation.Expense) parameters[0]);
489 }
490
491 /**
492 * Inner class allowing the singleton instance of {@link X_inv11_incOver100} to be created
493 * <b>not</b> at the class load time of the outer class,
494 * but rather at the first call to {@link X_inv11_incOver100#instance()}.
495 *
496 * <p> This workaround is required e.g. to support recursion.
497 *
498 */
499 private static class LazyHolder {
500 private static final X_inv11_incOver100 INSTANCE = new X_inv11_incOver100();
501
502 /**
503 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
504 * This initialization order is required to support indirect recursion.
505 *
506 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
507 *
508 */
509 private static final Object STATIC_INITIALIZER = ensureInitialized();
510
511 public static Object ensureInitialized() {
512 INSTANCE.ensureInitializedInternal();
513 return null;
514 }
515 }
516
517 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
518 private static final X_inv11_incOver100.GeneratedPQuery INSTANCE = new GeneratedPQuery();
519
520 private final PParameter parameter_exp = new PParameter("exp", "Taxation.Expense", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Expense")), PParameterDirection.INOUT);
521
522 private final List<PParameter> parameters = Arrays.asList(parameter_exp);
523
524 private GeneratedPQuery() {
525 super(PVisibility.PUBLIC);
526 }
527
528 @Override
529 public String getFullyQualifiedName() {
530 return "queries.x_inv11_incOver100";
531 }
532
533 @Override
534 public List<String> getParameterNames() {
535 return Arrays.asList("exp");
536 }
537
538 @Override
539 public List<PParameter> getParameters() {
540 return parameters;
541 }
542
543 @Override
544 public Set<PBody> doGetContainedBodies() {
545 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
546 Set<PBody> bodies = new LinkedHashSet<>();
547 {
548 PBody body = new PBody(this);
549 PVariable var_exp = body.getOrCreateVariableByName("exp");
550 PVariable var_incVal = body.getOrCreateVariableByName("incVal");
551 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
552 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
553 new ExportedParameter(body, var_exp, parameter_exp)
554 ));
555 // Expense.income.income_amount(exp, incVal)
556 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
557 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
558 new TypeConstraint(body, Tuples.flatTupleOf(var_exp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Expense", "income")));
559 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Income")));
560 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
561 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Income", "income_amount")));
562 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
563 new Equality(body, var__virtual_1_, var_incVal);
564 // check(incVal / 2 > 50)
565 new ExpressionEvaluation(body, new IExpressionEvaluator() {
566
567 @Override
568 public String getShortDescription() {
569 return "Expression evaluation from pattern x_inv11_incOver100";
570 }
571
572 @Override
573 public Iterable<String> getInputParameterNames() {
574 return Arrays.asList("incVal");}
575
576 @Override
577 public Object evaluateExpression(IValueProvider provider) throws Exception {
578 Double incVal = (Double) provider.getValue("incVal");
579 return evaluateExpression_1_1(incVal);
580 }
581 }, null);
582 bodies.add(body);
583 }
584 {
585 PBody body = new PBody(this);
586 PVariable var_exp = body.getOrCreateVariableByName("exp");
587 PVariable var_decl = body.getOrCreateVariableByName("decl");
588 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
589 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
590 new ExportedParameter(body, var_exp, parameter_exp)
591 ));
592 // Expense.declared_amount(exp, decl)
593 new TypeConstraint(body, Tuples.flatTupleOf(var_exp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Expense")));
594 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
595 new TypeConstraint(body, Tuples.flatTupleOf(var_exp, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Expense", "declared_amount")));
596 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
597 new Equality(body, var__virtual_0_, var_decl);
598 // check(decl != 50)
599 new ExpressionEvaluation(body, new IExpressionEvaluator() {
600
601 @Override
602 public String getShortDescription() {
603 return "Expression evaluation from pattern x_inv11_incOver100";
604 }
605
606 @Override
607 public Iterable<String> getInputParameterNames() {
608 return Arrays.asList("decl");}
609
610 @Override
611 public Object evaluateExpression(IValueProvider provider) throws Exception {
612 Double decl = (Double) provider.getValue("decl");
613 return evaluateExpression_2_1(decl);
614 }
615 }, null);
616 bodies.add(body);
617 }
618 return bodies;
619 }
620 }
621
622 private static boolean evaluateExpression_1_1(final Double incVal) {
623 return (((incVal).doubleValue() / 2) > 50);
624 }
625
626 private static boolean evaluateExpression_2_1(final Double decl) {
627 return ((decl).doubleValue() != 50);
628 }
629}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java
new file mode 100644
index 00000000..1c0e5109
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notNonRes.java
@@ -0,0 +1,543 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Non_Resident_Tax_Payer;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
34import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
35import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
36import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
37
38/**
39 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
40 *
41 * <p>Original source:
42 * <code><pre>
43 * pattern x_inv12_notNonRes(tp : Non_Resident_Tax_Payer) {
44 * Non_Resident_Tax_Payer(tp);
45 * }
46 * </pre></code>
47 *
48 * @see Matcher
49 * @see Match
50 *
51 */
52@SuppressWarnings("all")
53public final class X_inv12_notNonRes extends BaseGeneratedEMFQuerySpecification<X_inv12_notNonRes.Matcher> {
54 /**
55 * Pattern-specific match representation of the queries.x_inv12_notNonRes pattern,
56 * to be used in conjunction with {@link Matcher}.
57 *
58 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
59 * Each instance is a (possibly partial) substitution of pattern parameters,
60 * usable to represent a match of the pattern in the result of a query,
61 * or to specify the bound (fixed) input parameters when issuing a query.
62 *
63 * @see Matcher
64 *
65 */
66 public static abstract class Match extends BasePatternMatch {
67 private Non_Resident_Tax_Payer fTp;
68
69 private static List<String> parameterNames = makeImmutableList("tp");
70
71 private Match(final Non_Resident_Tax_Payer pTp) {
72 this.fTp = pTp;
73 }
74
75 @Override
76 public Object get(final String parameterName) {
77 switch(parameterName) {
78 case "tp": return this.fTp;
79 default: return null;
80 }
81 }
82
83 @Override
84 public Object get(final int index) {
85 switch(index) {
86 case 0: return this.fTp;
87 default: return null;
88 }
89 }
90
91 public Non_Resident_Tax_Payer getTp() {
92 return this.fTp;
93 }
94
95 @Override
96 public boolean set(final String parameterName, final Object newValue) {
97 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
98 if ("tp".equals(parameterName) ) {
99 this.fTp = (Non_Resident_Tax_Payer) newValue;
100 return true;
101 }
102 return false;
103 }
104
105 public void setTp(final Non_Resident_Tax_Payer pTp) {
106 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
107 this.fTp = pTp;
108 }
109
110 @Override
111 public String patternName() {
112 return "queries.x_inv12_notNonRes";
113 }
114
115 @Override
116 public List<String> parameterNames() {
117 return X_inv12_notNonRes.Match.parameterNames;
118 }
119
120 @Override
121 public Object[] toArray() {
122 return new Object[]{fTp};
123 }
124
125 @Override
126 public X_inv12_notNonRes.Match toImmutable() {
127 return isMutable() ? newMatch(fTp) : this;
128 }
129
130 @Override
131 public String prettyPrint() {
132 StringBuilder result = new StringBuilder();
133 result.append("\"tp\"=" + prettyPrintValue(fTp));
134 return result.toString();
135 }
136
137 @Override
138 public int hashCode() {
139 return Objects.hash(fTp);
140 }
141
142 @Override
143 public boolean equals(final Object obj) {
144 if (this == obj)
145 return true;
146 if (obj == null) {
147 return false;
148 }
149 if ((obj instanceof X_inv12_notNonRes.Match)) {
150 X_inv12_notNonRes.Match other = (X_inv12_notNonRes.Match) obj;
151 return Objects.equals(fTp, other.fTp);
152 } else {
153 // this should be infrequent
154 if (!(obj instanceof IPatternMatch)) {
155 return false;
156 }
157 IPatternMatch otherSig = (IPatternMatch) obj;
158 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
159 }
160 }
161
162 @Override
163 public X_inv12_notNonRes specification() {
164 return X_inv12_notNonRes.instance();
165 }
166
167 /**
168 * Returns an empty, mutable match.
169 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
170 *
171 * @return the empty match.
172 *
173 */
174 public static X_inv12_notNonRes.Match newEmptyMatch() {
175 return new Mutable(null);
176 }
177
178 /**
179 * Returns a mutable (partial) match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
183 * @return the new, mutable (partial) match object.
184 *
185 */
186 public static X_inv12_notNonRes.Match newMutableMatch(final Non_Resident_Tax_Payer pTp) {
187 return new Mutable(pTp);
188 }
189
190 /**
191 * Returns a new (partial) match.
192 * This can be used e.g. to call the matcher with a partial match.
193 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
194 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
195 * @return the (partial) match object.
196 *
197 */
198 public static X_inv12_notNonRes.Match newMatch(final Non_Resident_Tax_Payer pTp) {
199 return new Immutable(pTp);
200 }
201
202 private static final class Mutable extends X_inv12_notNonRes.Match {
203 Mutable(final Non_Resident_Tax_Payer pTp) {
204 super(pTp);
205 }
206
207 @Override
208 public boolean isMutable() {
209 return true;
210 }
211 }
212
213 private static final class Immutable extends X_inv12_notNonRes.Match {
214 Immutable(final Non_Resident_Tax_Payer pTp) {
215 super(pTp);
216 }
217
218 @Override
219 public boolean isMutable() {
220 return false;
221 }
222 }
223 }
224
225 /**
226 * Generated pattern matcher API of the queries.x_inv12_notNonRes pattern,
227 * providing pattern-specific query methods.
228 *
229 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
230 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
231 *
232 * <p>Matches of the pattern will be represented as {@link Match}.
233 *
234 * <p>Original source:
235 * <code><pre>
236 * pattern x_inv12_notNonRes(tp : Non_Resident_Tax_Payer) {
237 * Non_Resident_Tax_Payer(tp);
238 * }
239 * </pre></code>
240 *
241 * @see Match
242 * @see X_inv12_notNonRes
243 *
244 */
245 public static class Matcher extends BaseMatcher<X_inv12_notNonRes.Match> {
246 /**
247 * Initializes the pattern matcher within an existing VIATRA Query engine.
248 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
249 *
250 * @param engine the existing VIATRA Query engine in which this matcher will be created.
251 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
252 *
253 */
254 public static X_inv12_notNonRes.Matcher on(final ViatraQueryEngine engine) {
255 // check if matcher already exists
256 Matcher matcher = engine.getExistingMatcher(querySpecification());
257 if (matcher == null) {
258 matcher = (Matcher)engine.getMatcher(querySpecification());
259 }
260 return matcher;
261 }
262
263 /**
264 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
265 * @return an initialized matcher
266 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
267 *
268 */
269 public static X_inv12_notNonRes.Matcher create() {
270 return new Matcher();
271 }
272
273 private static final int POSITION_TP = 0;
274
275 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv12_notNonRes.Matcher.class);
276
277 /**
278 * Initializes the pattern matcher within an existing VIATRA Query engine.
279 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
280 *
281 * @param engine the existing VIATRA Query engine in which this matcher will be created.
282 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
283 *
284 */
285 private Matcher() {
286 super(querySpecification());
287 }
288
289 /**
290 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
291 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
292 * @return matches represented as a Match object.
293 *
294 */
295 public Collection<X_inv12_notNonRes.Match> getAllMatches(final Non_Resident_Tax_Payer pTp) {
296 return rawStreamAllMatches(new Object[]{pTp}).collect(Collectors.toSet());
297 }
298
299 /**
300 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
301 * </p>
302 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
303 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
304 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
305 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
306 * @return a stream of matches represented as a Match object.
307 *
308 */
309 public Stream<X_inv12_notNonRes.Match> streamAllMatches(final Non_Resident_Tax_Payer pTp) {
310 return rawStreamAllMatches(new Object[]{pTp});
311 }
312
313 /**
314 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
315 * Neither determinism nor randomness of selection is guaranteed.
316 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
317 * @return a match represented as a Match object, or null if no match is found.
318 *
319 */
320 public Optional<X_inv12_notNonRes.Match> getOneArbitraryMatch(final Non_Resident_Tax_Payer pTp) {
321 return rawGetOneArbitraryMatch(new Object[]{pTp});
322 }
323
324 /**
325 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
326 * under any possible substitution of the unspecified parameters (if any).
327 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
328 * @return true if the input is a valid (partial) match of the pattern.
329 *
330 */
331 public boolean hasMatch(final Non_Resident_Tax_Payer pTp) {
332 return rawHasMatch(new Object[]{pTp});
333 }
334
335 /**
336 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
337 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
338 * @return the number of pattern matches found.
339 *
340 */
341 public int countMatches(final Non_Resident_Tax_Payer pTp) {
342 return rawCountMatches(new Object[]{pTp});
343 }
344
345 /**
346 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
347 * Neither determinism nor randomness of selection is guaranteed.
348 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
349 * @param processor the action that will process the selected match.
350 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
351 *
352 */
353 public boolean forOneArbitraryMatch(final Non_Resident_Tax_Payer pTp, final Consumer<? super X_inv12_notNonRes.Match> processor) {
354 return rawForOneArbitraryMatch(new Object[]{pTp}, processor);
355 }
356
357 /**
358 * Returns a new (partial) match.
359 * This can be used e.g. to call the matcher with a partial match.
360 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
361 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
362 * @return the (partial) match object.
363 *
364 */
365 public X_inv12_notNonRes.Match newMatch(final Non_Resident_Tax_Payer pTp) {
366 return X_inv12_notNonRes.Match.newMatch(pTp);
367 }
368
369 /**
370 * Retrieve the set of values that occur in matches for tp.
371 * @return the Set of all values or empty set if there are no matches
372 *
373 */
374 protected Stream<Non_Resident_Tax_Payer> rawStreamAllValuesOftp(final Object[] parameters) {
375 return rawStreamAllValues(POSITION_TP, parameters).map(Non_Resident_Tax_Payer.class::cast);
376 }
377
378 /**
379 * Retrieve the set of values that occur in matches for tp.
380 * @return the Set of all values or empty set if there are no matches
381 *
382 */
383 public Set<Non_Resident_Tax_Payer> getAllValuesOftp() {
384 return rawStreamAllValuesOftp(emptyArray()).collect(Collectors.toSet());
385 }
386
387 /**
388 * Retrieve the set of values that occur in matches for tp.
389 * @return the Set of all values or empty set if there are no matches
390 *
391 */
392 public Stream<Non_Resident_Tax_Payer> streamAllValuesOftp() {
393 return rawStreamAllValuesOftp(emptyArray());
394 }
395
396 @Override
397 protected X_inv12_notNonRes.Match tupleToMatch(final Tuple t) {
398 try {
399 return X_inv12_notNonRes.Match.newMatch((Non_Resident_Tax_Payer) t.get(POSITION_TP));
400 } catch(ClassCastException e) {
401 LOGGER.error("Element(s) in tuple not properly typed!",e);
402 return null;
403 }
404 }
405
406 @Override
407 protected X_inv12_notNonRes.Match arrayToMatch(final Object[] match) {
408 try {
409 return X_inv12_notNonRes.Match.newMatch((Non_Resident_Tax_Payer) match[POSITION_TP]);
410 } catch(ClassCastException e) {
411 LOGGER.error("Element(s) in array not properly typed!",e);
412 return null;
413 }
414 }
415
416 @Override
417 protected X_inv12_notNonRes.Match arrayToMatchMutable(final Object[] match) {
418 try {
419 return X_inv12_notNonRes.Match.newMutableMatch((Non_Resident_Tax_Payer) match[POSITION_TP]);
420 } catch(ClassCastException e) {
421 LOGGER.error("Element(s) in array not properly typed!",e);
422 return null;
423 }
424 }
425
426 /**
427 * @return the singleton instance of the query specification of this pattern
428 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
429 *
430 */
431 public static IQuerySpecification<X_inv12_notNonRes.Matcher> querySpecification() {
432 return X_inv12_notNonRes.instance();
433 }
434 }
435
436 private X_inv12_notNonRes() {
437 super(GeneratedPQuery.INSTANCE);
438 }
439
440 /**
441 * @return the singleton instance of the query specification
442 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
443 *
444 */
445 public static X_inv12_notNonRes instance() {
446 try{
447 return LazyHolder.INSTANCE;
448 } catch (ExceptionInInitializerError err) {
449 throw processInitializerError(err);
450 }
451 }
452
453 @Override
454 protected X_inv12_notNonRes.Matcher instantiate(final ViatraQueryEngine engine) {
455 return X_inv12_notNonRes.Matcher.on(engine);
456 }
457
458 @Override
459 public X_inv12_notNonRes.Matcher instantiate() {
460 return X_inv12_notNonRes.Matcher.create();
461 }
462
463 @Override
464 public X_inv12_notNonRes.Match newEmptyMatch() {
465 return X_inv12_notNonRes.Match.newEmptyMatch();
466 }
467
468 @Override
469 public X_inv12_notNonRes.Match newMatch(final Object... parameters) {
470 return X_inv12_notNonRes.Match.newMatch((Taxation.Non_Resident_Tax_Payer) parameters[0]);
471 }
472
473 /**
474 * Inner class allowing the singleton instance of {@link X_inv12_notNonRes} to be created
475 * <b>not</b> at the class load time of the outer class,
476 * but rather at the first call to {@link X_inv12_notNonRes#instance()}.
477 *
478 * <p> This workaround is required e.g. to support recursion.
479 *
480 */
481 private static class LazyHolder {
482 private static final X_inv12_notNonRes INSTANCE = new X_inv12_notNonRes();
483
484 /**
485 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
486 * This initialization order is required to support indirect recursion.
487 *
488 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
489 *
490 */
491 private static final Object STATIC_INITIALIZER = ensureInitialized();
492
493 public static Object ensureInitialized() {
494 INSTANCE.ensureInitializedInternal();
495 return null;
496 }
497 }
498
499 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
500 private static final X_inv12_notNonRes.GeneratedPQuery INSTANCE = new GeneratedPQuery();
501
502 private final PParameter parameter_tp;
503
504 private final List<PParameter> parameters = Arrays.asList(parameter_tp);
505
506 private GeneratedPQuery() {
507 super(PVisibility.PUBLIC);
508 }
509
510 @Override
511 public String getFullyQualifiedName() {
512 return "queries.x_inv12_notNonRes";
513 }
514
515 @Override
516 public List<String> getParameterNames() {
517 return Arrays.asList("tp");
518 }
519
520 @Override
521 public List<PParameter> getParameters() {
522 return parameters;
523 }
524
525 @Override
526 public Set<PBody> doGetContainedBodies() {
527 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
528 Set<PBody> bodies = new LinkedHashSet<>();
529 {
530 PBody body = new PBody(this);
531 PVariable var_tp = body.getOrCreateVariableByName("tp");
532 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Non_Resident_Tax_Payer")));
533 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
534 new ExportedParameter(body, var_tp, parameter_tp)
535 ));
536 // Non_Resident_Tax_Payer(tp)
537 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Non_Resident_Tax_Payer")));
538 bodies.add(body);
539 }
540 return bodies;
541 }
542 }
543}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java
new file mode 100644
index 00000000..68a4098f
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv12_notZZ.java
@@ -0,0 +1,555 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Habitual_Address;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * pattern x_inv12_notZZ(hab_add : Habitual_Address) {
50 * Address.country(hab_add, ::ZZ);
51 * }
52 * </pre></code>
53 *
54 * @see Matcher
55 * @see Match
56 *
57 */
58@SuppressWarnings("all")
59public final class X_inv12_notZZ extends BaseGeneratedEMFQuerySpecification<X_inv12_notZZ.Matcher> {
60 /**
61 * Pattern-specific match representation of the queries.x_inv12_notZZ pattern,
62 * to be used in conjunction with {@link Matcher}.
63 *
64 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
65 * Each instance is a (possibly partial) substitution of pattern parameters,
66 * usable to represent a match of the pattern in the result of a query,
67 * or to specify the bound (fixed) input parameters when issuing a query.
68 *
69 * @see Matcher
70 *
71 */
72 public static abstract class Match extends BasePatternMatch {
73 private Habitual_Address fHab_add;
74
75 private static List<String> parameterNames = makeImmutableList("hab_add");
76
77 private Match(final Habitual_Address pHab_add) {
78 this.fHab_add = pHab_add;
79 }
80
81 @Override
82 public Object get(final String parameterName) {
83 switch(parameterName) {
84 case "hab_add": return this.fHab_add;
85 default: return null;
86 }
87 }
88
89 @Override
90 public Object get(final int index) {
91 switch(index) {
92 case 0: return this.fHab_add;
93 default: return null;
94 }
95 }
96
97 public Habitual_Address getHab_add() {
98 return this.fHab_add;
99 }
100
101 @Override
102 public boolean set(final String parameterName, final Object newValue) {
103 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
104 if ("hab_add".equals(parameterName) ) {
105 this.fHab_add = (Habitual_Address) newValue;
106 return true;
107 }
108 return false;
109 }
110
111 public void setHab_add(final Habitual_Address pHab_add) {
112 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
113 this.fHab_add = pHab_add;
114 }
115
116 @Override
117 public String patternName() {
118 return "queries.x_inv12_notZZ";
119 }
120
121 @Override
122 public List<String> parameterNames() {
123 return X_inv12_notZZ.Match.parameterNames;
124 }
125
126 @Override
127 public Object[] toArray() {
128 return new Object[]{fHab_add};
129 }
130
131 @Override
132 public X_inv12_notZZ.Match toImmutable() {
133 return isMutable() ? newMatch(fHab_add) : this;
134 }
135
136 @Override
137 public String prettyPrint() {
138 StringBuilder result = new StringBuilder();
139 result.append("\"hab_add\"=" + prettyPrintValue(fHab_add));
140 return result.toString();
141 }
142
143 @Override
144 public int hashCode() {
145 return Objects.hash(fHab_add);
146 }
147
148 @Override
149 public boolean equals(final Object obj) {
150 if (this == obj)
151 return true;
152 if (obj == null) {
153 return false;
154 }
155 if ((obj instanceof X_inv12_notZZ.Match)) {
156 X_inv12_notZZ.Match other = (X_inv12_notZZ.Match) obj;
157 return Objects.equals(fHab_add, other.fHab_add);
158 } else {
159 // this should be infrequent
160 if (!(obj instanceof IPatternMatch)) {
161 return false;
162 }
163 IPatternMatch otherSig = (IPatternMatch) obj;
164 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
165 }
166 }
167
168 @Override
169 public X_inv12_notZZ specification() {
170 return X_inv12_notZZ.instance();
171 }
172
173 /**
174 * Returns an empty, mutable match.
175 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
176 *
177 * @return the empty match.
178 *
179 */
180 public static X_inv12_notZZ.Match newEmptyMatch() {
181 return new Mutable(null);
182 }
183
184 /**
185 * Returns a mutable (partial) match.
186 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
187 *
188 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
189 * @return the new, mutable (partial) match object.
190 *
191 */
192 public static X_inv12_notZZ.Match newMutableMatch(final Habitual_Address pHab_add) {
193 return new Mutable(pHab_add);
194 }
195
196 /**
197 * Returns a new (partial) match.
198 * This can be used e.g. to call the matcher with a partial match.
199 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
200 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
201 * @return the (partial) match object.
202 *
203 */
204 public static X_inv12_notZZ.Match newMatch(final Habitual_Address pHab_add) {
205 return new Immutable(pHab_add);
206 }
207
208 private static final class Mutable extends X_inv12_notZZ.Match {
209 Mutable(final Habitual_Address pHab_add) {
210 super(pHab_add);
211 }
212
213 @Override
214 public boolean isMutable() {
215 return true;
216 }
217 }
218
219 private static final class Immutable extends X_inv12_notZZ.Match {
220 Immutable(final Habitual_Address pHab_add) {
221 super(pHab_add);
222 }
223
224 @Override
225 public boolean isMutable() {
226 return false;
227 }
228 }
229 }
230
231 /**
232 * Generated pattern matcher API of the queries.x_inv12_notZZ pattern,
233 * providing pattern-specific query methods.
234 *
235 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
236 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
237 *
238 * <p>Matches of the pattern will be represented as {@link Match}.
239 *
240 * <p>Original source:
241 * <code><pre>
242 * pattern x_inv12_notZZ(hab_add : Habitual_Address) {
243 * Address.country(hab_add, ::ZZ);
244 * }
245 * </pre></code>
246 *
247 * @see Match
248 * @see X_inv12_notZZ
249 *
250 */
251 public static class Matcher extends BaseMatcher<X_inv12_notZZ.Match> {
252 /**
253 * Initializes the pattern matcher within an existing VIATRA Query engine.
254 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
255 *
256 * @param engine the existing VIATRA Query engine in which this matcher will be created.
257 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
258 *
259 */
260 public static X_inv12_notZZ.Matcher on(final ViatraQueryEngine engine) {
261 // check if matcher already exists
262 Matcher matcher = engine.getExistingMatcher(querySpecification());
263 if (matcher == null) {
264 matcher = (Matcher)engine.getMatcher(querySpecification());
265 }
266 return matcher;
267 }
268
269 /**
270 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
271 * @return an initialized matcher
272 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
273 *
274 */
275 public static X_inv12_notZZ.Matcher create() {
276 return new Matcher();
277 }
278
279 private static final int POSITION_HAB_ADD = 0;
280
281 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv12_notZZ.Matcher.class);
282
283 /**
284 * Initializes the pattern matcher within an existing VIATRA Query engine.
285 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
286 *
287 * @param engine the existing VIATRA Query engine in which this matcher will be created.
288 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
289 *
290 */
291 private Matcher() {
292 super(querySpecification());
293 }
294
295 /**
296 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
297 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
298 * @return matches represented as a Match object.
299 *
300 */
301 public Collection<X_inv12_notZZ.Match> getAllMatches(final Habitual_Address pHab_add) {
302 return rawStreamAllMatches(new Object[]{pHab_add}).collect(Collectors.toSet());
303 }
304
305 /**
306 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
307 * </p>
308 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
309 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
310 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
311 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
312 * @return a stream of matches represented as a Match object.
313 *
314 */
315 public Stream<X_inv12_notZZ.Match> streamAllMatches(final Habitual_Address pHab_add) {
316 return rawStreamAllMatches(new Object[]{pHab_add});
317 }
318
319 /**
320 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
321 * Neither determinism nor randomness of selection is guaranteed.
322 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
323 * @return a match represented as a Match object, or null if no match is found.
324 *
325 */
326 public Optional<X_inv12_notZZ.Match> getOneArbitraryMatch(final Habitual_Address pHab_add) {
327 return rawGetOneArbitraryMatch(new Object[]{pHab_add});
328 }
329
330 /**
331 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
332 * under any possible substitution of the unspecified parameters (if any).
333 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
334 * @return true if the input is a valid (partial) match of the pattern.
335 *
336 */
337 public boolean hasMatch(final Habitual_Address pHab_add) {
338 return rawHasMatch(new Object[]{pHab_add});
339 }
340
341 /**
342 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
343 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
344 * @return the number of pattern matches found.
345 *
346 */
347 public int countMatches(final Habitual_Address pHab_add) {
348 return rawCountMatches(new Object[]{pHab_add});
349 }
350
351 /**
352 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
353 * Neither determinism nor randomness of selection is guaranteed.
354 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
355 * @param processor the action that will process the selected match.
356 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
357 *
358 */
359 public boolean forOneArbitraryMatch(final Habitual_Address pHab_add, final Consumer<? super X_inv12_notZZ.Match> processor) {
360 return rawForOneArbitraryMatch(new Object[]{pHab_add}, processor);
361 }
362
363 /**
364 * Returns a new (partial) match.
365 * This can be used e.g. to call the matcher with a partial match.
366 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
367 * @param pHab_add the fixed value of pattern parameter hab_add, or null if not bound.
368 * @return the (partial) match object.
369 *
370 */
371 public X_inv12_notZZ.Match newMatch(final Habitual_Address pHab_add) {
372 return X_inv12_notZZ.Match.newMatch(pHab_add);
373 }
374
375 /**
376 * Retrieve the set of values that occur in matches for hab_add.
377 * @return the Set of all values or empty set if there are no matches
378 *
379 */
380 protected Stream<Habitual_Address> rawStreamAllValuesOfhab_add(final Object[] parameters) {
381 return rawStreamAllValues(POSITION_HAB_ADD, parameters).map(Habitual_Address.class::cast);
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for hab_add.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 public Set<Habitual_Address> getAllValuesOfhab_add() {
390 return rawStreamAllValuesOfhab_add(emptyArray()).collect(Collectors.toSet());
391 }
392
393 /**
394 * Retrieve the set of values that occur in matches for hab_add.
395 * @return the Set of all values or empty set if there are no matches
396 *
397 */
398 public Stream<Habitual_Address> streamAllValuesOfhab_add() {
399 return rawStreamAllValuesOfhab_add(emptyArray());
400 }
401
402 @Override
403 protected X_inv12_notZZ.Match tupleToMatch(final Tuple t) {
404 try {
405 return X_inv12_notZZ.Match.newMatch((Habitual_Address) t.get(POSITION_HAB_ADD));
406 } catch(ClassCastException e) {
407 LOGGER.error("Element(s) in tuple not properly typed!",e);
408 return null;
409 }
410 }
411
412 @Override
413 protected X_inv12_notZZ.Match arrayToMatch(final Object[] match) {
414 try {
415 return X_inv12_notZZ.Match.newMatch((Habitual_Address) match[POSITION_HAB_ADD]);
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in array not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected X_inv12_notZZ.Match arrayToMatchMutable(final Object[] match) {
424 try {
425 return X_inv12_notZZ.Match.newMutableMatch((Habitual_Address) match[POSITION_HAB_ADD]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 /**
433 * @return the singleton instance of the query specification of this pattern
434 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
435 *
436 */
437 public static IQuerySpecification<X_inv12_notZZ.Matcher> querySpecification() {
438 return X_inv12_notZZ.instance();
439 }
440 }
441
442 private X_inv12_notZZ() {
443 super(GeneratedPQuery.INSTANCE);
444 }
445
446 /**
447 * @return the singleton instance of the query specification
448 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
449 *
450 */
451 public static X_inv12_notZZ instance() {
452 try{
453 return LazyHolder.INSTANCE;
454 } catch (ExceptionInInitializerError err) {
455 throw processInitializerError(err);
456 }
457 }
458
459 @Override
460 protected X_inv12_notZZ.Matcher instantiate(final ViatraQueryEngine engine) {
461 return X_inv12_notZZ.Matcher.on(engine);
462 }
463
464 @Override
465 public X_inv12_notZZ.Matcher instantiate() {
466 return X_inv12_notZZ.Matcher.create();
467 }
468
469 @Override
470 public X_inv12_notZZ.Match newEmptyMatch() {
471 return X_inv12_notZZ.Match.newEmptyMatch();
472 }
473
474 @Override
475 public X_inv12_notZZ.Match newMatch(final Object... parameters) {
476 return X_inv12_notZZ.Match.newMatch((Taxation.Habitual_Address) parameters[0]);
477 }
478
479 /**
480 * Inner class allowing the singleton instance of {@link X_inv12_notZZ} to be created
481 * <b>not</b> at the class load time of the outer class,
482 * but rather at the first call to {@link X_inv12_notZZ#instance()}.
483 *
484 * <p> This workaround is required e.g. to support recursion.
485 *
486 */
487 private static class LazyHolder {
488 private static final X_inv12_notZZ INSTANCE = new X_inv12_notZZ();
489
490 /**
491 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
492 * This initialization order is required to support indirect recursion.
493 *
494 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
495 *
496 */
497 private static final Object STATIC_INITIALIZER = ensureInitialized();
498
499 public static Object ensureInitialized() {
500 INSTANCE.ensureInitializedInternal();
501 return null;
502 }
503 }
504
505 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
506 private static final X_inv12_notZZ.GeneratedPQuery INSTANCE = new GeneratedPQuery();
507
508 private final PParameter parameter_hab_add = new PParameter("hab_add", "Taxation.Habitual_Address", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Habitual_Address")), PParameterDirection.INOUT);
509
510 private final List<PParameter> parameters = Arrays.asList(parameter_hab_add);
511
512 private GeneratedPQuery() {
513 super(PVisibility.PUBLIC);
514 }
515
516 @Override
517 public String getFullyQualifiedName() {
518 return "queries.x_inv12_notZZ";
519 }
520
521 @Override
522 public List<String> getParameterNames() {
523 return Arrays.asList("hab_add");
524 }
525
526 @Override
527 public List<PParameter> getParameters() {
528 return parameters;
529 }
530
531 @Override
532 public Set<PBody> doGetContainedBodies() {
533 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
534 Set<PBody> bodies = new LinkedHashSet<>();
535 {
536 PBody body = new PBody(this);
537 PVariable var_hab_add = body.getOrCreateVariableByName("hab_add");
538 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Habitual_Address")));
539 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
540 new ExportedParameter(body, var_hab_add, parameter_hab_add)
541 ));
542 // Address.country(hab_add, ::ZZ)
543 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
544 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http:///TaxCard.ecore", "Country", "ZZ").getInstance());
545 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Address")));
546 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
547 new TypeConstraint(body, Tuples.flatTupleOf(var_hab_add, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Address", "country")));
548 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http:///TaxCard.ecore", "Country")));
549 new Equality(body, var__virtual_1_, var__virtual_0_);
550 bodies.add(body);
551 }
552 return bodies;
553 }
554 }
555}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java
new file mode 100644
index 00000000..ac0dd914
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv13.java
@@ -0,0 +1,544 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Resident_Tax_Payer;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
35import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
36import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
37import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
38
39/**
40 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
41 *
42 * <p>Original source:
43 * <code><pre>
44 * pattern x_inv13(tp : Resident_Tax_Payer) {
45 * Resident_Tax_Payer(tp);
46 * }
47 * </pre></code>
48 *
49 * @see Matcher
50 * @see Match
51 *
52 */
53@SuppressWarnings("all")
54public final class X_inv13 extends BaseGeneratedEMFQuerySpecification<X_inv13.Matcher> {
55 /**
56 * Pattern-specific match representation of the queries.x_inv13 pattern,
57 * to be used in conjunction with {@link Matcher}.
58 *
59 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
60 * Each instance is a (possibly partial) substitution of pattern parameters,
61 * usable to represent a match of the pattern in the result of a query,
62 * or to specify the bound (fixed) input parameters when issuing a query.
63 *
64 * @see Matcher
65 *
66 */
67 public static abstract class Match extends BasePatternMatch {
68 private Resident_Tax_Payer fTp;
69
70 private static List<String> parameterNames = makeImmutableList("tp");
71
72 private Match(final Resident_Tax_Payer pTp) {
73 this.fTp = pTp;
74 }
75
76 @Override
77 public Object get(final String parameterName) {
78 switch(parameterName) {
79 case "tp": return this.fTp;
80 default: return null;
81 }
82 }
83
84 @Override
85 public Object get(final int index) {
86 switch(index) {
87 case 0: return this.fTp;
88 default: return null;
89 }
90 }
91
92 public Resident_Tax_Payer getTp() {
93 return this.fTp;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("tp".equals(parameterName) ) {
100 this.fTp = (Resident_Tax_Payer) newValue;
101 return true;
102 }
103 return false;
104 }
105
106 public void setTp(final Resident_Tax_Payer pTp) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 this.fTp = pTp;
109 }
110
111 @Override
112 public String patternName() {
113 return "queries.x_inv13";
114 }
115
116 @Override
117 public List<String> parameterNames() {
118 return X_inv13.Match.parameterNames;
119 }
120
121 @Override
122 public Object[] toArray() {
123 return new Object[]{fTp};
124 }
125
126 @Override
127 public X_inv13.Match toImmutable() {
128 return isMutable() ? newMatch(fTp) : this;
129 }
130
131 @Override
132 public String prettyPrint() {
133 StringBuilder result = new StringBuilder();
134 result.append("\"tp\"=" + prettyPrintValue(fTp));
135 return result.toString();
136 }
137
138 @Override
139 public int hashCode() {
140 return Objects.hash(fTp);
141 }
142
143 @Override
144 public boolean equals(final Object obj) {
145 if (this == obj)
146 return true;
147 if (obj == null) {
148 return false;
149 }
150 if ((obj instanceof X_inv13.Match)) {
151 X_inv13.Match other = (X_inv13.Match) obj;
152 return Objects.equals(fTp, other.fTp);
153 } else {
154 // this should be infrequent
155 if (!(obj instanceof IPatternMatch)) {
156 return false;
157 }
158 IPatternMatch otherSig = (IPatternMatch) obj;
159 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
160 }
161 }
162
163 @Override
164 public X_inv13 specification() {
165 return X_inv13.instance();
166 }
167
168 /**
169 * Returns an empty, mutable match.
170 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
171 *
172 * @return the empty match.
173 *
174 */
175 public static X_inv13.Match newEmptyMatch() {
176 return new Mutable(null);
177 }
178
179 /**
180 * Returns a mutable (partial) match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
184 * @return the new, mutable (partial) match object.
185 *
186 */
187 public static X_inv13.Match newMutableMatch(final Resident_Tax_Payer pTp) {
188 return new Mutable(pTp);
189 }
190
191 /**
192 * Returns a new (partial) match.
193 * This can be used e.g. to call the matcher with a partial match.
194 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
195 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
196 * @return the (partial) match object.
197 *
198 */
199 public static X_inv13.Match newMatch(final Resident_Tax_Payer pTp) {
200 return new Immutable(pTp);
201 }
202
203 private static final class Mutable extends X_inv13.Match {
204 Mutable(final Resident_Tax_Payer pTp) {
205 super(pTp);
206 }
207
208 @Override
209 public boolean isMutable() {
210 return true;
211 }
212 }
213
214 private static final class Immutable extends X_inv13.Match {
215 Immutable(final Resident_Tax_Payer pTp) {
216 super(pTp);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return false;
222 }
223 }
224 }
225
226 /**
227 * Generated pattern matcher API of the queries.x_inv13 pattern,
228 * providing pattern-specific query methods.
229 *
230 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
231 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
232 *
233 * <p>Matches of the pattern will be represented as {@link Match}.
234 *
235 * <p>Original source:
236 * <code><pre>
237 * pattern x_inv13(tp : Resident_Tax_Payer) {
238 * Resident_Tax_Payer(tp);
239 * }
240 * </pre></code>
241 *
242 * @see Match
243 * @see X_inv13
244 *
245 */
246 public static class Matcher extends BaseMatcher<X_inv13.Match> {
247 /**
248 * Initializes the pattern matcher within an existing VIATRA Query engine.
249 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
250 *
251 * @param engine the existing VIATRA Query engine in which this matcher will be created.
252 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
253 *
254 */
255 public static X_inv13.Matcher on(final ViatraQueryEngine engine) {
256 // check if matcher already exists
257 Matcher matcher = engine.getExistingMatcher(querySpecification());
258 if (matcher == null) {
259 matcher = (Matcher)engine.getMatcher(querySpecification());
260 }
261 return matcher;
262 }
263
264 /**
265 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
266 * @return an initialized matcher
267 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
268 *
269 */
270 public static X_inv13.Matcher create() {
271 return new Matcher();
272 }
273
274 private static final int POSITION_TP = 0;
275
276 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv13.Matcher.class);
277
278 /**
279 * Initializes the pattern matcher within an existing VIATRA Query engine.
280 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
281 *
282 * @param engine the existing VIATRA Query engine in which this matcher will be created.
283 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
284 *
285 */
286 private Matcher() {
287 super(querySpecification());
288 }
289
290 /**
291 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
292 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
293 * @return matches represented as a Match object.
294 *
295 */
296 public Collection<X_inv13.Match> getAllMatches(final Resident_Tax_Payer pTp) {
297 return rawStreamAllMatches(new Object[]{pTp}).collect(Collectors.toSet());
298 }
299
300 /**
301 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
302 * </p>
303 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
304 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
305 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
306 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
307 * @return a stream of matches represented as a Match object.
308 *
309 */
310 public Stream<X_inv13.Match> streamAllMatches(final Resident_Tax_Payer pTp) {
311 return rawStreamAllMatches(new Object[]{pTp});
312 }
313
314 /**
315 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
316 * Neither determinism nor randomness of selection is guaranteed.
317 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
318 * @return a match represented as a Match object, or null if no match is found.
319 *
320 */
321 public Optional<X_inv13.Match> getOneArbitraryMatch(final Resident_Tax_Payer pTp) {
322 return rawGetOneArbitraryMatch(new Object[]{pTp});
323 }
324
325 /**
326 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
327 * under any possible substitution of the unspecified parameters (if any).
328 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
329 * @return true if the input is a valid (partial) match of the pattern.
330 *
331 */
332 public boolean hasMatch(final Resident_Tax_Payer pTp) {
333 return rawHasMatch(new Object[]{pTp});
334 }
335
336 /**
337 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
338 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
339 * @return the number of pattern matches found.
340 *
341 */
342 public int countMatches(final Resident_Tax_Payer pTp) {
343 return rawCountMatches(new Object[]{pTp});
344 }
345
346 /**
347 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
348 * Neither determinism nor randomness of selection is guaranteed.
349 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
350 * @param processor the action that will process the selected match.
351 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
352 *
353 */
354 public boolean forOneArbitraryMatch(final Resident_Tax_Payer pTp, final Consumer<? super X_inv13.Match> processor) {
355 return rawForOneArbitraryMatch(new Object[]{pTp}, processor);
356 }
357
358 /**
359 * Returns a new (partial) match.
360 * This can be used e.g. to call the matcher with a partial match.
361 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
362 * @param pTp the fixed value of pattern parameter tp, or null if not bound.
363 * @return the (partial) match object.
364 *
365 */
366 public X_inv13.Match newMatch(final Resident_Tax_Payer pTp) {
367 return X_inv13.Match.newMatch(pTp);
368 }
369
370 /**
371 * Retrieve the set of values that occur in matches for tp.
372 * @return the Set of all values or empty set if there are no matches
373 *
374 */
375 protected Stream<Resident_Tax_Payer> rawStreamAllValuesOftp(final Object[] parameters) {
376 return rawStreamAllValues(POSITION_TP, parameters).map(Resident_Tax_Payer.class::cast);
377 }
378
379 /**
380 * Retrieve the set of values that occur in matches for tp.
381 * @return the Set of all values or empty set if there are no matches
382 *
383 */
384 public Set<Resident_Tax_Payer> getAllValuesOftp() {
385 return rawStreamAllValuesOftp(emptyArray()).collect(Collectors.toSet());
386 }
387
388 /**
389 * Retrieve the set of values that occur in matches for tp.
390 * @return the Set of all values or empty set if there are no matches
391 *
392 */
393 public Stream<Resident_Tax_Payer> streamAllValuesOftp() {
394 return rawStreamAllValuesOftp(emptyArray());
395 }
396
397 @Override
398 protected X_inv13.Match tupleToMatch(final Tuple t) {
399 try {
400 return X_inv13.Match.newMatch((Resident_Tax_Payer) t.get(POSITION_TP));
401 } catch(ClassCastException e) {
402 LOGGER.error("Element(s) in tuple not properly typed!",e);
403 return null;
404 }
405 }
406
407 @Override
408 protected X_inv13.Match arrayToMatch(final Object[] match) {
409 try {
410 return X_inv13.Match.newMatch((Resident_Tax_Payer) match[POSITION_TP]);
411 } catch(ClassCastException e) {
412 LOGGER.error("Element(s) in array not properly typed!",e);
413 return null;
414 }
415 }
416
417 @Override
418 protected X_inv13.Match arrayToMatchMutable(final Object[] match) {
419 try {
420 return X_inv13.Match.newMutableMatch((Resident_Tax_Payer) match[POSITION_TP]);
421 } catch(ClassCastException e) {
422 LOGGER.error("Element(s) in array not properly typed!",e);
423 return null;
424 }
425 }
426
427 /**
428 * @return the singleton instance of the query specification of this pattern
429 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
430 *
431 */
432 public static IQuerySpecification<X_inv13.Matcher> querySpecification() {
433 return X_inv13.instance();
434 }
435 }
436
437 private X_inv13() {
438 super(GeneratedPQuery.INSTANCE);
439 }
440
441 /**
442 * @return the singleton instance of the query specification
443 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
444 *
445 */
446 public static X_inv13 instance() {
447 try{
448 return LazyHolder.INSTANCE;
449 } catch (ExceptionInInitializerError err) {
450 throw processInitializerError(err);
451 }
452 }
453
454 @Override
455 protected X_inv13.Matcher instantiate(final ViatraQueryEngine engine) {
456 return X_inv13.Matcher.on(engine);
457 }
458
459 @Override
460 public X_inv13.Matcher instantiate() {
461 return X_inv13.Matcher.create();
462 }
463
464 @Override
465 public X_inv13.Match newEmptyMatch() {
466 return X_inv13.Match.newEmptyMatch();
467 }
468
469 @Override
470 public X_inv13.Match newMatch(final Object... parameters) {
471 return X_inv13.Match.newMatch((Taxation.Resident_Tax_Payer) parameters[0]);
472 }
473
474 /**
475 * Inner class allowing the singleton instance of {@link X_inv13} to be created
476 * <b>not</b> at the class load time of the outer class,
477 * but rather at the first call to {@link X_inv13#instance()}.
478 *
479 * <p> This workaround is required e.g. to support recursion.
480 *
481 */
482 private static class LazyHolder {
483 private static final X_inv13 INSTANCE = new X_inv13();
484
485 /**
486 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
487 * This initialization order is required to support indirect recursion.
488 *
489 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
490 *
491 */
492 private static final Object STATIC_INITIALIZER = ensureInitialized();
493
494 public static Object ensureInitialized() {
495 INSTANCE.ensureInitializedInternal();
496 return null;
497 }
498 }
499
500 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
501 private static final X_inv13.GeneratedPQuery INSTANCE = new GeneratedPQuery();
502
503 private final PParameter parameter_tp = new PParameter("tp", "Taxation.Resident_Tax_Payer", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Resident_Tax_Payer")), PParameterDirection.INOUT);
504
505 private final List<PParameter> parameters = Arrays.asList(parameter_tp);
506
507 private GeneratedPQuery() {
508 super(PVisibility.PUBLIC);
509 }
510
511 @Override
512 public String getFullyQualifiedName() {
513 return "queries.x_inv13";
514 }
515
516 @Override
517 public List<String> getParameterNames() {
518 return Arrays.asList("tp");
519 }
520
521 @Override
522 public List<PParameter> getParameters() {
523 return parameters;
524 }
525
526 @Override
527 public Set<PBody> doGetContainedBodies() {
528 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
529 Set<PBody> bodies = new LinkedHashSet<>();
530 {
531 PBody body = new PBody(this);
532 PVariable var_tp = body.getOrCreateVariableByName("tp");
533 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Resident_Tax_Payer")));
534 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
535 new ExportedParameter(body, var_tp, parameter_tp)
536 ));
537 // Resident_Tax_Payer(tp)
538 new TypeConstraint(body, Tuples.flatTupleOf(var_tp), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Resident_Tax_Payer")));
539 bodies.add(body);
540 }
541 return bodies;
542 }
543 }
544}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java
new file mode 100644
index 00000000..70d0a290
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv15.java
@@ -0,0 +1,637 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.External_Allowance;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
37import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
38import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
39import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
40
41/**
42 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
43 *
44 * <p>Original source:
45 * <code><pre>
46 * pattern x_inv15(ea : External_Allowance) {
47 * External_Allowance.person(ea, child);
48 * Household.children(h, child);//only one due to multiplicity
49 * Household.parents.individual_A(h, iA);
50 * Tax_Payer(iA);
51 * External_Allowance.reciver(ea, iA);
52 * } or {
53 * External_Allowance.person(ea, child);
54 * Household.children(h, child);//only one due to multiplicity
55 * Household.parents.individual_B(h, iB);
56 * Tax_Payer(iB);
57 * External_Allowance.reciver(ea, iB);
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class X_inv15 extends BaseGeneratedEMFQuerySpecification<X_inv15.Matcher> {
67 /**
68 * Pattern-specific match representation of the queries.x_inv15 pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private External_Allowance fEa;
81
82 private static List<String> parameterNames = makeImmutableList("ea");
83
84 private Match(final External_Allowance pEa) {
85 this.fEa = pEa;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 switch(parameterName) {
91 case "ea": return this.fEa;
92 default: return null;
93 }
94 }
95
96 @Override
97 public Object get(final int index) {
98 switch(index) {
99 case 0: return this.fEa;
100 default: return null;
101 }
102 }
103
104 public External_Allowance getEa() {
105 return this.fEa;
106 }
107
108 @Override
109 public boolean set(final String parameterName, final Object newValue) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 if ("ea".equals(parameterName) ) {
112 this.fEa = (External_Allowance) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setEa(final External_Allowance pEa) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fEa = pEa;
121 }
122
123 @Override
124 public String patternName() {
125 return "queries.x_inv15";
126 }
127
128 @Override
129 public List<String> parameterNames() {
130 return X_inv15.Match.parameterNames;
131 }
132
133 @Override
134 public Object[] toArray() {
135 return new Object[]{fEa};
136 }
137
138 @Override
139 public X_inv15.Match toImmutable() {
140 return isMutable() ? newMatch(fEa) : this;
141 }
142
143 @Override
144 public String prettyPrint() {
145 StringBuilder result = new StringBuilder();
146 result.append("\"ea\"=" + prettyPrintValue(fEa));
147 return result.toString();
148 }
149
150 @Override
151 public int hashCode() {
152 return Objects.hash(fEa);
153 }
154
155 @Override
156 public boolean equals(final Object obj) {
157 if (this == obj)
158 return true;
159 if (obj == null) {
160 return false;
161 }
162 if ((obj instanceof X_inv15.Match)) {
163 X_inv15.Match other = (X_inv15.Match) obj;
164 return Objects.equals(fEa, other.fEa);
165 } else {
166 // this should be infrequent
167 if (!(obj instanceof IPatternMatch)) {
168 return false;
169 }
170 IPatternMatch otherSig = (IPatternMatch) obj;
171 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
172 }
173 }
174
175 @Override
176 public X_inv15 specification() {
177 return X_inv15.instance();
178 }
179
180 /**
181 * Returns an empty, mutable match.
182 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
183 *
184 * @return the empty match.
185 *
186 */
187 public static X_inv15.Match newEmptyMatch() {
188 return new Mutable(null);
189 }
190
191 /**
192 * Returns a mutable (partial) match.
193 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
194 *
195 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
196 * @return the new, mutable (partial) match object.
197 *
198 */
199 public static X_inv15.Match newMutableMatch(final External_Allowance pEa) {
200 return new Mutable(pEa);
201 }
202
203 /**
204 * Returns a new (partial) match.
205 * This can be used e.g. to call the matcher with a partial match.
206 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
207 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
208 * @return the (partial) match object.
209 *
210 */
211 public static X_inv15.Match newMatch(final External_Allowance pEa) {
212 return new Immutable(pEa);
213 }
214
215 private static final class Mutable extends X_inv15.Match {
216 Mutable(final External_Allowance pEa) {
217 super(pEa);
218 }
219
220 @Override
221 public boolean isMutable() {
222 return true;
223 }
224 }
225
226 private static final class Immutable extends X_inv15.Match {
227 Immutable(final External_Allowance pEa) {
228 super(pEa);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return false;
234 }
235 }
236 }
237
238 /**
239 * Generated pattern matcher API of the queries.x_inv15 pattern,
240 * providing pattern-specific query methods.
241 *
242 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
243 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
244 *
245 * <p>Matches of the pattern will be represented as {@link Match}.
246 *
247 * <p>Original source:
248 * <code><pre>
249 * pattern x_inv15(ea : External_Allowance) {
250 * External_Allowance.person(ea, child);
251 * Household.children(h, child);//only one due to multiplicity
252 * Household.parents.individual_A(h, iA);
253 * Tax_Payer(iA);
254 * External_Allowance.reciver(ea, iA);
255 * } or {
256 * External_Allowance.person(ea, child);
257 * Household.children(h, child);//only one due to multiplicity
258 * Household.parents.individual_B(h, iB);
259 * Tax_Payer(iB);
260 * External_Allowance.reciver(ea, iB);
261 * }
262 * </pre></code>
263 *
264 * @see Match
265 * @see X_inv15
266 *
267 */
268 public static class Matcher extends BaseMatcher<X_inv15.Match> {
269 /**
270 * Initializes the pattern matcher within an existing VIATRA Query engine.
271 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
272 *
273 * @param engine the existing VIATRA Query engine in which this matcher will be created.
274 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
275 *
276 */
277 public static X_inv15.Matcher on(final ViatraQueryEngine engine) {
278 // check if matcher already exists
279 Matcher matcher = engine.getExistingMatcher(querySpecification());
280 if (matcher == null) {
281 matcher = (Matcher)engine.getMatcher(querySpecification());
282 }
283 return matcher;
284 }
285
286 /**
287 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
288 * @return an initialized matcher
289 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
290 *
291 */
292 public static X_inv15.Matcher create() {
293 return new Matcher();
294 }
295
296 private static final int POSITION_EA = 0;
297
298 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv15.Matcher.class);
299
300 /**
301 * Initializes the pattern matcher within an existing VIATRA Query engine.
302 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
303 *
304 * @param engine the existing VIATRA Query engine in which this matcher will be created.
305 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
306 *
307 */
308 private Matcher() {
309 super(querySpecification());
310 }
311
312 /**
313 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
314 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
315 * @return matches represented as a Match object.
316 *
317 */
318 public Collection<X_inv15.Match> getAllMatches(final External_Allowance pEa) {
319 return rawStreamAllMatches(new Object[]{pEa}).collect(Collectors.toSet());
320 }
321
322 /**
323 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
324 * </p>
325 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
326 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
327 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
328 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
329 * @return a stream of matches represented as a Match object.
330 *
331 */
332 public Stream<X_inv15.Match> streamAllMatches(final External_Allowance pEa) {
333 return rawStreamAllMatches(new Object[]{pEa});
334 }
335
336 /**
337 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
338 * Neither determinism nor randomness of selection is guaranteed.
339 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
340 * @return a match represented as a Match object, or null if no match is found.
341 *
342 */
343 public Optional<X_inv15.Match> getOneArbitraryMatch(final External_Allowance pEa) {
344 return rawGetOneArbitraryMatch(new Object[]{pEa});
345 }
346
347 /**
348 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
349 * under any possible substitution of the unspecified parameters (if any).
350 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
351 * @return true if the input is a valid (partial) match of the pattern.
352 *
353 */
354 public boolean hasMatch(final External_Allowance pEa) {
355 return rawHasMatch(new Object[]{pEa});
356 }
357
358 /**
359 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
360 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
361 * @return the number of pattern matches found.
362 *
363 */
364 public int countMatches(final External_Allowance pEa) {
365 return rawCountMatches(new Object[]{pEa});
366 }
367
368 /**
369 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
370 * Neither determinism nor randomness of selection is guaranteed.
371 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
372 * @param processor the action that will process the selected match.
373 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
374 *
375 */
376 public boolean forOneArbitraryMatch(final External_Allowance pEa, final Consumer<? super X_inv15.Match> processor) {
377 return rawForOneArbitraryMatch(new Object[]{pEa}, processor);
378 }
379
380 /**
381 * Returns a new (partial) match.
382 * This can be used e.g. to call the matcher with a partial match.
383 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
384 * @param pEa the fixed value of pattern parameter ea, or null if not bound.
385 * @return the (partial) match object.
386 *
387 */
388 public X_inv15.Match newMatch(final External_Allowance pEa) {
389 return X_inv15.Match.newMatch(pEa);
390 }
391
392 /**
393 * Retrieve the set of values that occur in matches for ea.
394 * @return the Set of all values or empty set if there are no matches
395 *
396 */
397 protected Stream<External_Allowance> rawStreamAllValuesOfea(final Object[] parameters) {
398 return rawStreamAllValues(POSITION_EA, parameters).map(External_Allowance.class::cast);
399 }
400
401 /**
402 * Retrieve the set of values that occur in matches for ea.
403 * @return the Set of all values or empty set if there are no matches
404 *
405 */
406 public Set<External_Allowance> getAllValuesOfea() {
407 return rawStreamAllValuesOfea(emptyArray()).collect(Collectors.toSet());
408 }
409
410 /**
411 * Retrieve the set of values that occur in matches for ea.
412 * @return the Set of all values or empty set if there are no matches
413 *
414 */
415 public Stream<External_Allowance> streamAllValuesOfea() {
416 return rawStreamAllValuesOfea(emptyArray());
417 }
418
419 @Override
420 protected X_inv15.Match tupleToMatch(final Tuple t) {
421 try {
422 return X_inv15.Match.newMatch((External_Allowance) t.get(POSITION_EA));
423 } catch(ClassCastException e) {
424 LOGGER.error("Element(s) in tuple not properly typed!",e);
425 return null;
426 }
427 }
428
429 @Override
430 protected X_inv15.Match arrayToMatch(final Object[] match) {
431 try {
432 return X_inv15.Match.newMatch((External_Allowance) match[POSITION_EA]);
433 } catch(ClassCastException e) {
434 LOGGER.error("Element(s) in array not properly typed!",e);
435 return null;
436 }
437 }
438
439 @Override
440 protected X_inv15.Match arrayToMatchMutable(final Object[] match) {
441 try {
442 return X_inv15.Match.newMutableMatch((External_Allowance) match[POSITION_EA]);
443 } catch(ClassCastException e) {
444 LOGGER.error("Element(s) in array not properly typed!",e);
445 return null;
446 }
447 }
448
449 /**
450 * @return the singleton instance of the query specification of this pattern
451 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
452 *
453 */
454 public static IQuerySpecification<X_inv15.Matcher> querySpecification() {
455 return X_inv15.instance();
456 }
457 }
458
459 private X_inv15() {
460 super(GeneratedPQuery.INSTANCE);
461 }
462
463 /**
464 * @return the singleton instance of the query specification
465 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
466 *
467 */
468 public static X_inv15 instance() {
469 try{
470 return LazyHolder.INSTANCE;
471 } catch (ExceptionInInitializerError err) {
472 throw processInitializerError(err);
473 }
474 }
475
476 @Override
477 protected X_inv15.Matcher instantiate(final ViatraQueryEngine engine) {
478 return X_inv15.Matcher.on(engine);
479 }
480
481 @Override
482 public X_inv15.Matcher instantiate() {
483 return X_inv15.Matcher.create();
484 }
485
486 @Override
487 public X_inv15.Match newEmptyMatch() {
488 return X_inv15.Match.newEmptyMatch();
489 }
490
491 @Override
492 public X_inv15.Match newMatch(final Object... parameters) {
493 return X_inv15.Match.newMatch((Taxation.External_Allowance) parameters[0]);
494 }
495
496 /**
497 * Inner class allowing the singleton instance of {@link X_inv15} to be created
498 * <b>not</b> at the class load time of the outer class,
499 * but rather at the first call to {@link X_inv15#instance()}.
500 *
501 * <p> This workaround is required e.g. to support recursion.
502 *
503 */
504 private static class LazyHolder {
505 private static final X_inv15 INSTANCE = new X_inv15();
506
507 /**
508 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
509 * This initialization order is required to support indirect recursion.
510 *
511 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
512 *
513 */
514 private static final Object STATIC_INITIALIZER = ensureInitialized();
515
516 public static Object ensureInitialized() {
517 INSTANCE.ensureInitializedInternal();
518 return null;
519 }
520 }
521
522 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
523 private static final X_inv15.GeneratedPQuery INSTANCE = new GeneratedPQuery();
524
525 private final PParameter parameter_ea = new PParameter("ea", "Taxation.External_Allowance", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "External_Allowance")), PParameterDirection.INOUT);
526
527 private final List<PParameter> parameters = Arrays.asList(parameter_ea);
528
529 private GeneratedPQuery() {
530 super(PVisibility.PUBLIC);
531 }
532
533 @Override
534 public String getFullyQualifiedName() {
535 return "queries.x_inv15";
536 }
537
538 @Override
539 public List<String> getParameterNames() {
540 return Arrays.asList("ea");
541 }
542
543 @Override
544 public List<PParameter> getParameters() {
545 return parameters;
546 }
547
548 @Override
549 public Set<PBody> doGetContainedBodies() {
550 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
551 Set<PBody> bodies = new LinkedHashSet<>();
552 {
553 PBody body = new PBody(this);
554 PVariable var_ea = body.getOrCreateVariableByName("ea");
555 PVariable var_child = body.getOrCreateVariableByName("child");
556 PVariable var_h = body.getOrCreateVariableByName("h");
557 PVariable var_iA = body.getOrCreateVariableByName("iA");
558 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
559 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
560 new ExportedParameter(body, var_ea, parameter_ea)
561 ));
562 // External_Allowance.person(ea, child)
563 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
564 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
565 new TypeConstraint(body, Tuples.flatTupleOf(var_ea, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "External_Allowance", "person")));
566 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
567 new Equality(body, var__virtual_0_, var_child);
568 // Household.children(h, child)
569 new TypeConstraint(body, Tuples.flatTupleOf(var_h), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Household")));
570 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
571 new TypeConstraint(body, Tuples.flatTupleOf(var_h, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Household", "children")));
572 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
573 new Equality(body, var__virtual_1_, var_child);
574 // //only one due to multiplicity Household.parents.individual_A(h, iA)
575 new TypeConstraint(body, Tuples.flatTupleOf(var_h), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Household")));
576 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
577 new TypeConstraint(body, Tuples.flatTupleOf(var_h, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Household", "parents")));
578 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
579 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
580 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "individual_A")));
581 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
582 new Equality(body, var__virtual_3_, var_iA);
583 // Tax_Payer(iA)
584 new TypeConstraint(body, Tuples.flatTupleOf(var_iA), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
585 // External_Allowance.reciver(ea, iA)
586 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
587 PVariable var__virtual_4_ = body.getOrCreateVariableByName(".virtual{4}");
588 new TypeConstraint(body, Tuples.flatTupleOf(var_ea, var__virtual_4_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "External_Allowance", "reciver")));
589 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_4_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
590 new Equality(body, var__virtual_4_, var_iA);
591 bodies.add(body);
592 }
593 {
594 PBody body = new PBody(this);
595 PVariable var_ea = body.getOrCreateVariableByName("ea");
596 PVariable var_child = body.getOrCreateVariableByName("child");
597 PVariable var_h = body.getOrCreateVariableByName("h");
598 PVariable var_iB = body.getOrCreateVariableByName("iB");
599 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
600 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
601 new ExportedParameter(body, var_ea, parameter_ea)
602 ));
603 // External_Allowance.person(ea, child)
604 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
605 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
606 new TypeConstraint(body, Tuples.flatTupleOf(var_ea, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "External_Allowance", "person")));
607 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
608 new Equality(body, var__virtual_0_, var_child);
609 // Household.children(h, child)
610 new TypeConstraint(body, Tuples.flatTupleOf(var_h), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Household")));
611 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
612 new TypeConstraint(body, Tuples.flatTupleOf(var_h, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Household", "children")));
613 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
614 new Equality(body, var__virtual_1_, var_child);
615 // //only one due to multiplicity Household.parents.individual_B(h, iB)
616 new TypeConstraint(body, Tuples.flatTupleOf(var_h), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Household")));
617 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
618 new TypeConstraint(body, Tuples.flatTupleOf(var_h, var__virtual_2_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Household", "parents")));
619 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
620 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
621 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_2_, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "individual_B")));
622 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
623 new Equality(body, var__virtual_3_, var_iB);
624 // Tax_Payer(iB)
625 new TypeConstraint(body, Tuples.flatTupleOf(var_iB), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
626 // External_Allowance.reciver(ea, iB)
627 new TypeConstraint(body, Tuples.flatTupleOf(var_ea), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "External_Allowance")));
628 PVariable var__virtual_4_ = body.getOrCreateVariableByName(".virtual{4}");
629 new TypeConstraint(body, Tuples.flatTupleOf(var_ea, var__virtual_4_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "External_Allowance", "reciver")));
630 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_4_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
631 new Equality(body, var__virtual_4_, var_iB);
632 bodies.add(body);
633 }
634 return bodies;
635 }
636 }
637}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java
new file mode 100644
index 00000000..c1477d21
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv47.java
@@ -0,0 +1,569 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Legal_Union_Record;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * pattern x_inv47(lur : Legal_Union_Record) {
50 * Legal_Union_Record.separation_cause(lur, ::NONE);
51 * Legal_Union_Record.end_year(lur, -1);
52 * }
53 * </pre></code>
54 *
55 * @see Matcher
56 * @see Match
57 *
58 */
59@SuppressWarnings("all")
60public final class X_inv47 extends BaseGeneratedEMFQuerySpecification<X_inv47.Matcher> {
61 /**
62 * Pattern-specific match representation of the queries.x_inv47 pattern,
63 * to be used in conjunction with {@link Matcher}.
64 *
65 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
66 * Each instance is a (possibly partial) substitution of pattern parameters,
67 * usable to represent a match of the pattern in the result of a query,
68 * or to specify the bound (fixed) input parameters when issuing a query.
69 *
70 * @see Matcher
71 *
72 */
73 public static abstract class Match extends BasePatternMatch {
74 private Legal_Union_Record fLur;
75
76 private static List<String> parameterNames = makeImmutableList("lur");
77
78 private Match(final Legal_Union_Record pLur) {
79 this.fLur = pLur;
80 }
81
82 @Override
83 public Object get(final String parameterName) {
84 switch(parameterName) {
85 case "lur": return this.fLur;
86 default: return null;
87 }
88 }
89
90 @Override
91 public Object get(final int index) {
92 switch(index) {
93 case 0: return this.fLur;
94 default: return null;
95 }
96 }
97
98 public Legal_Union_Record getLur() {
99 return this.fLur;
100 }
101
102 @Override
103 public boolean set(final String parameterName, final Object newValue) {
104 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
105 if ("lur".equals(parameterName) ) {
106 this.fLur = (Legal_Union_Record) newValue;
107 return true;
108 }
109 return false;
110 }
111
112 public void setLur(final Legal_Union_Record pLur) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 this.fLur = pLur;
115 }
116
117 @Override
118 public String patternName() {
119 return "queries.x_inv47";
120 }
121
122 @Override
123 public List<String> parameterNames() {
124 return X_inv47.Match.parameterNames;
125 }
126
127 @Override
128 public Object[] toArray() {
129 return new Object[]{fLur};
130 }
131
132 @Override
133 public X_inv47.Match toImmutable() {
134 return isMutable() ? newMatch(fLur) : this;
135 }
136
137 @Override
138 public String prettyPrint() {
139 StringBuilder result = new StringBuilder();
140 result.append("\"lur\"=" + prettyPrintValue(fLur));
141 return result.toString();
142 }
143
144 @Override
145 public int hashCode() {
146 return Objects.hash(fLur);
147 }
148
149 @Override
150 public boolean equals(final Object obj) {
151 if (this == obj)
152 return true;
153 if (obj == null) {
154 return false;
155 }
156 if ((obj instanceof X_inv47.Match)) {
157 X_inv47.Match other = (X_inv47.Match) obj;
158 return Objects.equals(fLur, other.fLur);
159 } else {
160 // this should be infrequent
161 if (!(obj instanceof IPatternMatch)) {
162 return false;
163 }
164 IPatternMatch otherSig = (IPatternMatch) obj;
165 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
166 }
167 }
168
169 @Override
170 public X_inv47 specification() {
171 return X_inv47.instance();
172 }
173
174 /**
175 * Returns an empty, mutable match.
176 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
177 *
178 * @return the empty match.
179 *
180 */
181 public static X_inv47.Match newEmptyMatch() {
182 return new Mutable(null);
183 }
184
185 /**
186 * Returns a mutable (partial) match.
187 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
188 *
189 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
190 * @return the new, mutable (partial) match object.
191 *
192 */
193 public static X_inv47.Match newMutableMatch(final Legal_Union_Record pLur) {
194 return new Mutable(pLur);
195 }
196
197 /**
198 * Returns a new (partial) match.
199 * This can be used e.g. to call the matcher with a partial match.
200 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
201 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
202 * @return the (partial) match object.
203 *
204 */
205 public static X_inv47.Match newMatch(final Legal_Union_Record pLur) {
206 return new Immutable(pLur);
207 }
208
209 private static final class Mutable extends X_inv47.Match {
210 Mutable(final Legal_Union_Record pLur) {
211 super(pLur);
212 }
213
214 @Override
215 public boolean isMutable() {
216 return true;
217 }
218 }
219
220 private static final class Immutable extends X_inv47.Match {
221 Immutable(final Legal_Union_Record pLur) {
222 super(pLur);
223 }
224
225 @Override
226 public boolean isMutable() {
227 return false;
228 }
229 }
230 }
231
232 /**
233 * Generated pattern matcher API of the queries.x_inv47 pattern,
234 * providing pattern-specific query methods.
235 *
236 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
237 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
238 *
239 * <p>Matches of the pattern will be represented as {@link Match}.
240 *
241 * <p>Original source:
242 * <code><pre>
243 * pattern x_inv47(lur : Legal_Union_Record) {
244 * Legal_Union_Record.separation_cause(lur, ::NONE);
245 * Legal_Union_Record.end_year(lur, -1);
246 * }
247 * </pre></code>
248 *
249 * @see Match
250 * @see X_inv47
251 *
252 */
253 public static class Matcher extends BaseMatcher<X_inv47.Match> {
254 /**
255 * Initializes the pattern matcher within an existing VIATRA Query engine.
256 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
257 *
258 * @param engine the existing VIATRA Query engine in which this matcher will be created.
259 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
260 *
261 */
262 public static X_inv47.Matcher on(final ViatraQueryEngine engine) {
263 // check if matcher already exists
264 Matcher matcher = engine.getExistingMatcher(querySpecification());
265 if (matcher == null) {
266 matcher = (Matcher)engine.getMatcher(querySpecification());
267 }
268 return matcher;
269 }
270
271 /**
272 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
273 * @return an initialized matcher
274 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
275 *
276 */
277 public static X_inv47.Matcher create() {
278 return new Matcher();
279 }
280
281 private static final int POSITION_LUR = 0;
282
283 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv47.Matcher.class);
284
285 /**
286 * Initializes the pattern matcher within an existing VIATRA Query engine.
287 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
288 *
289 * @param engine the existing VIATRA Query engine in which this matcher will be created.
290 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
291 *
292 */
293 private Matcher() {
294 super(querySpecification());
295 }
296
297 /**
298 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
299 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
300 * @return matches represented as a Match object.
301 *
302 */
303 public Collection<X_inv47.Match> getAllMatches(final Legal_Union_Record pLur) {
304 return rawStreamAllMatches(new Object[]{pLur}).collect(Collectors.toSet());
305 }
306
307 /**
308 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
309 * </p>
310 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
311 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
312 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
313 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
314 * @return a stream of matches represented as a Match object.
315 *
316 */
317 public Stream<X_inv47.Match> streamAllMatches(final Legal_Union_Record pLur) {
318 return rawStreamAllMatches(new Object[]{pLur});
319 }
320
321 /**
322 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
323 * Neither determinism nor randomness of selection is guaranteed.
324 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
325 * @return a match represented as a Match object, or null if no match is found.
326 *
327 */
328 public Optional<X_inv47.Match> getOneArbitraryMatch(final Legal_Union_Record pLur) {
329 return rawGetOneArbitraryMatch(new Object[]{pLur});
330 }
331
332 /**
333 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
334 * under any possible substitution of the unspecified parameters (if any).
335 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
336 * @return true if the input is a valid (partial) match of the pattern.
337 *
338 */
339 public boolean hasMatch(final Legal_Union_Record pLur) {
340 return rawHasMatch(new Object[]{pLur});
341 }
342
343 /**
344 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
345 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
346 * @return the number of pattern matches found.
347 *
348 */
349 public int countMatches(final Legal_Union_Record pLur) {
350 return rawCountMatches(new Object[]{pLur});
351 }
352
353 /**
354 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
355 * Neither determinism nor randomness of selection is guaranteed.
356 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
357 * @param processor the action that will process the selected match.
358 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
359 *
360 */
361 public boolean forOneArbitraryMatch(final Legal_Union_Record pLur, final Consumer<? super X_inv47.Match> processor) {
362 return rawForOneArbitraryMatch(new Object[]{pLur}, processor);
363 }
364
365 /**
366 * Returns a new (partial) match.
367 * This can be used e.g. to call the matcher with a partial match.
368 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
369 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
370 * @return the (partial) match object.
371 *
372 */
373 public X_inv47.Match newMatch(final Legal_Union_Record pLur) {
374 return X_inv47.Match.newMatch(pLur);
375 }
376
377 /**
378 * Retrieve the set of values that occur in matches for lur.
379 * @return the Set of all values or empty set if there are no matches
380 *
381 */
382 protected Stream<Legal_Union_Record> rawStreamAllValuesOflur(final Object[] parameters) {
383 return rawStreamAllValues(POSITION_LUR, parameters).map(Legal_Union_Record.class::cast);
384 }
385
386 /**
387 * Retrieve the set of values that occur in matches for lur.
388 * @return the Set of all values or empty set if there are no matches
389 *
390 */
391 public Set<Legal_Union_Record> getAllValuesOflur() {
392 return rawStreamAllValuesOflur(emptyArray()).collect(Collectors.toSet());
393 }
394
395 /**
396 * Retrieve the set of values that occur in matches for lur.
397 * @return the Set of all values or empty set if there are no matches
398 *
399 */
400 public Stream<Legal_Union_Record> streamAllValuesOflur() {
401 return rawStreamAllValuesOflur(emptyArray());
402 }
403
404 @Override
405 protected X_inv47.Match tupleToMatch(final Tuple t) {
406 try {
407 return X_inv47.Match.newMatch((Legal_Union_Record) t.get(POSITION_LUR));
408 } catch(ClassCastException e) {
409 LOGGER.error("Element(s) in tuple not properly typed!",e);
410 return null;
411 }
412 }
413
414 @Override
415 protected X_inv47.Match arrayToMatch(final Object[] match) {
416 try {
417 return X_inv47.Match.newMatch((Legal_Union_Record) match[POSITION_LUR]);
418 } catch(ClassCastException e) {
419 LOGGER.error("Element(s) in array not properly typed!",e);
420 return null;
421 }
422 }
423
424 @Override
425 protected X_inv47.Match arrayToMatchMutable(final Object[] match) {
426 try {
427 return X_inv47.Match.newMutableMatch((Legal_Union_Record) match[POSITION_LUR]);
428 } catch(ClassCastException e) {
429 LOGGER.error("Element(s) in array not properly typed!",e);
430 return null;
431 }
432 }
433
434 /**
435 * @return the singleton instance of the query specification of this pattern
436 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
437 *
438 */
439 public static IQuerySpecification<X_inv47.Matcher> querySpecification() {
440 return X_inv47.instance();
441 }
442 }
443
444 private X_inv47() {
445 super(GeneratedPQuery.INSTANCE);
446 }
447
448 /**
449 * @return the singleton instance of the query specification
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static X_inv47 instance() {
454 try{
455 return LazyHolder.INSTANCE;
456 } catch (ExceptionInInitializerError err) {
457 throw processInitializerError(err);
458 }
459 }
460
461 @Override
462 protected X_inv47.Matcher instantiate(final ViatraQueryEngine engine) {
463 return X_inv47.Matcher.on(engine);
464 }
465
466 @Override
467 public X_inv47.Matcher instantiate() {
468 return X_inv47.Matcher.create();
469 }
470
471 @Override
472 public X_inv47.Match newEmptyMatch() {
473 return X_inv47.Match.newEmptyMatch();
474 }
475
476 @Override
477 public X_inv47.Match newMatch(final Object... parameters) {
478 return X_inv47.Match.newMatch((Taxation.Legal_Union_Record) parameters[0]);
479 }
480
481 /**
482 * Inner class allowing the singleton instance of {@link X_inv47} to be created
483 * <b>not</b> at the class load time of the outer class,
484 * but rather at the first call to {@link X_inv47#instance()}.
485 *
486 * <p> This workaround is required e.g. to support recursion.
487 *
488 */
489 private static class LazyHolder {
490 private static final X_inv47 INSTANCE = new X_inv47();
491
492 /**
493 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
494 * This initialization order is required to support indirect recursion.
495 *
496 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
497 *
498 */
499 private static final Object STATIC_INITIALIZER = ensureInitialized();
500
501 public static Object ensureInitialized() {
502 INSTANCE.ensureInitializedInternal();
503 return null;
504 }
505 }
506
507 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
508 private static final X_inv47.GeneratedPQuery INSTANCE = new GeneratedPQuery();
509
510 private final PParameter parameter_lur = new PParameter("lur", "Taxation.Legal_Union_Record", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Legal_Union_Record")), PParameterDirection.INOUT);
511
512 private final List<PParameter> parameters = Arrays.asList(parameter_lur);
513
514 private GeneratedPQuery() {
515 super(PVisibility.PUBLIC);
516 }
517
518 @Override
519 public String getFullyQualifiedName() {
520 return "queries.x_inv47";
521 }
522
523 @Override
524 public List<String> getParameterNames() {
525 return Arrays.asList("lur");
526 }
527
528 @Override
529 public List<PParameter> getParameters() {
530 return parameters;
531 }
532
533 @Override
534 public Set<PBody> doGetContainedBodies() {
535 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
536 Set<PBody> bodies = new LinkedHashSet<>();
537 {
538 PBody body = new PBody(this);
539 PVariable var_lur = body.getOrCreateVariableByName("lur");
540 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
541 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
542 new ExportedParameter(body, var_lur, parameter_lur)
543 ));
544 // Legal_Union_Record.separation_cause(lur, ::NONE)
545 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
546 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http:///TaxCard.ecore", "Separation_Causes", "NONE").getInstance());
547 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
548 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
549 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "separation_cause")));
550 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http:///TaxCard.ecore", "Separation_Causes")));
551 new Equality(body, var__virtual_1_, var__virtual_0_);
552 // Legal_Union_Record.end_year(lur, -1)
553 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
554 new ConstantValue(body, var__virtual_2_, -1);
555 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
556 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "end_year")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EInt")));
559 new Equality(body, var__virtual_3_, var__virtual_2_);
560 bodies.add(body);
561 }
562 return bodies;
563 }
564 }
565
566 private static int evaluateExpression_1_1() {
567 return 1;
568 }
569}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java
new file mode 100644
index 00000000..2a522290
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_3.java
@@ -0,0 +1,555 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * pattern x_inv48_3(p : Physical_Person) {
50 * Physical_Person.disability_type(p, ::NONE);
51 * }
52 * </pre></code>
53 *
54 * @see Matcher
55 * @see Match
56 *
57 */
58@SuppressWarnings("all")
59public final class X_inv48_3 extends BaseGeneratedEMFQuerySpecification<X_inv48_3.Matcher> {
60 /**
61 * Pattern-specific match representation of the queries.x_inv48_3 pattern,
62 * to be used in conjunction with {@link Matcher}.
63 *
64 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
65 * Each instance is a (possibly partial) substitution of pattern parameters,
66 * usable to represent a match of the pattern in the result of a query,
67 * or to specify the bound (fixed) input parameters when issuing a query.
68 *
69 * @see Matcher
70 *
71 */
72 public static abstract class Match extends BasePatternMatch {
73 private Physical_Person fP;
74
75 private static List<String> parameterNames = makeImmutableList("p");
76
77 private Match(final Physical_Person pP) {
78 this.fP = pP;
79 }
80
81 @Override
82 public Object get(final String parameterName) {
83 switch(parameterName) {
84 case "p": return this.fP;
85 default: return null;
86 }
87 }
88
89 @Override
90 public Object get(final int index) {
91 switch(index) {
92 case 0: return this.fP;
93 default: return null;
94 }
95 }
96
97 public Physical_Person getP() {
98 return this.fP;
99 }
100
101 @Override
102 public boolean set(final String parameterName, final Object newValue) {
103 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
104 if ("p".equals(parameterName) ) {
105 this.fP = (Physical_Person) newValue;
106 return true;
107 }
108 return false;
109 }
110
111 public void setP(final Physical_Person pP) {
112 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
113 this.fP = pP;
114 }
115
116 @Override
117 public String patternName() {
118 return "queries.x_inv48_3";
119 }
120
121 @Override
122 public List<String> parameterNames() {
123 return X_inv48_3.Match.parameterNames;
124 }
125
126 @Override
127 public Object[] toArray() {
128 return new Object[]{fP};
129 }
130
131 @Override
132 public X_inv48_3.Match toImmutable() {
133 return isMutable() ? newMatch(fP) : this;
134 }
135
136 @Override
137 public String prettyPrint() {
138 StringBuilder result = new StringBuilder();
139 result.append("\"p\"=" + prettyPrintValue(fP));
140 return result.toString();
141 }
142
143 @Override
144 public int hashCode() {
145 return Objects.hash(fP);
146 }
147
148 @Override
149 public boolean equals(final Object obj) {
150 if (this == obj)
151 return true;
152 if (obj == null) {
153 return false;
154 }
155 if ((obj instanceof X_inv48_3.Match)) {
156 X_inv48_3.Match other = (X_inv48_3.Match) obj;
157 return Objects.equals(fP, other.fP);
158 } else {
159 // this should be infrequent
160 if (!(obj instanceof IPatternMatch)) {
161 return false;
162 }
163 IPatternMatch otherSig = (IPatternMatch) obj;
164 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
165 }
166 }
167
168 @Override
169 public X_inv48_3 specification() {
170 return X_inv48_3.instance();
171 }
172
173 /**
174 * Returns an empty, mutable match.
175 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
176 *
177 * @return the empty match.
178 *
179 */
180 public static X_inv48_3.Match newEmptyMatch() {
181 return new Mutable(null);
182 }
183
184 /**
185 * Returns a mutable (partial) match.
186 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
187 *
188 * @param pP the fixed value of pattern parameter p, or null if not bound.
189 * @return the new, mutable (partial) match object.
190 *
191 */
192 public static X_inv48_3.Match newMutableMatch(final Physical_Person pP) {
193 return new Mutable(pP);
194 }
195
196 /**
197 * Returns a new (partial) match.
198 * This can be used e.g. to call the matcher with a partial match.
199 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
200 * @param pP the fixed value of pattern parameter p, or null if not bound.
201 * @return the (partial) match object.
202 *
203 */
204 public static X_inv48_3.Match newMatch(final Physical_Person pP) {
205 return new Immutable(pP);
206 }
207
208 private static final class Mutable extends X_inv48_3.Match {
209 Mutable(final Physical_Person pP) {
210 super(pP);
211 }
212
213 @Override
214 public boolean isMutable() {
215 return true;
216 }
217 }
218
219 private static final class Immutable extends X_inv48_3.Match {
220 Immutable(final Physical_Person pP) {
221 super(pP);
222 }
223
224 @Override
225 public boolean isMutable() {
226 return false;
227 }
228 }
229 }
230
231 /**
232 * Generated pattern matcher API of the queries.x_inv48_3 pattern,
233 * providing pattern-specific query methods.
234 *
235 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
236 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
237 *
238 * <p>Matches of the pattern will be represented as {@link Match}.
239 *
240 * <p>Original source:
241 * <code><pre>
242 * pattern x_inv48_3(p : Physical_Person) {
243 * Physical_Person.disability_type(p, ::NONE);
244 * }
245 * </pre></code>
246 *
247 * @see Match
248 * @see X_inv48_3
249 *
250 */
251 public static class Matcher extends BaseMatcher<X_inv48_3.Match> {
252 /**
253 * Initializes the pattern matcher within an existing VIATRA Query engine.
254 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
255 *
256 * @param engine the existing VIATRA Query engine in which this matcher will be created.
257 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
258 *
259 */
260 public static X_inv48_3.Matcher on(final ViatraQueryEngine engine) {
261 // check if matcher already exists
262 Matcher matcher = engine.getExistingMatcher(querySpecification());
263 if (matcher == null) {
264 matcher = (Matcher)engine.getMatcher(querySpecification());
265 }
266 return matcher;
267 }
268
269 /**
270 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
271 * @return an initialized matcher
272 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
273 *
274 */
275 public static X_inv48_3.Matcher create() {
276 return new Matcher();
277 }
278
279 private static final int POSITION_P = 0;
280
281 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv48_3.Matcher.class);
282
283 /**
284 * Initializes the pattern matcher within an existing VIATRA Query engine.
285 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
286 *
287 * @param engine the existing VIATRA Query engine in which this matcher will be created.
288 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
289 *
290 */
291 private Matcher() {
292 super(querySpecification());
293 }
294
295 /**
296 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
297 * @param pP the fixed value of pattern parameter p, or null if not bound.
298 * @return matches represented as a Match object.
299 *
300 */
301 public Collection<X_inv48_3.Match> getAllMatches(final Physical_Person pP) {
302 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
303 }
304
305 /**
306 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
307 * </p>
308 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
309 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
310 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
311 * @param pP the fixed value of pattern parameter p, or null if not bound.
312 * @return a stream of matches represented as a Match object.
313 *
314 */
315 public Stream<X_inv48_3.Match> streamAllMatches(final Physical_Person pP) {
316 return rawStreamAllMatches(new Object[]{pP});
317 }
318
319 /**
320 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
321 * Neither determinism nor randomness of selection is guaranteed.
322 * @param pP the fixed value of pattern parameter p, or null if not bound.
323 * @return a match represented as a Match object, or null if no match is found.
324 *
325 */
326 public Optional<X_inv48_3.Match> getOneArbitraryMatch(final Physical_Person pP) {
327 return rawGetOneArbitraryMatch(new Object[]{pP});
328 }
329
330 /**
331 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
332 * under any possible substitution of the unspecified parameters (if any).
333 * @param pP the fixed value of pattern parameter p, or null if not bound.
334 * @return true if the input is a valid (partial) match of the pattern.
335 *
336 */
337 public boolean hasMatch(final Physical_Person pP) {
338 return rawHasMatch(new Object[]{pP});
339 }
340
341 /**
342 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
343 * @param pP the fixed value of pattern parameter p, or null if not bound.
344 * @return the number of pattern matches found.
345 *
346 */
347 public int countMatches(final Physical_Person pP) {
348 return rawCountMatches(new Object[]{pP});
349 }
350
351 /**
352 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
353 * Neither determinism nor randomness of selection is guaranteed.
354 * @param pP the fixed value of pattern parameter p, or null if not bound.
355 * @param processor the action that will process the selected match.
356 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
357 *
358 */
359 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super X_inv48_3.Match> processor) {
360 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
361 }
362
363 /**
364 * Returns a new (partial) match.
365 * This can be used e.g. to call the matcher with a partial match.
366 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
367 * @param pP the fixed value of pattern parameter p, or null if not bound.
368 * @return the (partial) match object.
369 *
370 */
371 public X_inv48_3.Match newMatch(final Physical_Person pP) {
372 return X_inv48_3.Match.newMatch(pP);
373 }
374
375 /**
376 * Retrieve the set of values that occur in matches for p.
377 * @return the Set of all values or empty set if there are no matches
378 *
379 */
380 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
381 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
382 }
383
384 /**
385 * Retrieve the set of values that occur in matches for p.
386 * @return the Set of all values or empty set if there are no matches
387 *
388 */
389 public Set<Physical_Person> getAllValuesOfp() {
390 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
391 }
392
393 /**
394 * Retrieve the set of values that occur in matches for p.
395 * @return the Set of all values or empty set if there are no matches
396 *
397 */
398 public Stream<Physical_Person> streamAllValuesOfp() {
399 return rawStreamAllValuesOfp(emptyArray());
400 }
401
402 @Override
403 protected X_inv48_3.Match tupleToMatch(final Tuple t) {
404 try {
405 return X_inv48_3.Match.newMatch((Physical_Person) t.get(POSITION_P));
406 } catch(ClassCastException e) {
407 LOGGER.error("Element(s) in tuple not properly typed!",e);
408 return null;
409 }
410 }
411
412 @Override
413 protected X_inv48_3.Match arrayToMatch(final Object[] match) {
414 try {
415 return X_inv48_3.Match.newMatch((Physical_Person) match[POSITION_P]);
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in array not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected X_inv48_3.Match arrayToMatchMutable(final Object[] match) {
424 try {
425 return X_inv48_3.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 /**
433 * @return the singleton instance of the query specification of this pattern
434 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
435 *
436 */
437 public static IQuerySpecification<X_inv48_3.Matcher> querySpecification() {
438 return X_inv48_3.instance();
439 }
440 }
441
442 private X_inv48_3() {
443 super(GeneratedPQuery.INSTANCE);
444 }
445
446 /**
447 * @return the singleton instance of the query specification
448 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
449 *
450 */
451 public static X_inv48_3 instance() {
452 try{
453 return LazyHolder.INSTANCE;
454 } catch (ExceptionInInitializerError err) {
455 throw processInitializerError(err);
456 }
457 }
458
459 @Override
460 protected X_inv48_3.Matcher instantiate(final ViatraQueryEngine engine) {
461 return X_inv48_3.Matcher.on(engine);
462 }
463
464 @Override
465 public X_inv48_3.Matcher instantiate() {
466 return X_inv48_3.Matcher.create();
467 }
468
469 @Override
470 public X_inv48_3.Match newEmptyMatch() {
471 return X_inv48_3.Match.newEmptyMatch();
472 }
473
474 @Override
475 public X_inv48_3.Match newMatch(final Object... parameters) {
476 return X_inv48_3.Match.newMatch((Taxation.Physical_Person) parameters[0]);
477 }
478
479 /**
480 * Inner class allowing the singleton instance of {@link X_inv48_3} to be created
481 * <b>not</b> at the class load time of the outer class,
482 * but rather at the first call to {@link X_inv48_3#instance()}.
483 *
484 * <p> This workaround is required e.g. to support recursion.
485 *
486 */
487 private static class LazyHolder {
488 private static final X_inv48_3 INSTANCE = new X_inv48_3();
489
490 /**
491 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
492 * This initialization order is required to support indirect recursion.
493 *
494 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
495 *
496 */
497 private static final Object STATIC_INITIALIZER = ensureInitialized();
498
499 public static Object ensureInitialized() {
500 INSTANCE.ensureInitializedInternal();
501 return null;
502 }
503 }
504
505 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
506 private static final X_inv48_3.GeneratedPQuery INSTANCE = new GeneratedPQuery();
507
508 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
509
510 private final List<PParameter> parameters = Arrays.asList(parameter_p);
511
512 private GeneratedPQuery() {
513 super(PVisibility.PUBLIC);
514 }
515
516 @Override
517 public String getFullyQualifiedName() {
518 return "queries.x_inv48_3";
519 }
520
521 @Override
522 public List<String> getParameterNames() {
523 return Arrays.asList("p");
524 }
525
526 @Override
527 public List<PParameter> getParameters() {
528 return parameters;
529 }
530
531 @Override
532 public Set<PBody> doGetContainedBodies() {
533 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
534 Set<PBody> bodies = new LinkedHashSet<>();
535 {
536 PBody body = new PBody(this);
537 PVariable var_p = body.getOrCreateVariableByName("p");
538 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
539 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
540 new ExportedParameter(body, var_p, parameter_p)
541 ));
542 // Physical_Person.disability_type(p, ::NONE)
543 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
544 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http:///TaxCard.ecore", "Disability_Types", "NONE").getInstance());
545 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
546 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
547 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "disability_type")));
548 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http:///TaxCard.ecore", "Disability_Types")));
549 new Equality(body, var__virtual_1_, var__virtual_0_);
550 bodies.add(body);
551 }
552 return bodies;
553 }
554 }
555}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java
new file mode 100644
index 00000000..2013f033
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_Dis.java
@@ -0,0 +1,610 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator;
32import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
33import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
34import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation;
38import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
39import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
40import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
41import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
42import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
43import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
44import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
45import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
46import queries.X_inv48_3;
47
48/**
49 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
50 *
51 * <p>Original source:
52 * <code><pre>
53 * pattern x_inv48_Dis(p : Physical_Person) {
54 * neg find x_inv48_3(p);
55 * Physical_Person.disability_percentage(p, disPer);
56 * check(disPer {@literal >} 0.0);
57 * check(disPer {@literal <}= 1.0);
58 * }
59 * </pre></code>
60 *
61 * @see Matcher
62 * @see Match
63 *
64 */
65@SuppressWarnings("all")
66public final class X_inv48_Dis extends BaseGeneratedEMFQuerySpecification<X_inv48_Dis.Matcher> {
67 /**
68 * Pattern-specific match representation of the queries.x_inv48_Dis pattern,
69 * to be used in conjunction with {@link Matcher}.
70 *
71 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
72 * Each instance is a (possibly partial) substitution of pattern parameters,
73 * usable to represent a match of the pattern in the result of a query,
74 * or to specify the bound (fixed) input parameters when issuing a query.
75 *
76 * @see Matcher
77 *
78 */
79 public static abstract class Match extends BasePatternMatch {
80 private Physical_Person fP;
81
82 private static List<String> parameterNames = makeImmutableList("p");
83
84 private Match(final Physical_Person pP) {
85 this.fP = pP;
86 }
87
88 @Override
89 public Object get(final String parameterName) {
90 switch(parameterName) {
91 case "p": return this.fP;
92 default: return null;
93 }
94 }
95
96 @Override
97 public Object get(final int index) {
98 switch(index) {
99 case 0: return this.fP;
100 default: return null;
101 }
102 }
103
104 public Physical_Person getP() {
105 return this.fP;
106 }
107
108 @Override
109 public boolean set(final String parameterName, final Object newValue) {
110 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
111 if ("p".equals(parameterName) ) {
112 this.fP = (Physical_Person) newValue;
113 return true;
114 }
115 return false;
116 }
117
118 public void setP(final Physical_Person pP) {
119 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
120 this.fP = pP;
121 }
122
123 @Override
124 public String patternName() {
125 return "queries.x_inv48_Dis";
126 }
127
128 @Override
129 public List<String> parameterNames() {
130 return X_inv48_Dis.Match.parameterNames;
131 }
132
133 @Override
134 public Object[] toArray() {
135 return new Object[]{fP};
136 }
137
138 @Override
139 public X_inv48_Dis.Match toImmutable() {
140 return isMutable() ? newMatch(fP) : this;
141 }
142
143 @Override
144 public String prettyPrint() {
145 StringBuilder result = new StringBuilder();
146 result.append("\"p\"=" + prettyPrintValue(fP));
147 return result.toString();
148 }
149
150 @Override
151 public int hashCode() {
152 return Objects.hash(fP);
153 }
154
155 @Override
156 public boolean equals(final Object obj) {
157 if (this == obj)
158 return true;
159 if (obj == null) {
160 return false;
161 }
162 if ((obj instanceof X_inv48_Dis.Match)) {
163 X_inv48_Dis.Match other = (X_inv48_Dis.Match) obj;
164 return Objects.equals(fP, other.fP);
165 } else {
166 // this should be infrequent
167 if (!(obj instanceof IPatternMatch)) {
168 return false;
169 }
170 IPatternMatch otherSig = (IPatternMatch) obj;
171 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
172 }
173 }
174
175 @Override
176 public X_inv48_Dis specification() {
177 return X_inv48_Dis.instance();
178 }
179
180 /**
181 * Returns an empty, mutable match.
182 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
183 *
184 * @return the empty match.
185 *
186 */
187 public static X_inv48_Dis.Match newEmptyMatch() {
188 return new Mutable(null);
189 }
190
191 /**
192 * Returns a mutable (partial) match.
193 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
194 *
195 * @param pP the fixed value of pattern parameter p, or null if not bound.
196 * @return the new, mutable (partial) match object.
197 *
198 */
199 public static X_inv48_Dis.Match newMutableMatch(final Physical_Person pP) {
200 return new Mutable(pP);
201 }
202
203 /**
204 * Returns a new (partial) match.
205 * This can be used e.g. to call the matcher with a partial match.
206 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
207 * @param pP the fixed value of pattern parameter p, or null if not bound.
208 * @return the (partial) match object.
209 *
210 */
211 public static X_inv48_Dis.Match newMatch(final Physical_Person pP) {
212 return new Immutable(pP);
213 }
214
215 private static final class Mutable extends X_inv48_Dis.Match {
216 Mutable(final Physical_Person pP) {
217 super(pP);
218 }
219
220 @Override
221 public boolean isMutable() {
222 return true;
223 }
224 }
225
226 private static final class Immutable extends X_inv48_Dis.Match {
227 Immutable(final Physical_Person pP) {
228 super(pP);
229 }
230
231 @Override
232 public boolean isMutable() {
233 return false;
234 }
235 }
236 }
237
238 /**
239 * Generated pattern matcher API of the queries.x_inv48_Dis pattern,
240 * providing pattern-specific query methods.
241 *
242 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
243 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
244 *
245 * <p>Matches of the pattern will be represented as {@link Match}.
246 *
247 * <p>Original source:
248 * <code><pre>
249 * pattern x_inv48_Dis(p : Physical_Person) {
250 * neg find x_inv48_3(p);
251 * Physical_Person.disability_percentage(p, disPer);
252 * check(disPer {@literal >} 0.0);
253 * check(disPer {@literal <}= 1.0);
254 * }
255 * </pre></code>
256 *
257 * @see Match
258 * @see X_inv48_Dis
259 *
260 */
261 public static class Matcher extends BaseMatcher<X_inv48_Dis.Match> {
262 /**
263 * Initializes the pattern matcher within an existing VIATRA Query engine.
264 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
265 *
266 * @param engine the existing VIATRA Query engine in which this matcher will be created.
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 *
269 */
270 public static X_inv48_Dis.Matcher on(final ViatraQueryEngine engine) {
271 // check if matcher already exists
272 Matcher matcher = engine.getExistingMatcher(querySpecification());
273 if (matcher == null) {
274 matcher = (Matcher)engine.getMatcher(querySpecification());
275 }
276 return matcher;
277 }
278
279 /**
280 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
281 * @return an initialized matcher
282 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
283 *
284 */
285 public static X_inv48_Dis.Matcher create() {
286 return new Matcher();
287 }
288
289 private static final int POSITION_P = 0;
290
291 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv48_Dis.Matcher.class);
292
293 /**
294 * Initializes the pattern matcher within an existing VIATRA Query engine.
295 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
296 *
297 * @param engine the existing VIATRA Query engine in which this matcher will be created.
298 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
299 *
300 */
301 private Matcher() {
302 super(querySpecification());
303 }
304
305 /**
306 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
307 * @param pP the fixed value of pattern parameter p, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<X_inv48_Dis.Match> getAllMatches(final Physical_Person pP) {
312 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pP the fixed value of pattern parameter p, or null if not bound.
322 * @return a stream of matches represented as a Match object.
323 *
324 */
325 public Stream<X_inv48_Dis.Match> streamAllMatches(final Physical_Person pP) {
326 return rawStreamAllMatches(new Object[]{pP});
327 }
328
329 /**
330 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
331 * Neither determinism nor randomness of selection is guaranteed.
332 * @param pP the fixed value of pattern parameter p, or null if not bound.
333 * @return a match represented as a Match object, or null if no match is found.
334 *
335 */
336 public Optional<X_inv48_Dis.Match> getOneArbitraryMatch(final Physical_Person pP) {
337 return rawGetOneArbitraryMatch(new Object[]{pP});
338 }
339
340 /**
341 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
342 * under any possible substitution of the unspecified parameters (if any).
343 * @param pP the fixed value of pattern parameter p, or null if not bound.
344 * @return true if the input is a valid (partial) match of the pattern.
345 *
346 */
347 public boolean hasMatch(final Physical_Person pP) {
348 return rawHasMatch(new Object[]{pP});
349 }
350
351 /**
352 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
353 * @param pP the fixed value of pattern parameter p, or null if not bound.
354 * @return the number of pattern matches found.
355 *
356 */
357 public int countMatches(final Physical_Person pP) {
358 return rawCountMatches(new Object[]{pP});
359 }
360
361 /**
362 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
363 * Neither determinism nor randomness of selection is guaranteed.
364 * @param pP the fixed value of pattern parameter p, or null if not bound.
365 * @param processor the action that will process the selected match.
366 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
367 *
368 */
369 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super X_inv48_Dis.Match> processor) {
370 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
371 }
372
373 /**
374 * Returns a new (partial) match.
375 * This can be used e.g. to call the matcher with a partial match.
376 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
377 * @param pP the fixed value of pattern parameter p, or null if not bound.
378 * @return the (partial) match object.
379 *
380 */
381 public X_inv48_Dis.Match newMatch(final Physical_Person pP) {
382 return X_inv48_Dis.Match.newMatch(pP);
383 }
384
385 /**
386 * Retrieve the set of values that occur in matches for p.
387 * @return the Set of all values or empty set if there are no matches
388 *
389 */
390 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
391 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
392 }
393
394 /**
395 * Retrieve the set of values that occur in matches for p.
396 * @return the Set of all values or empty set if there are no matches
397 *
398 */
399 public Set<Physical_Person> getAllValuesOfp() {
400 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
401 }
402
403 /**
404 * Retrieve the set of values that occur in matches for p.
405 * @return the Set of all values or empty set if there are no matches
406 *
407 */
408 public Stream<Physical_Person> streamAllValuesOfp() {
409 return rawStreamAllValuesOfp(emptyArray());
410 }
411
412 @Override
413 protected X_inv48_Dis.Match tupleToMatch(final Tuple t) {
414 try {
415 return X_inv48_Dis.Match.newMatch((Physical_Person) t.get(POSITION_P));
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in tuple not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected X_inv48_Dis.Match arrayToMatch(final Object[] match) {
424 try {
425 return X_inv48_Dis.Match.newMatch((Physical_Person) match[POSITION_P]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 @Override
433 protected X_inv48_Dis.Match arrayToMatchMutable(final Object[] match) {
434 try {
435 return X_inv48_Dis.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
436 } catch(ClassCastException e) {
437 LOGGER.error("Element(s) in array not properly typed!",e);
438 return null;
439 }
440 }
441
442 /**
443 * @return the singleton instance of the query specification of this pattern
444 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
445 *
446 */
447 public static IQuerySpecification<X_inv48_Dis.Matcher> querySpecification() {
448 return X_inv48_Dis.instance();
449 }
450 }
451
452 private X_inv48_Dis() {
453 super(GeneratedPQuery.INSTANCE);
454 }
455
456 /**
457 * @return the singleton instance of the query specification
458 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
459 *
460 */
461 public static X_inv48_Dis instance() {
462 try{
463 return LazyHolder.INSTANCE;
464 } catch (ExceptionInInitializerError err) {
465 throw processInitializerError(err);
466 }
467 }
468
469 @Override
470 protected X_inv48_Dis.Matcher instantiate(final ViatraQueryEngine engine) {
471 return X_inv48_Dis.Matcher.on(engine);
472 }
473
474 @Override
475 public X_inv48_Dis.Matcher instantiate() {
476 return X_inv48_Dis.Matcher.create();
477 }
478
479 @Override
480 public X_inv48_Dis.Match newEmptyMatch() {
481 return X_inv48_Dis.Match.newEmptyMatch();
482 }
483
484 @Override
485 public X_inv48_Dis.Match newMatch(final Object... parameters) {
486 return X_inv48_Dis.Match.newMatch((Taxation.Physical_Person) parameters[0]);
487 }
488
489 /**
490 * Inner class allowing the singleton instance of {@link X_inv48_Dis} to be created
491 * <b>not</b> at the class load time of the outer class,
492 * but rather at the first call to {@link X_inv48_Dis#instance()}.
493 *
494 * <p> This workaround is required e.g. to support recursion.
495 *
496 */
497 private static class LazyHolder {
498 private static final X_inv48_Dis INSTANCE = new X_inv48_Dis();
499
500 /**
501 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
502 * This initialization order is required to support indirect recursion.
503 *
504 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
505 *
506 */
507 private static final Object STATIC_INITIALIZER = ensureInitialized();
508
509 public static Object ensureInitialized() {
510 INSTANCE.ensureInitializedInternal();
511 return null;
512 }
513 }
514
515 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
516 private static final X_inv48_Dis.GeneratedPQuery INSTANCE = new GeneratedPQuery();
517
518 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
519
520 private final List<PParameter> parameters = Arrays.asList(parameter_p);
521
522 private GeneratedPQuery() {
523 super(PVisibility.PUBLIC);
524 }
525
526 @Override
527 public String getFullyQualifiedName() {
528 return "queries.x_inv48_Dis";
529 }
530
531 @Override
532 public List<String> getParameterNames() {
533 return Arrays.asList("p");
534 }
535
536 @Override
537 public List<PParameter> getParameters() {
538 return parameters;
539 }
540
541 @Override
542 public Set<PBody> doGetContainedBodies() {
543 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
544 Set<PBody> bodies = new LinkedHashSet<>();
545 {
546 PBody body = new PBody(this);
547 PVariable var_p = body.getOrCreateVariableByName("p");
548 PVariable var_disPer = body.getOrCreateVariableByName("disPer");
549 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
550 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
551 new ExportedParameter(body, var_p, parameter_p)
552 ));
553 // neg find x_inv48_3(p)
554 new NegativePatternCall(body, Tuples.flatTupleOf(var_p), X_inv48_3.instance().getInternalQueryRepresentation());
555 // Physical_Person.disability_percentage(p, disPer)
556 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
557 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
558 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "disability_percentage")));
559 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
560 new Equality(body, var__virtual_0_, var_disPer);
561 // check(disPer > 0.0)
562 new ExpressionEvaluation(body, new IExpressionEvaluator() {
563
564 @Override
565 public String getShortDescription() {
566 return "Expression evaluation from pattern x_inv48_Dis";
567 }
568
569 @Override
570 public Iterable<String> getInputParameterNames() {
571 return Arrays.asList("disPer");}
572
573 @Override
574 public Object evaluateExpression(IValueProvider provider) throws Exception {
575 Double disPer = (Double) provider.getValue("disPer");
576 return evaluateExpression_1_1(disPer);
577 }
578 }, null);
579 // check(disPer <= 1.0)
580 new ExpressionEvaluation(body, new IExpressionEvaluator() {
581
582 @Override
583 public String getShortDescription() {
584 return "Expression evaluation from pattern x_inv48_Dis";
585 }
586
587 @Override
588 public Iterable<String> getInputParameterNames() {
589 return Arrays.asList("disPer");}
590
591 @Override
592 public Object evaluateExpression(IValueProvider provider) throws Exception {
593 Double disPer = (Double) provider.getValue("disPer");
594 return evaluateExpression_1_2(disPer);
595 }
596 }, null);
597 bodies.add(body);
598 }
599 return bodies;
600 }
601 }
602
603 private static boolean evaluateExpression_1_1(final Double disPer) {
604 return ((disPer).doubleValue() > 0.0);
605 }
606
607 private static boolean evaluateExpression_1_2(final Double disPer) {
608 return ((disPer).doubleValue() <= 1.0);
609 }
610}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java
new file mode 100644
index 00000000..678a96d3
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv48_notDis.java
@@ -0,0 +1,569 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Physical_Person;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.emf.ecore.EDataType;
20import org.eclipse.viatra.query.runtime.api.IPatternMatch;
21import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
22import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
24import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
25import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
26import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
27import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
28import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey;
29import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
30import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
31import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
32import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
36import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
39import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
41import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
42import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * pattern x_inv48_notDis(p : Physical_Person) {
50 * Physical_Person.disability_type(p, ::NONE);
51 * Physical_Person.disability_percentage(p, 0.0);
52 * }
53 * </pre></code>
54 *
55 * @see Matcher
56 * @see Match
57 *
58 */
59@SuppressWarnings("all")
60public final class X_inv48_notDis extends BaseGeneratedEMFQuerySpecification<X_inv48_notDis.Matcher> {
61 /**
62 * Pattern-specific match representation of the queries.x_inv48_notDis pattern,
63 * to be used in conjunction with {@link Matcher}.
64 *
65 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
66 * Each instance is a (possibly partial) substitution of pattern parameters,
67 * usable to represent a match of the pattern in the result of a query,
68 * or to specify the bound (fixed) input parameters when issuing a query.
69 *
70 * @see Matcher
71 *
72 */
73 public static abstract class Match extends BasePatternMatch {
74 private Physical_Person fP;
75
76 private static List<String> parameterNames = makeImmutableList("p");
77
78 private Match(final Physical_Person pP) {
79 this.fP = pP;
80 }
81
82 @Override
83 public Object get(final String parameterName) {
84 switch(parameterName) {
85 case "p": return this.fP;
86 default: return null;
87 }
88 }
89
90 @Override
91 public Object get(final int index) {
92 switch(index) {
93 case 0: return this.fP;
94 default: return null;
95 }
96 }
97
98 public Physical_Person getP() {
99 return this.fP;
100 }
101
102 @Override
103 public boolean set(final String parameterName, final Object newValue) {
104 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
105 if ("p".equals(parameterName) ) {
106 this.fP = (Physical_Person) newValue;
107 return true;
108 }
109 return false;
110 }
111
112 public void setP(final Physical_Person pP) {
113 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
114 this.fP = pP;
115 }
116
117 @Override
118 public String patternName() {
119 return "queries.x_inv48_notDis";
120 }
121
122 @Override
123 public List<String> parameterNames() {
124 return X_inv48_notDis.Match.parameterNames;
125 }
126
127 @Override
128 public Object[] toArray() {
129 return new Object[]{fP};
130 }
131
132 @Override
133 public X_inv48_notDis.Match toImmutable() {
134 return isMutable() ? newMatch(fP) : this;
135 }
136
137 @Override
138 public String prettyPrint() {
139 StringBuilder result = new StringBuilder();
140 result.append("\"p\"=" + prettyPrintValue(fP));
141 return result.toString();
142 }
143
144 @Override
145 public int hashCode() {
146 return Objects.hash(fP);
147 }
148
149 @Override
150 public boolean equals(final Object obj) {
151 if (this == obj)
152 return true;
153 if (obj == null) {
154 return false;
155 }
156 if ((obj instanceof X_inv48_notDis.Match)) {
157 X_inv48_notDis.Match other = (X_inv48_notDis.Match) obj;
158 return Objects.equals(fP, other.fP);
159 } else {
160 // this should be infrequent
161 if (!(obj instanceof IPatternMatch)) {
162 return false;
163 }
164 IPatternMatch otherSig = (IPatternMatch) obj;
165 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
166 }
167 }
168
169 @Override
170 public X_inv48_notDis specification() {
171 return X_inv48_notDis.instance();
172 }
173
174 /**
175 * Returns an empty, mutable match.
176 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
177 *
178 * @return the empty match.
179 *
180 */
181 public static X_inv48_notDis.Match newEmptyMatch() {
182 return new Mutable(null);
183 }
184
185 /**
186 * Returns a mutable (partial) match.
187 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
188 *
189 * @param pP the fixed value of pattern parameter p, or null if not bound.
190 * @return the new, mutable (partial) match object.
191 *
192 */
193 public static X_inv48_notDis.Match newMutableMatch(final Physical_Person pP) {
194 return new Mutable(pP);
195 }
196
197 /**
198 * Returns a new (partial) match.
199 * This can be used e.g. to call the matcher with a partial match.
200 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
201 * @param pP the fixed value of pattern parameter p, or null if not bound.
202 * @return the (partial) match object.
203 *
204 */
205 public static X_inv48_notDis.Match newMatch(final Physical_Person pP) {
206 return new Immutable(pP);
207 }
208
209 private static final class Mutable extends X_inv48_notDis.Match {
210 Mutable(final Physical_Person pP) {
211 super(pP);
212 }
213
214 @Override
215 public boolean isMutable() {
216 return true;
217 }
218 }
219
220 private static final class Immutable extends X_inv48_notDis.Match {
221 Immutable(final Physical_Person pP) {
222 super(pP);
223 }
224
225 @Override
226 public boolean isMutable() {
227 return false;
228 }
229 }
230 }
231
232 /**
233 * Generated pattern matcher API of the queries.x_inv48_notDis pattern,
234 * providing pattern-specific query methods.
235 *
236 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
237 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
238 *
239 * <p>Matches of the pattern will be represented as {@link Match}.
240 *
241 * <p>Original source:
242 * <code><pre>
243 * pattern x_inv48_notDis(p : Physical_Person) {
244 * Physical_Person.disability_type(p, ::NONE);
245 * Physical_Person.disability_percentage(p, 0.0);
246 * }
247 * </pre></code>
248 *
249 * @see Match
250 * @see X_inv48_notDis
251 *
252 */
253 public static class Matcher extends BaseMatcher<X_inv48_notDis.Match> {
254 /**
255 * Initializes the pattern matcher within an existing VIATRA Query engine.
256 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
257 *
258 * @param engine the existing VIATRA Query engine in which this matcher will be created.
259 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
260 *
261 */
262 public static X_inv48_notDis.Matcher on(final ViatraQueryEngine engine) {
263 // check if matcher already exists
264 Matcher matcher = engine.getExistingMatcher(querySpecification());
265 if (matcher == null) {
266 matcher = (Matcher)engine.getMatcher(querySpecification());
267 }
268 return matcher;
269 }
270
271 /**
272 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
273 * @return an initialized matcher
274 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
275 *
276 */
277 public static X_inv48_notDis.Matcher create() {
278 return new Matcher();
279 }
280
281 private static final int POSITION_P = 0;
282
283 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv48_notDis.Matcher.class);
284
285 /**
286 * Initializes the pattern matcher within an existing VIATRA Query engine.
287 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
288 *
289 * @param engine the existing VIATRA Query engine in which this matcher will be created.
290 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
291 *
292 */
293 private Matcher() {
294 super(querySpecification());
295 }
296
297 /**
298 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
299 * @param pP the fixed value of pattern parameter p, or null if not bound.
300 * @return matches represented as a Match object.
301 *
302 */
303 public Collection<X_inv48_notDis.Match> getAllMatches(final Physical_Person pP) {
304 return rawStreamAllMatches(new Object[]{pP}).collect(Collectors.toSet());
305 }
306
307 /**
308 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
309 * </p>
310 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
311 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
312 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
313 * @param pP the fixed value of pattern parameter p, or null if not bound.
314 * @return a stream of matches represented as a Match object.
315 *
316 */
317 public Stream<X_inv48_notDis.Match> streamAllMatches(final Physical_Person pP) {
318 return rawStreamAllMatches(new Object[]{pP});
319 }
320
321 /**
322 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
323 * Neither determinism nor randomness of selection is guaranteed.
324 * @param pP the fixed value of pattern parameter p, or null if not bound.
325 * @return a match represented as a Match object, or null if no match is found.
326 *
327 */
328 public Optional<X_inv48_notDis.Match> getOneArbitraryMatch(final Physical_Person pP) {
329 return rawGetOneArbitraryMatch(new Object[]{pP});
330 }
331
332 /**
333 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
334 * under any possible substitution of the unspecified parameters (if any).
335 * @param pP the fixed value of pattern parameter p, or null if not bound.
336 * @return true if the input is a valid (partial) match of the pattern.
337 *
338 */
339 public boolean hasMatch(final Physical_Person pP) {
340 return rawHasMatch(new Object[]{pP});
341 }
342
343 /**
344 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
345 * @param pP the fixed value of pattern parameter p, or null if not bound.
346 * @return the number of pattern matches found.
347 *
348 */
349 public int countMatches(final Physical_Person pP) {
350 return rawCountMatches(new Object[]{pP});
351 }
352
353 /**
354 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
355 * Neither determinism nor randomness of selection is guaranteed.
356 * @param pP the fixed value of pattern parameter p, or null if not bound.
357 * @param processor the action that will process the selected match.
358 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
359 *
360 */
361 public boolean forOneArbitraryMatch(final Physical_Person pP, final Consumer<? super X_inv48_notDis.Match> processor) {
362 return rawForOneArbitraryMatch(new Object[]{pP}, processor);
363 }
364
365 /**
366 * Returns a new (partial) match.
367 * This can be used e.g. to call the matcher with a partial match.
368 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
369 * @param pP the fixed value of pattern parameter p, or null if not bound.
370 * @return the (partial) match object.
371 *
372 */
373 public X_inv48_notDis.Match newMatch(final Physical_Person pP) {
374 return X_inv48_notDis.Match.newMatch(pP);
375 }
376
377 /**
378 * Retrieve the set of values that occur in matches for p.
379 * @return the Set of all values or empty set if there are no matches
380 *
381 */
382 protected Stream<Physical_Person> rawStreamAllValuesOfp(final Object[] parameters) {
383 return rawStreamAllValues(POSITION_P, parameters).map(Physical_Person.class::cast);
384 }
385
386 /**
387 * Retrieve the set of values that occur in matches for p.
388 * @return the Set of all values or empty set if there are no matches
389 *
390 */
391 public Set<Physical_Person> getAllValuesOfp() {
392 return rawStreamAllValuesOfp(emptyArray()).collect(Collectors.toSet());
393 }
394
395 /**
396 * Retrieve the set of values that occur in matches for p.
397 * @return the Set of all values or empty set if there are no matches
398 *
399 */
400 public Stream<Physical_Person> streamAllValuesOfp() {
401 return rawStreamAllValuesOfp(emptyArray());
402 }
403
404 @Override
405 protected X_inv48_notDis.Match tupleToMatch(final Tuple t) {
406 try {
407 return X_inv48_notDis.Match.newMatch((Physical_Person) t.get(POSITION_P));
408 } catch(ClassCastException e) {
409 LOGGER.error("Element(s) in tuple not properly typed!",e);
410 return null;
411 }
412 }
413
414 @Override
415 protected X_inv48_notDis.Match arrayToMatch(final Object[] match) {
416 try {
417 return X_inv48_notDis.Match.newMatch((Physical_Person) match[POSITION_P]);
418 } catch(ClassCastException e) {
419 LOGGER.error("Element(s) in array not properly typed!",e);
420 return null;
421 }
422 }
423
424 @Override
425 protected X_inv48_notDis.Match arrayToMatchMutable(final Object[] match) {
426 try {
427 return X_inv48_notDis.Match.newMutableMatch((Physical_Person) match[POSITION_P]);
428 } catch(ClassCastException e) {
429 LOGGER.error("Element(s) in array not properly typed!",e);
430 return null;
431 }
432 }
433
434 /**
435 * @return the singleton instance of the query specification of this pattern
436 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
437 *
438 */
439 public static IQuerySpecification<X_inv48_notDis.Matcher> querySpecification() {
440 return X_inv48_notDis.instance();
441 }
442 }
443
444 private X_inv48_notDis() {
445 super(GeneratedPQuery.INSTANCE);
446 }
447
448 /**
449 * @return the singleton instance of the query specification
450 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
451 *
452 */
453 public static X_inv48_notDis instance() {
454 try{
455 return LazyHolder.INSTANCE;
456 } catch (ExceptionInInitializerError err) {
457 throw processInitializerError(err);
458 }
459 }
460
461 @Override
462 protected X_inv48_notDis.Matcher instantiate(final ViatraQueryEngine engine) {
463 return X_inv48_notDis.Matcher.on(engine);
464 }
465
466 @Override
467 public X_inv48_notDis.Matcher instantiate() {
468 return X_inv48_notDis.Matcher.create();
469 }
470
471 @Override
472 public X_inv48_notDis.Match newEmptyMatch() {
473 return X_inv48_notDis.Match.newEmptyMatch();
474 }
475
476 @Override
477 public X_inv48_notDis.Match newMatch(final Object... parameters) {
478 return X_inv48_notDis.Match.newMatch((Taxation.Physical_Person) parameters[0]);
479 }
480
481 /**
482 * Inner class allowing the singleton instance of {@link X_inv48_notDis} to be created
483 * <b>not</b> at the class load time of the outer class,
484 * but rather at the first call to {@link X_inv48_notDis#instance()}.
485 *
486 * <p> This workaround is required e.g. to support recursion.
487 *
488 */
489 private static class LazyHolder {
490 private static final X_inv48_notDis INSTANCE = new X_inv48_notDis();
491
492 /**
493 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
494 * This initialization order is required to support indirect recursion.
495 *
496 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
497 *
498 */
499 private static final Object STATIC_INITIALIZER = ensureInitialized();
500
501 public static Object ensureInitialized() {
502 INSTANCE.ensureInitializedInternal();
503 return null;
504 }
505 }
506
507 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
508 private static final X_inv48_notDis.GeneratedPQuery INSTANCE = new GeneratedPQuery();
509
510 private final PParameter parameter_p = new PParameter("p", "Taxation.Physical_Person", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Physical_Person")), PParameterDirection.INOUT);
511
512 private final List<PParameter> parameters = Arrays.asList(parameter_p);
513
514 private GeneratedPQuery() {
515 super(PVisibility.PUBLIC);
516 }
517
518 @Override
519 public String getFullyQualifiedName() {
520 return "queries.x_inv48_notDis";
521 }
522
523 @Override
524 public List<String> getParameterNames() {
525 return Arrays.asList("p");
526 }
527
528 @Override
529 public List<PParameter> getParameters() {
530 return parameters;
531 }
532
533 @Override
534 public Set<PBody> doGetContainedBodies() {
535 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
536 Set<PBody> bodies = new LinkedHashSet<>();
537 {
538 PBody body = new PBody(this);
539 PVariable var_p = body.getOrCreateVariableByName("p");
540 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
541 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
542 new ExportedParameter(body, var_p, parameter_p)
543 ));
544 // Physical_Person.disability_type(p, ::NONE)
545 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
546 new ConstantValue(body, var__virtual_0_, getEnumLiteral("http:///TaxCard.ecore", "Disability_Types", "NONE").getInstance());
547 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
548 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
549 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "disability_type")));
550 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http:///TaxCard.ecore", "Disability_Types")));
551 new Equality(body, var__virtual_1_, var__virtual_0_);
552 // Physical_Person.disability_percentage(p, 0.0)
553 PVariable var__virtual_2_ = body.getOrCreateVariableByName(".virtual{2}");
554 new ConstantValue(body, var__virtual_2_, 0.0);
555 new TypeConstraint(body, Tuples.flatTupleOf(var_p), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
556 PVariable var__virtual_3_ = body.getOrCreateVariableByName(".virtual{3}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var_p, var__virtual_3_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Physical_Person", "disability_percentage")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_3_), new EDataTypeInSlotsKey((EDataType)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EDouble")));
559 new Equality(body, var__virtual_3_, var__virtual_2_);
560 bodies.add(body);
561 }
562 return bodies;
563 }
564 }
565
566 private static double evaluateExpression_1_1() {
567 return 0.0;
568 }
569}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java
new file mode 100644
index 00000000..e05ec5cd
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_1.java
@@ -0,0 +1,579 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Legal_Union_Record;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey;
28import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
30import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
32import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality;
34import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
35import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
36import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
37import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
38import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
39import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
40import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
41import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
42import queries.X_inv49_2;
43
44/**
45 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
46 *
47 * <p>Original source:
48 * <code><pre>
49 * pattern x_inv49_1(lur : Legal_Union_Record) {
50 * Legal_Union_Record.individual_A(lur, iA);
51 * Legal_Union_Record.individual_B(lur, iB);
52 * Tax_Payer(iA);
53 * Physical_Person(iB);
54 * neg find x_inv49_2(iB);
55 * iA != iB;
56 * }
57 * </pre></code>
58 *
59 * @see Matcher
60 * @see Match
61 *
62 */
63@SuppressWarnings("all")
64public final class X_inv49_1 extends BaseGeneratedEMFQuerySpecification<X_inv49_1.Matcher> {
65 /**
66 * Pattern-specific match representation of the queries.x_inv49_1 pattern,
67 * to be used in conjunction with {@link Matcher}.
68 *
69 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
70 * Each instance is a (possibly partial) substitution of pattern parameters,
71 * usable to represent a match of the pattern in the result of a query,
72 * or to specify the bound (fixed) input parameters when issuing a query.
73 *
74 * @see Matcher
75 *
76 */
77 public static abstract class Match extends BasePatternMatch {
78 private Legal_Union_Record fLur;
79
80 private static List<String> parameterNames = makeImmutableList("lur");
81
82 private Match(final Legal_Union_Record pLur) {
83 this.fLur = pLur;
84 }
85
86 @Override
87 public Object get(final String parameterName) {
88 switch(parameterName) {
89 case "lur": return this.fLur;
90 default: return null;
91 }
92 }
93
94 @Override
95 public Object get(final int index) {
96 switch(index) {
97 case 0: return this.fLur;
98 default: return null;
99 }
100 }
101
102 public Legal_Union_Record getLur() {
103 return this.fLur;
104 }
105
106 @Override
107 public boolean set(final String parameterName, final Object newValue) {
108 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
109 if ("lur".equals(parameterName) ) {
110 this.fLur = (Legal_Union_Record) newValue;
111 return true;
112 }
113 return false;
114 }
115
116 public void setLur(final Legal_Union_Record pLur) {
117 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
118 this.fLur = pLur;
119 }
120
121 @Override
122 public String patternName() {
123 return "queries.x_inv49_1";
124 }
125
126 @Override
127 public List<String> parameterNames() {
128 return X_inv49_1.Match.parameterNames;
129 }
130
131 @Override
132 public Object[] toArray() {
133 return new Object[]{fLur};
134 }
135
136 @Override
137 public X_inv49_1.Match toImmutable() {
138 return isMutable() ? newMatch(fLur) : this;
139 }
140
141 @Override
142 public String prettyPrint() {
143 StringBuilder result = new StringBuilder();
144 result.append("\"lur\"=" + prettyPrintValue(fLur));
145 return result.toString();
146 }
147
148 @Override
149 public int hashCode() {
150 return Objects.hash(fLur);
151 }
152
153 @Override
154 public boolean equals(final Object obj) {
155 if (this == obj)
156 return true;
157 if (obj == null) {
158 return false;
159 }
160 if ((obj instanceof X_inv49_1.Match)) {
161 X_inv49_1.Match other = (X_inv49_1.Match) obj;
162 return Objects.equals(fLur, other.fLur);
163 } else {
164 // this should be infrequent
165 if (!(obj instanceof IPatternMatch)) {
166 return false;
167 }
168 IPatternMatch otherSig = (IPatternMatch) obj;
169 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
170 }
171 }
172
173 @Override
174 public X_inv49_1 specification() {
175 return X_inv49_1.instance();
176 }
177
178 /**
179 * Returns an empty, mutable match.
180 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
181 *
182 * @return the empty match.
183 *
184 */
185 public static X_inv49_1.Match newEmptyMatch() {
186 return new Mutable(null);
187 }
188
189 /**
190 * Returns a mutable (partial) match.
191 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
192 *
193 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
194 * @return the new, mutable (partial) match object.
195 *
196 */
197 public static X_inv49_1.Match newMutableMatch(final Legal_Union_Record pLur) {
198 return new Mutable(pLur);
199 }
200
201 /**
202 * Returns a new (partial) match.
203 * This can be used e.g. to call the matcher with a partial match.
204 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
205 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
206 * @return the (partial) match object.
207 *
208 */
209 public static X_inv49_1.Match newMatch(final Legal_Union_Record pLur) {
210 return new Immutable(pLur);
211 }
212
213 private static final class Mutable extends X_inv49_1.Match {
214 Mutable(final Legal_Union_Record pLur) {
215 super(pLur);
216 }
217
218 @Override
219 public boolean isMutable() {
220 return true;
221 }
222 }
223
224 private static final class Immutable extends X_inv49_1.Match {
225 Immutable(final Legal_Union_Record pLur) {
226 super(pLur);
227 }
228
229 @Override
230 public boolean isMutable() {
231 return false;
232 }
233 }
234 }
235
236 /**
237 * Generated pattern matcher API of the queries.x_inv49_1 pattern,
238 * providing pattern-specific query methods.
239 *
240 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
241 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
242 *
243 * <p>Matches of the pattern will be represented as {@link Match}.
244 *
245 * <p>Original source:
246 * <code><pre>
247 * pattern x_inv49_1(lur : Legal_Union_Record) {
248 * Legal_Union_Record.individual_A(lur, iA);
249 * Legal_Union_Record.individual_B(lur, iB);
250 * Tax_Payer(iA);
251 * Physical_Person(iB);
252 * neg find x_inv49_2(iB);
253 * iA != iB;
254 * }
255 * </pre></code>
256 *
257 * @see Match
258 * @see X_inv49_1
259 *
260 */
261 public static class Matcher extends BaseMatcher<X_inv49_1.Match> {
262 /**
263 * Initializes the pattern matcher within an existing VIATRA Query engine.
264 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
265 *
266 * @param engine the existing VIATRA Query engine in which this matcher will be created.
267 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
268 *
269 */
270 public static X_inv49_1.Matcher on(final ViatraQueryEngine engine) {
271 // check if matcher already exists
272 Matcher matcher = engine.getExistingMatcher(querySpecification());
273 if (matcher == null) {
274 matcher = (Matcher)engine.getMatcher(querySpecification());
275 }
276 return matcher;
277 }
278
279 /**
280 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
281 * @return an initialized matcher
282 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
283 *
284 */
285 public static X_inv49_1.Matcher create() {
286 return new Matcher();
287 }
288
289 private static final int POSITION_LUR = 0;
290
291 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv49_1.Matcher.class);
292
293 /**
294 * Initializes the pattern matcher within an existing VIATRA Query engine.
295 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
296 *
297 * @param engine the existing VIATRA Query engine in which this matcher will be created.
298 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
299 *
300 */
301 private Matcher() {
302 super(querySpecification());
303 }
304
305 /**
306 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
307 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
308 * @return matches represented as a Match object.
309 *
310 */
311 public Collection<X_inv49_1.Match> getAllMatches(final Legal_Union_Record pLur) {
312 return rawStreamAllMatches(new Object[]{pLur}).collect(Collectors.toSet());
313 }
314
315 /**
316 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
317 * </p>
318 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
319 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
320 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
321 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
322 * @return a stream of matches represented as a Match object.
323 *
324 */
325 public Stream<X_inv49_1.Match> streamAllMatches(final Legal_Union_Record pLur) {
326 return rawStreamAllMatches(new Object[]{pLur});
327 }
328
329 /**
330 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
331 * Neither determinism nor randomness of selection is guaranteed.
332 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
333 * @return a match represented as a Match object, or null if no match is found.
334 *
335 */
336 public Optional<X_inv49_1.Match> getOneArbitraryMatch(final Legal_Union_Record pLur) {
337 return rawGetOneArbitraryMatch(new Object[]{pLur});
338 }
339
340 /**
341 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
342 * under any possible substitution of the unspecified parameters (if any).
343 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
344 * @return true if the input is a valid (partial) match of the pattern.
345 *
346 */
347 public boolean hasMatch(final Legal_Union_Record pLur) {
348 return rawHasMatch(new Object[]{pLur});
349 }
350
351 /**
352 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
353 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
354 * @return the number of pattern matches found.
355 *
356 */
357 public int countMatches(final Legal_Union_Record pLur) {
358 return rawCountMatches(new Object[]{pLur});
359 }
360
361 /**
362 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
363 * Neither determinism nor randomness of selection is guaranteed.
364 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
365 * @param processor the action that will process the selected match.
366 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
367 *
368 */
369 public boolean forOneArbitraryMatch(final Legal_Union_Record pLur, final Consumer<? super X_inv49_1.Match> processor) {
370 return rawForOneArbitraryMatch(new Object[]{pLur}, processor);
371 }
372
373 /**
374 * Returns a new (partial) match.
375 * This can be used e.g. to call the matcher with a partial match.
376 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
377 * @param pLur the fixed value of pattern parameter lur, or null if not bound.
378 * @return the (partial) match object.
379 *
380 */
381 public X_inv49_1.Match newMatch(final Legal_Union_Record pLur) {
382 return X_inv49_1.Match.newMatch(pLur);
383 }
384
385 /**
386 * Retrieve the set of values that occur in matches for lur.
387 * @return the Set of all values or empty set if there are no matches
388 *
389 */
390 protected Stream<Legal_Union_Record> rawStreamAllValuesOflur(final Object[] parameters) {
391 return rawStreamAllValues(POSITION_LUR, parameters).map(Legal_Union_Record.class::cast);
392 }
393
394 /**
395 * Retrieve the set of values that occur in matches for lur.
396 * @return the Set of all values or empty set if there are no matches
397 *
398 */
399 public Set<Legal_Union_Record> getAllValuesOflur() {
400 return rawStreamAllValuesOflur(emptyArray()).collect(Collectors.toSet());
401 }
402
403 /**
404 * Retrieve the set of values that occur in matches for lur.
405 * @return the Set of all values or empty set if there are no matches
406 *
407 */
408 public Stream<Legal_Union_Record> streamAllValuesOflur() {
409 return rawStreamAllValuesOflur(emptyArray());
410 }
411
412 @Override
413 protected X_inv49_1.Match tupleToMatch(final Tuple t) {
414 try {
415 return X_inv49_1.Match.newMatch((Legal_Union_Record) t.get(POSITION_LUR));
416 } catch(ClassCastException e) {
417 LOGGER.error("Element(s) in tuple not properly typed!",e);
418 return null;
419 }
420 }
421
422 @Override
423 protected X_inv49_1.Match arrayToMatch(final Object[] match) {
424 try {
425 return X_inv49_1.Match.newMatch((Legal_Union_Record) match[POSITION_LUR]);
426 } catch(ClassCastException e) {
427 LOGGER.error("Element(s) in array not properly typed!",e);
428 return null;
429 }
430 }
431
432 @Override
433 protected X_inv49_1.Match arrayToMatchMutable(final Object[] match) {
434 try {
435 return X_inv49_1.Match.newMutableMatch((Legal_Union_Record) match[POSITION_LUR]);
436 } catch(ClassCastException e) {
437 LOGGER.error("Element(s) in array not properly typed!",e);
438 return null;
439 }
440 }
441
442 /**
443 * @return the singleton instance of the query specification of this pattern
444 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
445 *
446 */
447 public static IQuerySpecification<X_inv49_1.Matcher> querySpecification() {
448 return X_inv49_1.instance();
449 }
450 }
451
452 private X_inv49_1() {
453 super(GeneratedPQuery.INSTANCE);
454 }
455
456 /**
457 * @return the singleton instance of the query specification
458 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
459 *
460 */
461 public static X_inv49_1 instance() {
462 try{
463 return LazyHolder.INSTANCE;
464 } catch (ExceptionInInitializerError err) {
465 throw processInitializerError(err);
466 }
467 }
468
469 @Override
470 protected X_inv49_1.Matcher instantiate(final ViatraQueryEngine engine) {
471 return X_inv49_1.Matcher.on(engine);
472 }
473
474 @Override
475 public X_inv49_1.Matcher instantiate() {
476 return X_inv49_1.Matcher.create();
477 }
478
479 @Override
480 public X_inv49_1.Match newEmptyMatch() {
481 return X_inv49_1.Match.newEmptyMatch();
482 }
483
484 @Override
485 public X_inv49_1.Match newMatch(final Object... parameters) {
486 return X_inv49_1.Match.newMatch((Taxation.Legal_Union_Record) parameters[0]);
487 }
488
489 /**
490 * Inner class allowing the singleton instance of {@link X_inv49_1} to be created
491 * <b>not</b> at the class load time of the outer class,
492 * but rather at the first call to {@link X_inv49_1#instance()}.
493 *
494 * <p> This workaround is required e.g. to support recursion.
495 *
496 */
497 private static class LazyHolder {
498 private static final X_inv49_1 INSTANCE = new X_inv49_1();
499
500 /**
501 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
502 * This initialization order is required to support indirect recursion.
503 *
504 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
505 *
506 */
507 private static final Object STATIC_INITIALIZER = ensureInitialized();
508
509 public static Object ensureInitialized() {
510 INSTANCE.ensureInitializedInternal();
511 return null;
512 }
513 }
514
515 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
516 private static final X_inv49_1.GeneratedPQuery INSTANCE = new GeneratedPQuery();
517
518 private final PParameter parameter_lur = new PParameter("lur", "Taxation.Legal_Union_Record", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Legal_Union_Record")), PParameterDirection.INOUT);
519
520 private final List<PParameter> parameters = Arrays.asList(parameter_lur);
521
522 private GeneratedPQuery() {
523 super(PVisibility.PUBLIC);
524 }
525
526 @Override
527 public String getFullyQualifiedName() {
528 return "queries.x_inv49_1";
529 }
530
531 @Override
532 public List<String> getParameterNames() {
533 return Arrays.asList("lur");
534 }
535
536 @Override
537 public List<PParameter> getParameters() {
538 return parameters;
539 }
540
541 @Override
542 public Set<PBody> doGetContainedBodies() {
543 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
544 Set<PBody> bodies = new LinkedHashSet<>();
545 {
546 PBody body = new PBody(this);
547 PVariable var_lur = body.getOrCreateVariableByName("lur");
548 PVariable var_iA = body.getOrCreateVariableByName("iA");
549 PVariable var_iB = body.getOrCreateVariableByName("iB");
550 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
551 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
552 new ExportedParameter(body, var_lur, parameter_lur)
553 ));
554 // Legal_Union_Record.individual_A(lur, iA)
555 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
556 PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}");
557 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "individual_A")));
558 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
559 new Equality(body, var__virtual_0_, var_iA);
560 // Legal_Union_Record.individual_B(lur, iB)
561 new TypeConstraint(body, Tuples.flatTupleOf(var_lur), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Legal_Union_Record")));
562 PVariable var__virtual_1_ = body.getOrCreateVariableByName(".virtual{1}");
563 new TypeConstraint(body, Tuples.flatTupleOf(var_lur, var__virtual_1_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http:///TaxCard.ecore", "Legal_Union_Record", "individual_B")));
564 new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_1_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
565 new Equality(body, var__virtual_1_, var_iB);
566 // Tax_Payer(iA)
567 new TypeConstraint(body, Tuples.flatTupleOf(var_iA), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Tax_Payer")));
568 // Physical_Person(iB)
569 new TypeConstraint(body, Tuples.flatTupleOf(var_iB), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Physical_Person")));
570 // neg find x_inv49_2(iB)
571 new NegativePatternCall(body, Tuples.flatTupleOf(var_iB), X_inv49_2.instance().getInternalQueryRepresentation());
572 // iA != iB
573 new Inequality(body, var_iA, var_iB);
574 bodies.add(body);
575 }
576 return bodies;
577 }
578 }
579}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java
new file mode 100644
index 00000000..43ce44b4
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src-gen/queries/X_inv49_2.java
@@ -0,0 +1,544 @@
1/**
2 * Generated from platform:/resource/case.study.a.queries/src/queries/case_study_A.vql
3 */
4package queries;
5
6import Taxation.Dependent;
7import java.util.Arrays;
8import java.util.Collection;
9import java.util.LinkedHashSet;
10import java.util.List;
11import java.util.Objects;
12import java.util.Optional;
13import java.util.Set;
14import java.util.function.Consumer;
15import java.util.stream.Collectors;
16import java.util.stream.Stream;
17import org.apache.log4j.Logger;
18import org.eclipse.emf.ecore.EClass;
19import org.eclipse.viatra.query.runtime.api.IPatternMatch;
20import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
21import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
22import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery;
23import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification;
24import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher;
25import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch;
26import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey;
27import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
28import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
29import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
30import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
31import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint;
32import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
33import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection;
34import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility;
35import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
36import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
37import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil;
38
39/**
40 * A pattern-specific query specification that can instantiate Matcher in a type-safe way.
41 *
42 * <p>Original source:
43 * <code><pre>
44 * pattern x_inv49_2(iB: Dependent) {
45 * Dependent(iB);
46 * }
47 * </pre></code>
48 *
49 * @see Matcher
50 * @see Match
51 *
52 */
53@SuppressWarnings("all")
54public final class X_inv49_2 extends BaseGeneratedEMFQuerySpecification<X_inv49_2.Matcher> {
55 /**
56 * Pattern-specific match representation of the queries.x_inv49_2 pattern,
57 * to be used in conjunction with {@link Matcher}.
58 *
59 * <p>Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned.
60 * Each instance is a (possibly partial) substitution of pattern parameters,
61 * usable to represent a match of the pattern in the result of a query,
62 * or to specify the bound (fixed) input parameters when issuing a query.
63 *
64 * @see Matcher
65 *
66 */
67 public static abstract class Match extends BasePatternMatch {
68 private Dependent fIB;
69
70 private static List<String> parameterNames = makeImmutableList("iB");
71
72 private Match(final Dependent pIB) {
73 this.fIB = pIB;
74 }
75
76 @Override
77 public Object get(final String parameterName) {
78 switch(parameterName) {
79 case "iB": return this.fIB;
80 default: return null;
81 }
82 }
83
84 @Override
85 public Object get(final int index) {
86 switch(index) {
87 case 0: return this.fIB;
88 default: return null;
89 }
90 }
91
92 public Dependent getIB() {
93 return this.fIB;
94 }
95
96 @Override
97 public boolean set(final String parameterName, final Object newValue) {
98 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
99 if ("iB".equals(parameterName) ) {
100 this.fIB = (Dependent) newValue;
101 return true;
102 }
103 return false;
104 }
105
106 public void setIB(final Dependent pIB) {
107 if (!isMutable()) throw new java.lang.UnsupportedOperationException();
108 this.fIB = pIB;
109 }
110
111 @Override
112 public String patternName() {
113 return "queries.x_inv49_2";
114 }
115
116 @Override
117 public List<String> parameterNames() {
118 return X_inv49_2.Match.parameterNames;
119 }
120
121 @Override
122 public Object[] toArray() {
123 return new Object[]{fIB};
124 }
125
126 @Override
127 public X_inv49_2.Match toImmutable() {
128 return isMutable() ? newMatch(fIB) : this;
129 }
130
131 @Override
132 public String prettyPrint() {
133 StringBuilder result = new StringBuilder();
134 result.append("\"iB\"=" + prettyPrintValue(fIB));
135 return result.toString();
136 }
137
138 @Override
139 public int hashCode() {
140 return Objects.hash(fIB);
141 }
142
143 @Override
144 public boolean equals(final Object obj) {
145 if (this == obj)
146 return true;
147 if (obj == null) {
148 return false;
149 }
150 if ((obj instanceof X_inv49_2.Match)) {
151 X_inv49_2.Match other = (X_inv49_2.Match) obj;
152 return Objects.equals(fIB, other.fIB);
153 } else {
154 // this should be infrequent
155 if (!(obj instanceof IPatternMatch)) {
156 return false;
157 }
158 IPatternMatch otherSig = (IPatternMatch) obj;
159 return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray());
160 }
161 }
162
163 @Override
164 public X_inv49_2 specification() {
165 return X_inv49_2.instance();
166 }
167
168 /**
169 * Returns an empty, mutable match.
170 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
171 *
172 * @return the empty match.
173 *
174 */
175 public static X_inv49_2.Match newEmptyMatch() {
176 return new Mutable(null);
177 }
178
179 /**
180 * Returns a mutable (partial) match.
181 * Fields of the mutable match can be filled to create a partial match, usable as matcher input.
182 *
183 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
184 * @return the new, mutable (partial) match object.
185 *
186 */
187 public static X_inv49_2.Match newMutableMatch(final Dependent pIB) {
188 return new Mutable(pIB);
189 }
190
191 /**
192 * Returns a new (partial) match.
193 * This can be used e.g. to call the matcher with a partial match.
194 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
195 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
196 * @return the (partial) match object.
197 *
198 */
199 public static X_inv49_2.Match newMatch(final Dependent pIB) {
200 return new Immutable(pIB);
201 }
202
203 private static final class Mutable extends X_inv49_2.Match {
204 Mutable(final Dependent pIB) {
205 super(pIB);
206 }
207
208 @Override
209 public boolean isMutable() {
210 return true;
211 }
212 }
213
214 private static final class Immutable extends X_inv49_2.Match {
215 Immutable(final Dependent pIB) {
216 super(pIB);
217 }
218
219 @Override
220 public boolean isMutable() {
221 return false;
222 }
223 }
224 }
225
226 /**
227 * Generated pattern matcher API of the queries.x_inv49_2 pattern,
228 * providing pattern-specific query methods.
229 *
230 * <p>Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)},
231 * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}.
232 *
233 * <p>Matches of the pattern will be represented as {@link Match}.
234 *
235 * <p>Original source:
236 * <code><pre>
237 * pattern x_inv49_2(iB: Dependent) {
238 * Dependent(iB);
239 * }
240 * </pre></code>
241 *
242 * @see Match
243 * @see X_inv49_2
244 *
245 */
246 public static class Matcher extends BaseMatcher<X_inv49_2.Match> {
247 /**
248 * Initializes the pattern matcher within an existing VIATRA Query engine.
249 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
250 *
251 * @param engine the existing VIATRA Query engine in which this matcher will be created.
252 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
253 *
254 */
255 public static X_inv49_2.Matcher on(final ViatraQueryEngine engine) {
256 // check if matcher already exists
257 Matcher matcher = engine.getExistingMatcher(querySpecification());
258 if (matcher == null) {
259 matcher = (Matcher)engine.getMatcher(querySpecification());
260 }
261 return matcher;
262 }
263
264 /**
265 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
266 * @return an initialized matcher
267 * @noreference This method is for internal matcher initialization by the framework, do not call it manually.
268 *
269 */
270 public static X_inv49_2.Matcher create() {
271 return new Matcher();
272 }
273
274 private static final int POSITION_IB = 0;
275
276 private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(X_inv49_2.Matcher.class);
277
278 /**
279 * Initializes the pattern matcher within an existing VIATRA Query engine.
280 * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned.
281 *
282 * @param engine the existing VIATRA Query engine in which this matcher will be created.
283 * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation
284 *
285 */
286 private Matcher() {
287 super(querySpecification());
288 }
289
290 /**
291 * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters.
292 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
293 * @return matches represented as a Match object.
294 *
295 */
296 public Collection<X_inv49_2.Match> getAllMatches(final Dependent pIB) {
297 return rawStreamAllMatches(new Object[]{pIB}).collect(Collectors.toSet());
298 }
299
300 /**
301 * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters.
302 * </p>
303 * <strong>NOTE</strong>: It is important not to modify the source model while the stream is being processed.
304 * If the match set of the pattern changes during processing, the contents of the stream is <strong>undefined</strong>.
305 * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code.
306 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
307 * @return a stream of matches represented as a Match object.
308 *
309 */
310 public Stream<X_inv49_2.Match> streamAllMatches(final Dependent pIB) {
311 return rawStreamAllMatches(new Object[]{pIB});
312 }
313
314 /**
315 * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
316 * Neither determinism nor randomness of selection is guaranteed.
317 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
318 * @return a match represented as a Match object, or null if no match is found.
319 *
320 */
321 public Optional<X_inv49_2.Match> getOneArbitraryMatch(final Dependent pIB) {
322 return rawGetOneArbitraryMatch(new Object[]{pIB});
323 }
324
325 /**
326 * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match,
327 * under any possible substitution of the unspecified parameters (if any).
328 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
329 * @return true if the input is a valid (partial) match of the pattern.
330 *
331 */
332 public boolean hasMatch(final Dependent pIB) {
333 return rawHasMatch(new Object[]{pIB});
334 }
335
336 /**
337 * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters.
338 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
339 * @return the number of pattern matches found.
340 *
341 */
342 public int countMatches(final Dependent pIB) {
343 return rawCountMatches(new Object[]{pIB});
344 }
345
346 /**
347 * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters.
348 * Neither determinism nor randomness of selection is guaranteed.
349 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
350 * @param processor the action that will process the selected match.
351 * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked
352 *
353 */
354 public boolean forOneArbitraryMatch(final Dependent pIB, final Consumer<? super X_inv49_2.Match> processor) {
355 return rawForOneArbitraryMatch(new Object[]{pIB}, processor);
356 }
357
358 /**
359 * Returns a new (partial) match.
360 * This can be used e.g. to call the matcher with a partial match.
361 * <p>The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object.
362 * @param pIB the fixed value of pattern parameter iB, or null if not bound.
363 * @return the (partial) match object.
364 *
365 */
366 public X_inv49_2.Match newMatch(final Dependent pIB) {
367 return X_inv49_2.Match.newMatch(pIB);
368 }
369
370 /**
371 * Retrieve the set of values that occur in matches for iB.
372 * @return the Set of all values or empty set if there are no matches
373 *
374 */
375 protected Stream<Dependent> rawStreamAllValuesOfiB(final Object[] parameters) {
376 return rawStreamAllValues(POSITION_IB, parameters).map(Dependent.class::cast);
377 }
378
379 /**
380 * Retrieve the set of values that occur in matches for iB.
381 * @return the Set of all values or empty set if there are no matches
382 *
383 */
384 public Set<Dependent> getAllValuesOfiB() {
385 return rawStreamAllValuesOfiB(emptyArray()).collect(Collectors.toSet());
386 }
387
388 /**
389 * Retrieve the set of values that occur in matches for iB.
390 * @return the Set of all values or empty set if there are no matches
391 *
392 */
393 public Stream<Dependent> streamAllValuesOfiB() {
394 return rawStreamAllValuesOfiB(emptyArray());
395 }
396
397 @Override
398 protected X_inv49_2.Match tupleToMatch(final Tuple t) {
399 try {
400 return X_inv49_2.Match.newMatch((Dependent) t.get(POSITION_IB));
401 } catch(ClassCastException e) {
402 LOGGER.error("Element(s) in tuple not properly typed!",e);
403 return null;
404 }
405 }
406
407 @Override
408 protected X_inv49_2.Match arrayToMatch(final Object[] match) {
409 try {
410 return X_inv49_2.Match.newMatch((Dependent) match[POSITION_IB]);
411 } catch(ClassCastException e) {
412 LOGGER.error("Element(s) in array not properly typed!",e);
413 return null;
414 }
415 }
416
417 @Override
418 protected X_inv49_2.Match arrayToMatchMutable(final Object[] match) {
419 try {
420 return X_inv49_2.Match.newMutableMatch((Dependent) match[POSITION_IB]);
421 } catch(ClassCastException e) {
422 LOGGER.error("Element(s) in array not properly typed!",e);
423 return null;
424 }
425 }
426
427 /**
428 * @return the singleton instance of the query specification of this pattern
429 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
430 *
431 */
432 public static IQuerySpecification<X_inv49_2.Matcher> querySpecification() {
433 return X_inv49_2.instance();
434 }
435 }
436
437 private X_inv49_2() {
438 super(GeneratedPQuery.INSTANCE);
439 }
440
441 /**
442 * @return the singleton instance of the query specification
443 * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded
444 *
445 */
446 public static X_inv49_2 instance() {
447 try{
448 return LazyHolder.INSTANCE;
449 } catch (ExceptionInInitializerError err) {
450 throw processInitializerError(err);
451 }
452 }
453
454 @Override
455 protected X_inv49_2.Matcher instantiate(final ViatraQueryEngine engine) {
456 return X_inv49_2.Matcher.on(engine);
457 }
458
459 @Override
460 public X_inv49_2.Matcher instantiate() {
461 return X_inv49_2.Matcher.create();
462 }
463
464 @Override
465 public X_inv49_2.Match newEmptyMatch() {
466 return X_inv49_2.Match.newEmptyMatch();
467 }
468
469 @Override
470 public X_inv49_2.Match newMatch(final Object... parameters) {
471 return X_inv49_2.Match.newMatch((Taxation.Dependent) parameters[0]);
472 }
473
474 /**
475 * Inner class allowing the singleton instance of {@link X_inv49_2} to be created
476 * <b>not</b> at the class load time of the outer class,
477 * but rather at the first call to {@link X_inv49_2#instance()}.
478 *
479 * <p> This workaround is required e.g. to support recursion.
480 *
481 */
482 private static class LazyHolder {
483 private static final X_inv49_2 INSTANCE = new X_inv49_2();
484
485 /**
486 * Statically initializes the query specification <b>after</b> the field {@link #INSTANCE} is assigned.
487 * This initialization order is required to support indirect recursion.
488 *
489 * <p> The static initializer is defined using a helper field to work around limitations of the code generator.
490 *
491 */
492 private static final Object STATIC_INITIALIZER = ensureInitialized();
493
494 public static Object ensureInitialized() {
495 INSTANCE.ensureInitializedInternal();
496 return null;
497 }
498 }
499
500 private static class GeneratedPQuery extends BaseGeneratedEMFPQuery {
501 private static final X_inv49_2.GeneratedPQuery INSTANCE = new GeneratedPQuery();
502
503 private final PParameter parameter_iB = new PParameter("iB", "Taxation.Dependent", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http:///TaxCard.ecore", "Dependent")), PParameterDirection.INOUT);
504
505 private final List<PParameter> parameters = Arrays.asList(parameter_iB);
506
507 private GeneratedPQuery() {
508 super(PVisibility.PUBLIC);
509 }
510
511 @Override
512 public String getFullyQualifiedName() {
513 return "queries.x_inv49_2";
514 }
515
516 @Override
517 public List<String> getParameterNames() {
518 return Arrays.asList("iB");
519 }
520
521 @Override
522 public List<PParameter> getParameters() {
523 return parameters;
524 }
525
526 @Override
527 public Set<PBody> doGetContainedBodies() {
528 setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED));
529 Set<PBody> bodies = new LinkedHashSet<>();
530 {
531 PBody body = new PBody(this);
532 PVariable var_iB = body.getOrCreateVariableByName("iB");
533 new TypeConstraint(body, Tuples.flatTupleOf(var_iB), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
534 body.setSymbolicParameters(Arrays.<ExportedParameter>asList(
535 new ExportedParameter(body, var_iB, parameter_iB)
536 ));
537 // Dependent(iB)
538 new TypeConstraint(body, Tuples.flatTupleOf(var_iB), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http:///TaxCard.ecore", "Dependent")));
539 bodies.add(body);
540 }
541 return bodies;
542 }
543 }
544}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/NewOCLFileX.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/NewOCLFileX.ocl
new file mode 100644
index 00000000..66ae728e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/NewOCLFileX.ocl
@@ -0,0 +1,45 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/case.study.a.model/model/Taxation.ecore'
2
3package Taxation
4
5--context Income inv inv8:
6--if(not self.income_type.oclIsTypeOf(Employment_Income)) then
7--self.details->forAll(d| d.distance = 0)
8--else
9--self.details->forAll(d| d.distance >= 0.0 and d.distance <= 100)
10--endif
11--
12--context Legal_Union_Record inv inv490:
13--self.individual_A.oclIsKindOf(Tax_Payer)
14--
15--context Legal_Union_Record inv inv491:
16--self.individual_B->forAll(i | i.oclIsKindOf(Physical_Person) )
17--
18--context Legal_Union_Record inv inv492:
19--self.individual_B->forAll(i | not i.oclIsTypeOf(Dependent) )
20--
21--context Legal_Union_Record inv inv493:
22--self.individual_A <> self.individual_B
23--
24--context Tax_Payer inv inv13:
25-- self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country=Country::ZZ)
26--implies
27-- self.oclIsTypeOf(Resident_Tax_Payer)
28
29 context Income inv inv7:
30let val:Real =self.details->asOrderedSet()->first().distance in
31self.details->forAll(d: Income_Detail|d.distance = val)
32
33--context External_Allowance inv inv15:
34--let child:Dependent = self.person in
35--let h:Household = Household.allInstances()->select(children->includes(child))->asOrderedSet()->first() in
36--let t1:Set(Physical_Person) = Set{h.parents.individual_A}->union(h.parents.individual_B)->select(oclIsKindOf(Tax_Payer)) in
37--if(t1->size()=1) then
38--self.reciver = t1->asOrderedSet()->first()
39--else
40--self.reciver = t1->asOrderedSet()->at(2) or self.reciver = t1->asOrderedSet()->at(1)
41--endif
42
43
44
45endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/case_study_A.vql b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/case_study_A.vql
new file mode 100644
index 00000000..5d46bf42
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/queries/case_study_A.vql
@@ -0,0 +1,334 @@
1package queries
2
3import "http:///TaxCard.ecore"
4
5//AttributeRemoved -> DF
6
7//inv1-External_Allowance.amount is a derived feature (TODOcheck)
8//inv2-Tax_Card.income.taxPayer.taxesDue is a derived feature (TODOcheck)
9
10//inv3-multiplicity adjusted
11@Constraint(message = "inv03", severity = "error", key = {dep})
12pattern inv03(dep : Dependent) {
13 find x_inv03_eligAll(dep);
14 neg find x_inv03_hasAll(dep);
15} or {
16 Dependent.birth_year(dep, by);
17 check(2018-by > 21);
18 Dependent.continued_studies(dep, false);
19 Dependent.allowances(dep, _);
20}
21pattern x_inv03_eligAll(dep : Dependent) {
22 Dependent.birth_year(dep, by);
23 check(2018-by <= 21);
24} or {
25 Dependent.continued_studies(dep, true);
26}
27pattern x_inv03_hasAll(dep : Dependent) {
28 Dependent.allowances(dep, _);
29}
30
31//inv5 - oclIsTypeOf - handled here
32@Constraint(message = "inv05", severity = "error", key = {inc})
33pattern inv05(inc : Income) {
34 //income_type: None
35 neg find x_inv08_noType(inc);
36 Income.details.worked_days(inc, wd);
37 check(wd != 0);
38} or {
39 //income_type: Not Employment_Income
40 Income.income_type(inc, type);
41 neg find x_inv08_notEI(type);
42 Income.details.worked_days(inc, wd);
43 check(wd != 0);
44} or {
45 //income_type: Employment Income
46 Income.income_type(inc, type);
47 Employment_Income(type);
48 find x_inv05_inRange(inc);
49}
50pattern x_inv05_inRange(inc : Income) {
51 Income.details.worked_days(inc, wd);
52 check(wd < 1);
53} or {
54 Income.details.worked_days(inc, wd);
55 check(wd > 25);
56}
57
58//inv6-Does not make sens, but directly from OCL
59//first part of or from definition of getAge()
60@Constraint(message = "inv06", severity = "error", key = {tp})
61pattern inv06(tp : Tax_Payer) {
62 Tax_Payer.dependents(tp, _);
63 Tax_Payer.birth_year(tp, TPBy);
64 check(2018 - TPBy > 2018-16);
65} or {
66 Tax_Payer.birth_year(tp, TPBy);
67 Tax_Payer.dependents(tp, dep);
68 Dependent.birth_year(dep, DepBy);
69 check(2018-DepBy <= 2018-TPBy-16);
70}
71
72//inv7-OrderedSet
73@Constraint(message = "inv07", severity = "error", key = {inc})
74pattern inv07(inc : Income) {
75 Income.details.distance(inc, d1);
76 Income.details.distance(inc, d2);
77 check(d1 != d2);//compare values
78}
79
80//user_complete_details-AttributeRemoved
81
82//inv8 - oclIsTypeOf - handled here
83@Constraint(message = "inv08", severity = "error", key = {inc})
84pattern inv08(inc : Income) {
85 //income_type: None
86 neg find x_inv08_noType(inc);
87 Income.details.distance(inc, dist);
88 check(dist != 0);
89} or {
90 //income_type: Not Employment_Income
91 Income.income_type(inc, type);
92 neg find x_inv08_notEI(type);
93 Income.details.distance(inc, dist);
94 check(dist != 0);
95} or {
96 //income_type: Employment Income
97 Income.income_type(inc, type);
98 Employment_Income(type);
99 find x_inv08_inRange(inc);
100}
101pattern x_inv08_notEI(type : Employment_Income) {
102 Employment_Income(type);
103}
104pattern x_inv08_noType(inc : Income) {
105 Income.income_type(inc, _);
106}
107pattern x_inv08_inRange(inc : Income) {
108 Income.details.distance(inc, dist);
109 check(dist < 0);
110} or {
111 Income.details.distance(inc, dist);
112 check(dist > 100);
113}
114//inv9-DerivedFeature
115
116//inv10-Ordered Sets
117@Constraint(message = "inv10", severity = "error", key = {inc})
118pattern inv10(inc : Income) {
119 Income.details.amount(inc, a1);
120 Income.details.amount(inc, a2);
121 check(a1 != a2);//compare values
122}
123
124//inv11-attributes-handled by multiplicity
125@Constraint(message = "inv11", severity = "error", key = {exp})
126pattern inv11(exp : Expense) {
127 find x_inv11_incOver100(exp);
128 find x_inv11_incNotOver100(exp);
129}
130pattern x_inv11_incOver100(exp : Expense) {
131 Expense.income.income_amount(exp, incVal);
132 check(incVal / 2 > 50);
133
134} or {
135 Expense.declared_amount(exp, decl);
136 check(decl != 50);
137}
138pattern x_inv11_incNotOver100(exp : Expense) {
139 Expense.income.income_amount(exp, incVal);
140 check(incVal / 2 <= 50);
141} or {
142 Expense.declared_amount(exp, decl);
143 check(decl < 50);
144} or {
145 Expense.income.income_amount(exp, incVal);
146 Expense.declared_amount(exp, decl);
147 check(decl > incVal/2);
148}
149
150//inv12
151//exists - handled logically
152@Constraint(message = "inv12", severity = "error", key = {tp})
153pattern inv12(tp : Tax_Payer) {
154 Tax_Payer.addresses(tp, hab_add);
155 Habitual_Address(hab_add);
156 neg find x_inv12_notZZ(hab_add);
157 Tax_Payer.incomes(tp, inc);
158 Local_Income(inc);
159 neg find x_inv12_notNonRes(tp);
160}
161pattern x_inv12_notNonRes(tp : Non_Resident_Tax_Payer) {
162 Non_Resident_Tax_Payer(tp);
163}
164pattern x_inv12_notZZ(hab_add : Habitual_Address) {
165 Address.country(hab_add, ::ZZ);
166}
167
168//inv13 - Added new containment rel Phys_Pers->Address
169//exists - handled logically
170@Constraint(message = "inv13", severity = "error", key = {tp})
171pattern inv13(tp : Tax_Payer) {
172 Tax_Payer.addresses(tp, hab_add);
173 Habitual_Address(hab_add);
174 Address.country(hab_add, ::ZZ);
175 neg find x_inv13(tp);
176}
177pattern x_inv13(tp : Resident_Tax_Payer) {
178 Resident_Tax_Payer(tp);
179}
180
181//inv14-MultiplicityChanged
182
183//inv15-Ordered Sets in assignment if block
184//ERROR if no household object
185@Constraint(message = "inv15", severity = "error", key = {ea})
186pattern inv15(ea : External_Allowance) {
187 neg find x_inv15(ea);
188}
189pattern x_inv15(ea : External_Allowance) {
190 External_Allowance.person(ea, child);
191 Household.children(h, child);//only one due to multiplicity
192 Household.parents.individual_A(h, iA);
193 Tax_Payer(iA);
194 External_Allowance.reciver(ea, iA);
195} or {
196 External_Allowance.person(ea, child);
197 Household.children(h, child);//only one due to multiplicity
198 Household.parents.individual_B(h, iB);
199 Tax_Payer(iB);
200 External_Allowance.reciver(ea, iB);
201}
202
203//inv16-Tax_Card.tax_card_type is a derived feature
204
205//inv17-attribute-handled by multiplicity
206@Constraint(message = "inv17", severity = "error", key = {lur})
207pattern inv17(lur : Legal_Union_Record) {
208 Legal_Union_Record.start_year(lur, sy);
209 check(sy < 1950);
210} or {
211 Legal_Union_Record.start_year(lur, sy);
212 check(sy > 2018);
213}
214
215//inv18-MultiplicityChecked
216//inv19-MultiplicityChecked
217
218//inv20-Useless constraint since both edges are containment (TODOCheck)
219//OclIsUndefined-Handled by multiplicity
220@Constraint(message = "inv20", severity = "error", key = {lur})
221pattern inv20(lur : Legal_Union_Record) {
222 Legal_Union_Record.individual_A(lur, iA);
223 Legal_Union_Record.individual_B(lur, iB);
224 iA == iB;
225}
226//inv21-MultiplicityChecked
227//inv22-MultiplicityChecked
228//inv23-MultiplicityChecked
229//inv24-MultiplicityChecked
230//inv25-MultiplicityChecked
231//inv26-MultiplicityChanged
232//inv27-dupOfInv24
233//inv28-dubOfInv23
234//inv29-MultiplicityChanged
235//inv30-AttributeRemoved
236//inv31-AttributeRemoved
237//inv32-AttributeRemoved
238
239//inv33-attribute-handled by multiplicity
240@Constraint(message = "inv33", severity = "error", key = {p})
241pattern inv33(p : Physical_Person) {
242 Physical_Person.birth_year(p, by);
243 check(2018-by < 0);
244} or {
245 Physical_Person.birth_year(p, by);
246 check(2018-by > 100);
247}
248
249//inv34-attribute-handled by multiplicity
250@Constraint(message = "inv34", severity = "error", key = {p})
251pattern inv34(p : Physical_Person) {
252 Physical_Person.birth_month(p, birthMonth);
253 check(birthMonth < 1);
254} or {
255 Physical_Person.birth_month(p, birthMonth);
256 check(birthMonth > 12);
257}
258
259//inv35-attribute-handled by multiplicity
260@Constraint(message = "inv35", severity = "error", key = {p})
261pattern inv35(p : Physical_Person) {
262 Physical_Person.birth_day(p, birthDay);
263 check(birthDay < 1);
264} or {
265 Physical_Person.birth_day(p, birthDay);
266 check(birthDay > 28);
267}
268
269//inv36-AttributeRemoved
270//inv37-AttributeRemoved
271//inv38-AttributeRemoved
272//inv39-AttributeRemoved
273//inv40-AttributeRemoved
274//inv41-AttributeRemoved
275//inv42-AttributeRemoved
276//inv43-AttributeRemoved
277//inv44-AttributeRemoved
278//inv45-AttributeRemoved
279//inv46-AttributeRemoved
280
281//inv47-attributes-handled by multiplicity
282@Constraint(message = "inv47", severity = "error", key = {lur})
283pattern inv47(lur : Legal_Union_Record) {
284 Legal_Union_Record.end_year(lur, endY);
285 Legal_Union_Record.start_year(lur, startY);
286 neg find x_inv47(lur);
287 check(startY >= endY);
288}
289pattern x_inv47(lur : Legal_Union_Record) {
290 Legal_Union_Record.separation_cause(lur, ::NONE);
291 Legal_Union_Record.end_year(lur, -1);
292}
293
294//inv48-attributes-handled by multiplicity
295@Constraint(message = "inv48", severity = "error", key = {p})
296pattern inv48(p : Physical_Person) {
297 neg find x_inv48_notDis(p);
298 neg find x_inv48_Dis(p);
299}
300pattern x_inv48_notDis(p : Physical_Person) {
301 Physical_Person.disability_type(p, ::NONE);
302 Physical_Person.disability_percentage(p, 0.0);
303}
304pattern x_inv48_Dis(p : Physical_Person) {
305 neg find x_inv48_3(p);
306 Physical_Person.disability_percentage(p, disPer);
307 check(disPer > 0.0);
308 check(disPer <= 1.0);
309}
310pattern x_inv48_3(p : Physical_Person) {
311 Physical_Person.disability_type(p, ::NONE);
312}
313
314//inv49-OclKindOf-handled by multiplicity
315@Constraint(message = "inv49", severity = "error", key = {lur})
316pattern inv49(lur : Legal_Union_Record) {
317 neg find x_inv49_1(lur);
318}
319pattern x_inv49_1(lur : Legal_Union_Record) {
320 Legal_Union_Record.individual_A(lur, iA);
321 Legal_Union_Record.individual_B(lur, iB);
322 Tax_Payer(iA);
323 Physical_Person(iB);
324 neg find x_inv49_2(iB);
325 iA != iB;
326}
327pattern x_inv49_2(iB: Dependent) {
328 Dependent(iB);
329}
330
331//inv50-MultiplicityChecked
332//inv51-MultiplicityChecked
333//inv52-MultiplicityChecked
334//inv53-MultiplicityChecked \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/run/RunGenerator.xtend b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/run/RunGenerator.xtend
new file mode 100644
index 00000000..8bd70919
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/src/run/RunGenerator.xtend
@@ -0,0 +1,151 @@
1package run
2
3import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
5import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace
6import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type
8import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
9import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl.ModelResultImpl
10import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
11import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
12import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration
13import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
15import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner
16import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration
17import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
18import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
19import java.io.PrintWriter
20import java.text.SimpleDateFormat
21import java.util.Date
22import java.util.HashMap
23import java.util.List
24import java.util.Map
25import org.eclipse.emf.ecore.EAttribute
26import org.eclipse.emf.ecore.EClass
27import org.eclipse.emf.ecore.EEnum
28import org.eclipse.emf.ecore.EEnumLiteral
29import org.eclipse.emf.ecore.EObject
30import org.eclipse.emf.ecore.EPackage
31import org.eclipse.emf.ecore.EReference
32import org.eclipse.emf.ecore.resource.Resource
33import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
34import org.eclipse.viatra.query.runtime.api.IQueryGroup
35import Taxation.TaxationPackage
36
37class GenerateScenarios {
38 def static void main(String[] args) {
39 val Ecore2Logic ecore2Logic = new Ecore2Logic
40// val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic)
41// val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic)
42// val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic
43 // Workspace setup
44 val Date date = new Date(System.currentTimeMillis)
45 val SimpleDateFormat format = new SimpleDateFormat("dd-HHmm");
46 val formattedDate = format.format(date)
47
48 val workspace = new FileSystemWorkspace('''output/''' + formattedDate + '''/''', "")
49 workspace.initAndClear
50
51 // Logicproblem writing setup
52 val reg = Resource.Factory.Registry.INSTANCE
53 val map = reg.extensionToFactoryMap
54 map.put("logicproblem", new XMIResourceFactoryImpl)
55
56 println("Input and output workspaces are created")
57
58 print(TaxationPackage.eINSTANCE.getEClassifiers.filter(EClass).toList.get(0))
59
60 val metamodel = loadMetamodel(TaxationPackage.eINSTANCE)
61// val partialModel = loadPartialModel(inputs, "yakindu/Yakindu.xmi")
62// val queries = loadQueries(metamodel, Patterns.instance)
63 println("DSL loaded")
64
65 val SIZE = 10
66 var REPS = 1
67
68 val RUNTIME = 300
69
70 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration())
71// var modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem, partialModel)
72// var validModelExtensionProblem = viatra2Logic.transformQueries(queries, modelExtensionProblem,
73// new Viatra2LogicConfiguration)
74 var problem = modelGenerationProblem.output
75 workspace.writeModel(problem, "scenario.logicproblem")
76 println("Problem created")
77
78 for (var i = 0; i <= REPS; i++) {
79
80 var ViatraReasoner reasoner = new ViatraReasoner
81
82 // /////////////////////////////////////////////////////
83 // Define Config File
84 val solverConfig = new ViatraReasonerConfiguration => [
85 // add configuration things, in config file first
86// it.documentationLevel = DocumentationLevel::FULL
87// it.iteration = iter
88 it.runtimeLimit = RUNTIME
89 it.typeScopes.maxNewElements = SIZE
90 it.typeScopes.minNewElements = SIZE
91 ]
92
93 var solution = reasoner.solve(problem, solverConfig, workspace)
94 print("Problem Solved")
95
96 // Run Garbage Collector
97 val Runtime r = Runtime.getRuntime();
98 r.gc();
99 r.gc();
100 r.gc();
101 Thread.sleep(3000)
102 }
103
104 }
105
106 def static Map<Type, Integer> getTypeMap(Map<Class, Integer> classMap, EcoreMetamodelDescriptor metamodel,
107 Ecore2Logic e2l, Ecore2Logic_Trace trace) {
108 val typeMap = new HashMap<Type, Integer>
109 val listMap = metamodel.classes.toMap[s|s.name]
110
111 for (Class elem : classMap.keySet) {
112 typeMap.put(e2l.TypeofEClass(
113 trace,
114 listMap.get(elem.simpleName)
115 ), classMap.get(elem))
116 }
117 return typeMap
118 }
119
120 def static loadMetamodel(EPackage pckg) {
121 val List<EClass> classes = pckg.getEClassifiers.filter(EClass).toList
122 val List<EEnum> enums = pckg.getEClassifiers.filter(EEnum).toList
123 val List<EEnumLiteral> literals = enums.map[getELiterals].flatten.toList
124 val List<EReference> references = classes.map[getEReferences].flatten.toList
125 val List<EAttribute> attributes = classes.map[getEAttributes].flatten.toList
126 return new EcoreMetamodelDescriptor(classes, #{}, false, enums, literals, references, attributes)
127 }
128
129 def static loadPartialModel(ReasonerWorkspace inputs, String path) {
130 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl())
131 inputs.readModel(EObject, path).eResource.contents
132// inputs.readModel(EObject,"FamInstance.xmi").eResource.allContents.toList
133 }
134
135 def static loadQueries(EcoreMetamodelDescriptor metamodel, IQueryGroup i) {
136 val patterns = i.specifications.toList
137 val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet
138 val derivedFeatures = emptyMap
139 // NO DERIVED FEATURES
140// val derivedFeatures = new LinkedHashMap
141// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head)
142// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head)
143 val res = new ViatraQuerySetDescriptor(
144 patterns,
145 wfPatterns,
146 derivedFeatures
147 )
148 return res
149 }
150
151}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin
new file mode 100644
index 00000000..325fee79
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.RunGenerator.xtendbin
Binary files differ
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore
new file mode 100644
index 00000000..bd13352d
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/.gitignore
@@ -0,0 +1,2 @@
1/.GenerateScenarios.java._trace
2/.checkQueries.java._trace
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/GenerateScenarios.java b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/GenerateScenarios.java
new file mode 100644
index 00000000..7ec45124
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.queries/xtend-gen/run/GenerateScenarios.java
@@ -0,0 +1,165 @@
1package run;
2
3import Taxation.TaxationPackage;
4import com.google.common.base.Objects;
5import com.google.common.collect.Iterables;
6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic;
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration;
8import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace;
9import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor;
10import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput;
11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type;
12import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
13import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult;
14import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor;
15import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner;
16import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration;
17import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace;
18import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace;
19import java.text.SimpleDateFormat;
20import java.util.Collections;
21import java.util.Date;
22import java.util.HashMap;
23import java.util.List;
24import java.util.Map;
25import java.util.Set;
26import org.eclipse.emf.common.util.EList;
27import org.eclipse.emf.ecore.EAttribute;
28import org.eclipse.emf.ecore.EClass;
29import org.eclipse.emf.ecore.EEnum;
30import org.eclipse.emf.ecore.EEnumLiteral;
31import org.eclipse.emf.ecore.EObject;
32import org.eclipse.emf.ecore.EPackage;
33import org.eclipse.emf.ecore.EReference;
34import org.eclipse.emf.ecore.EStructuralFeature;
35import org.eclipse.emf.ecore.resource.Resource;
36import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
37import org.eclipse.viatra.query.runtime.api.IQueryGroup;
38import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
39import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation;
40import org.eclipse.xtend2.lib.StringConcatenation;
41import org.eclipse.xtext.xbase.lib.CollectionLiterals;
42import org.eclipse.xtext.xbase.lib.Exceptions;
43import org.eclipse.xtext.xbase.lib.Functions.Function1;
44import org.eclipse.xtext.xbase.lib.InputOutput;
45import org.eclipse.xtext.xbase.lib.IterableExtensions;
46import org.eclipse.xtext.xbase.lib.ListExtensions;
47import org.eclipse.xtext.xbase.lib.ObjectExtensions;
48import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
49
50@SuppressWarnings("all")
51public class GenerateScenarios {
52 public static void main(final String[] args) {
53 try {
54 final Ecore2Logic ecore2Logic = new Ecore2Logic();
55 long _currentTimeMillis = System.currentTimeMillis();
56 final Date date = new Date(_currentTimeMillis);
57 final SimpleDateFormat format = new SimpleDateFormat("dd-HHmm");
58 final String formattedDate = format.format(date);
59 StringConcatenation _builder = new StringConcatenation();
60 _builder.append("output/");
61 String _plus = (_builder.toString() + formattedDate);
62 StringConcatenation _builder_1 = new StringConcatenation();
63 _builder_1.append("/");
64 String _plus_1 = (_plus + _builder_1);
65 final FileSystemWorkspace workspace = new FileSystemWorkspace(_plus_1, "");
66 workspace.initAndClear();
67 final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
68 final Map<String, Object> map = reg.getExtensionToFactoryMap();
69 XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
70 map.put("logicproblem", _xMIResourceFactoryImpl);
71 InputOutput.<String>println("Input and output workspaces are created");
72 InputOutput.<EClass>print(IterableExtensions.<EClass>toList(Iterables.<EClass>filter(TaxationPackage.eINSTANCE.getEClassifiers(), EClass.class)).get(0));
73 final EcoreMetamodelDescriptor metamodel = GenerateScenarios.loadMetamodel(TaxationPackage.eINSTANCE);
74 InputOutput.<String>println("DSL loaded");
75 final int SIZE = 10;
76 int REPS = 1;
77 final int RUNTIME = 300;
78 Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration();
79 final TracedOutput<LogicProblem, Ecore2Logic_Trace> modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration);
80 LogicProblem problem = modelGenerationProblem.getOutput();
81 workspace.writeModel(problem, "scenario.logicproblem");
82 InputOutput.<String>println("Problem created");
83 for (int i = 0; (i <= REPS); i++) {
84 {
85 ViatraReasoner reasoner = new ViatraReasoner();
86 ViatraReasonerConfiguration _viatraReasonerConfiguration = new ViatraReasonerConfiguration();
87 final Procedure1<ViatraReasonerConfiguration> _function = (ViatraReasonerConfiguration it) -> {
88 it.runtimeLimit = RUNTIME;
89 it.typeScopes.maxNewElements = SIZE;
90 it.typeScopes.minNewElements = SIZE;
91 };
92 final ViatraReasonerConfiguration solverConfig = ObjectExtensions.<ViatraReasonerConfiguration>operator_doubleArrow(_viatraReasonerConfiguration, _function);
93 LogicResult solution = reasoner.solve(problem, solverConfig, workspace);
94 InputOutput.<String>print("Problem Solved");
95 final Runtime r = Runtime.getRuntime();
96 r.gc();
97 r.gc();
98 r.gc();
99 Thread.sleep(3000);
100 }
101 }
102 } catch (Throwable _e) {
103 throw Exceptions.sneakyThrow(_e);
104 }
105 }
106
107 public static Map<Type, Integer> getTypeMap(final Map<Class, Integer> classMap, final EcoreMetamodelDescriptor metamodel, final Ecore2Logic e2l, final Ecore2Logic_Trace trace) {
108 final HashMap<Type, Integer> typeMap = new HashMap<Type, Integer>();
109 final Function1<EClass, String> _function = (EClass s) -> {
110 return s.getName();
111 };
112 final Map<String, EClass> listMap = IterableExtensions.<String, EClass>toMap(metamodel.getClasses(), _function);
113 Set<Class> _keySet = classMap.keySet();
114 for (final Class elem : _keySet) {
115 typeMap.put(
116 e2l.TypeofEClass(trace,
117 listMap.get(elem.getSimpleName())), classMap.get(elem));
118 }
119 return typeMap;
120 }
121
122 public static EcoreMetamodelDescriptor loadMetamodel(final EPackage pckg) {
123 final List<EClass> classes = IterableExtensions.<EClass>toList(Iterables.<EClass>filter(pckg.getEClassifiers(), EClass.class));
124 final List<EEnum> enums = IterableExtensions.<EEnum>toList(Iterables.<EEnum>filter(pckg.getEClassifiers(), EEnum.class));
125 final Function1<EEnum, EList<EEnumLiteral>> _function = (EEnum it) -> {
126 return it.getELiterals();
127 };
128 final List<EEnumLiteral> literals = IterableExtensions.<EEnumLiteral>toList(Iterables.<EEnumLiteral>concat(ListExtensions.<EEnum, EList<EEnumLiteral>>map(enums, _function)));
129 final Function1<EClass, EList<EReference>> _function_1 = (EClass it) -> {
130 return it.getEReferences();
131 };
132 final List<EReference> references = IterableExtensions.<EReference>toList(Iterables.<EReference>concat(ListExtensions.<EClass, EList<EReference>>map(classes, _function_1)));
133 final Function1<EClass, EList<EAttribute>> _function_2 = (EClass it) -> {
134 return it.getEAttributes();
135 };
136 final List<EAttribute> attributes = IterableExtensions.<EAttribute>toList(Iterables.<EAttribute>concat(ListExtensions.<EClass, EList<EAttribute>>map(classes, _function_2)));
137 return new EcoreMetamodelDescriptor(classes, Collections.<EClass>unmodifiableSet(CollectionLiterals.<EClass>newHashSet()), false, enums, literals, references, attributes);
138 }
139
140 public static EList<EObject> loadPartialModel(final ReasonerWorkspace inputs, final String path) {
141 EList<EObject> _xblockexpression = null;
142 {
143 Map<String, Object> _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
144 XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
145 _extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
146 _xblockexpression = inputs.<EObject>readModel(EObject.class, path).eResource().getContents();
147 }
148 return _xblockexpression;
149 }
150
151 public static ViatraQuerySetDescriptor loadQueries(final EcoreMetamodelDescriptor metamodel, final IQueryGroup i) {
152 final List<IQuerySpecification<?>> patterns = IterableExtensions.<IQuerySpecification<?>>toList(i.getSpecifications());
153 final Function1<IQuerySpecification<?>, Boolean> _function = (IQuerySpecification<?> it) -> {
154 final Function1<PAnnotation, Boolean> _function_1 = (PAnnotation it_1) -> {
155 String _name = it_1.getName();
156 return Boolean.valueOf(Objects.equal(_name, "Constraint"));
157 };
158 return Boolean.valueOf(IterableExtensions.<PAnnotation>exists(it.getAllAnnotations(), _function_1));
159 };
160 final Set<IQuerySpecification<?>> wfPatterns = IterableExtensions.<IQuerySpecification<?>>toSet(IterableExtensions.<IQuerySpecification<?>>filter(patterns, _function));
161 final Map<IQuerySpecification<?>, EStructuralFeature> derivedFeatures = CollectionLiterals.<IQuerySpecification<?>, EStructuralFeature>emptyMap();
162 final ViatraQuerySetDescriptor res = new ViatraQuerySetDescriptor(patterns, wfPatterns, derivedFeatures);
163 return res;
164 }
165}
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project
new file mode 100644
index 00000000..d5638068
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/.project
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>case.study.a.instances</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 </buildSpec>
9 <natures>
10 </natures>
11</projectDescription>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH.xmi b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH.xmi
new file mode 100644
index 00000000..49e41c9e
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH.xmi
@@ -0,0 +1,52 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<TaxCard:Household
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:TaxCard="http:///TaxCard.ecore">
7 <parents xsi:type="TaxCard:Marriage_Record"
8 start_year="1950"
9 end_year="-1">
10 <individual_A
11 xsi:type="TaxCard:Resident_Tax_Payer"
12 birth_year="1950"
13 disability_type="NONE"
14 birth_month="10"
15 birth_day="6">
16 <owns_Address
17 xsi:type="TaxCard:Habitual_Address"
18 id2=""/>
19 <incomes
20 xsi:type="TaxCard:Local_Income">
21 <income_type
22 xsi:type="TaxCard:Capital_and_Investments_Income"/>
23 <details
24 distance="5.0"/>
25 <expenses
26 declared_amount="50.0"/>
27 </incomes>
28 </individual_A>
29 <individual_B
30 xsi:type="TaxCard:Non_Resident_Tax_Payer"
31 addresses="//@parents/@individual_B.0/@owns_Address.0 //@parents/@individual_B.0/@owns_Address.1"
32 birth_year="2000"
33 disability_percentage="0.5"
34 disability_type="A"
35 birth_month="5"
36 birth_day="20">
37 <owns_Address
38 xsi:type="TaxCard:Fiscal_Address"
39 taxPayer="//@parents/@individual_B.0"/>
40 <owns_Address
41 xsi:type="TaxCard:Habitual_Address"
42 country="BB"
43 taxPayer="//@parents/@individual_B.0"/>
44 </individual_B>
45 <individual_B
46 birth_year="1980"
47 disability_percentage="0.99"
48 disability_type="OTHER"
49 birth_month="7"
50 birth_day="6"/>
51 </parents>
52</TaxCard:Household>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH_new.xmi b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH_new.xmi
new file mode 100644
index 00000000..80783b87
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/FuncHH_new.xmi
@@ -0,0 +1,72 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<TaxCard:Household
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:TaxCard="http:///TaxCard.ecore">
7 <parents xsi:type="TaxCard:Marriage_Record"
8 start_year="1950"
9 end_year="-1">
10 <individual_A
11 xsi:type="TaxCard:Resident_Tax_Payer"
12 birth_year="2000"
13 disability_type="NONE"
14 birth_month="10"
15 birth_day="6">
16 <owns_Address
17 xsi:type="TaxCard:Habitual_Address"
18 id2=""/>
19 <dependents
20 birth_year="1995"
21 disability_type="NONE"
22 birth_month="6"
23 birth_day="5"/>
24 <incomes
25 xsi:type="TaxCard:Local_Income"
26 income_amount="50.0">
27 <income_type
28 xsi:type="TaxCard:Employment_Income"/>
29 <details
30 distance="20.0"
31 worked_days="5"/>
32 <details
33 distance="20.0"
34 worked_days="6"/>
35 <expenses
36 declared_amount="50.0"/>
37 </incomes>
38 </individual_A>
39 <individual_B
40 xsi:type="TaxCard:Non_Resident_Tax_Payer"
41 addresses="//@parents/@individual_B.0/@owns_Address.0 //@parents/@individual_B.0/@owns_Address.1"
42 birth_year="2000"
43 disability_percentage="0.5"
44 disability_type="A"
45 birth_month="5"
46 birth_day="20">
47 <owns_Address
48 xsi:type="TaxCard:Fiscal_Address"
49 country="FF"
50 taxPayer="//@parents/@individual_B.0"/>
51 <owns_Address
52 xsi:type="TaxCard:Habitual_Address"
53 country="BB"
54 taxPayer="//@parents/@individual_B.0"/>
55 </individual_B>
56 <individual_B
57 birth_year="1980"
58 disability_percentage="0.99"
59 disability_type="OTHER"
60 birth_month="7"
61 birth_day="6"/>
62 </parents>
63 <children
64 birth_year="1990"
65 disability_percentage="0.5"
66 birth_month="1"
67 birth_day="1"
68 continued_studies="true">
69 <allowances
70 reciver="//@parents/@individual_A"/>
71 </children>
72</TaxCard:Household>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/Resident_Tax_Payer.xmi b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/Resident_Tax_Payer.xmi
new file mode 100644
index 00000000..bacb9caf
--- /dev/null
+++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.samples/Resident_Tax_Payer.xmi
@@ -0,0 +1,7 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<TaxCard:Resident_Tax_Payer
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:TaxCard="http:///TaxCard.ecore">
6 <dependents/>
7</TaxCard:Resident_Tax_Payer>