# Copyright (C) 2024 Michael Becker  <alcexhim@gmail.com>
# 
# This file is part of Mocha.NET.
# 
# Mocha.NET is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# Mocha.NET is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Mocha.NET.  If not, see <https://www.gnu.org/licenses/>.

- entityDefinitions:
  - IDM_Module__get__Fully_Qualified_Name: '{0ab85e0b-5577-475a-b914-4578ffb928d7}'
  - IDMB_Module__get__Fully_Qualified_Name: '{55b6e0be-c1cc-43a1-8acc-0b29306e18d3}'

  - IDM_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary: '{ad727c24-c410-4905-a2ee-5809f19b1508}'
  - IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary: '{36546ed6-629c-47ff-a0ed-dbb640fd0396}'
  
  - IDM_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon: '{446ad171-625e-4a4e-b716-b0a21cc3a63b}'
  - IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon: '{9a53d6e1-6b32-4f17-b131-91ba6c3a79c1}'

  - IDM_Module__get__Parent_Module_Fully_Qualified_Name: '{6ef66c12-8676-41b7-adcb-6721210e85f6}'
  - IDMB_Module__get__Parent_Module_Fully_Qualified_Name: '{547dcf2f-d0aa-4e9a-b0c6-9a9b2abafd9a}'

  - IDM_Module__get__Parent_Module: '{f5512d81-a134-4d59-9ad0-671822642c55}'
  - IDMB_Module__get__Parent_Module: '{fe4dfbd9-bc17-460a-9b69-594a50e14f19}'

  - IDM_Module__get__Name: '{89dc08c4-fab5-4248-b0a4-d717fbbf6469}'
  - IDMB_Module__get__Name: '{9d5cec93-f7bf-41cc-9a96-de372f901244}'
  - IDMB_Module__get__Name_for_parent_module: '{b466459f-94ca-4b0f-8900-3a73a5da11f8}'

  - IDM_Module__has_parent__Module: '{cf8e7f08-2e44-46e1-be3f-eb50373f44ed}'
  - IDMB_Module__has_parent__Module: '{22083290-713f-466d-8aa4-be6c2a19d8cb}'

  - IDM_Module__get__Fully_Qualified_Name2: '{27b070c9-7130-414b-960d-511f2836ef06}'

- library: '&IDL_MochaBaseSystem;'
  instances:
  - getAttributeMethod: '&IDM_Module__get__Name;'
    forClassId: '&IDC_Module;'
    returnsAttributeId: '&IDA_Name;'
    verb: 'get'
    name: 'Name'

  - returnAttributeMethodBinding: '&IDMB_Module__get__Name;'
    executesMethod: '&IDM_Module__get__Name;'

  - returnAttributeMethodBinding: '&IDMB_Module__get__Name_for_parent_module;'
    executesMethod: '&IDM_Module__get__Name;'
    parameterAssignments:
    - globalIdentifier: '{40dd4401-acd9-4773-bec6-cf0a37606433}'
      assignsToParameter: '&IDC_Module;'
      assignsFromWorkData: '&IDI_WorkSet_ParentModule;'

  - evaluateBooleanExpressionMethod: '&IDM_Module__has_parent__Module;'
    forClassId: '&IDC_Module;'
    verb: 'has'
    name: 'parent Module'
    accessModifierId: '&IDI_AccessModifier_RootA2;'
    returnsAttributeId: '&IDA_ModuleHasParentModule;'
    source: '&IDMB_Module__get__Parent_Module;'
    operator: '&IDI_RelationalOperator_NotEmpty;'

  - returnAttributeMethodBinding: '&IDMB_Module__has_parent__Module;'
    executesMethod: '&IDM_Module__has_parent__Module;'
    
  - getRelationshipMethod: '&IDM_Module__get__Parent_Module;'
    forClassId: '&IDC_Module;'
    returnsWorkSetId: '&IDI_WorkSet_ParentModule;'
    verb: 'get'
    name: 'Parent Module'
    accessModifierId: '&IDI_AccessModifier_RootA2;'
    returnsRelationshipId: '&IDR_Module__has_parent__Module;'
    singular: yes

  - returnInstanceSetMethodBinding: '&IDMB_Module__get__Parent_Module;'
    executesMethod: '&IDM_Module__get__Parent_Module;'

  - getReferencedAttributeMethod: '&IDM_Module__get__Parent_Module_Fully_Qualified_Name;'
    forClassId: '&IDC_Module;'
    returnsAttributeId: '&IDA_Name;'
    verb: 'get'
    name: 'Parent Module Fully Qualified Name'
    accessModifierId: '&IDI_AccessModifier_RootA2;'
    referenceInstanceSet: '&IDMB_Module__get__Parent_Module;'
    answerAttribute: '&IDMB_Module__get__Fully_Qualified_Name;'
    
  - returnAttributeMethodBinding: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name;'
    executesMethod: '&IDM_Module__get__Parent_Module_Fully_Qualified_Name;'
    
  - buildAttributeMethod: '&IDM_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon;'
    forClassId: '&IDC_Module;'
    verb: 'get'
    name: 'Fully Qualified Name with trailing colon'
    accessModifierId: '&IDI_AccessModifier_Public;'
    initialValue: ''
    returnsAttributeId: '&IDA_Name;'
    buildsWithAttributes:
    - order: a
      executes: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name;'
    - order: b
      executes: '&IDMB_Common_Text__get__Colon;'

  - returnAttributeMethodBinding: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon;'
    executesMethod: '&IDM_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon;'
 
  - conditionalSelectAttributeMethod: '&IDM_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary;'
    forClassId: '&IDC_Module;'
    verb: 'get'
    name: 'Parent Module fully qualified Name with trailing colon if necessary'
    accessModifierId: '&IDI_AccessModifier_Public;'
    returnsAttributeId: '&IDA_Name;'
    cases:
    - globalIdentifier: '{839a1799-c429-4b37-bcfa-b56b2ac91cbc}'
      trueConditions:
      - instance: '&IDMB_Module__has_parent__Module;'
      useAnyCondition: no
      returnsAttributeId: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon;'
    - globalIdentifier: '{b5f45c93-0237-4c04-b90a-cda9cf05dfcd}'
      useAnyCondition: no
      returnsAttributeId: '&IDMB_Common_Text__get__Empty_String;'
      
  - returnAttributeMethodBinding: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary;'
    executesMethod: '&IDM_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary;'

  - buildAttributeMethod: '&IDM_Module__get__Fully_Qualified_Name;'
    forClassId: '&IDC_Module;'
    verb: 'get'
    name: 'Fully Qualified Name'
    accessModifierId: '&IDI_AccessModifier_Public;'
    initialValue: ''
    returnsAttributeId: '&IDA_Name;'
    buildsWithAttributes:
    - order: a
      executes: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary;'
    - order: b
      executes: '&IDMB_Module__get__Name;'
 
  - buildAttributeMethod: '&IDM_Module__get__Fully_Qualified_Name2;'
    forClassId: '&IDC_Module;'
    verb: 'get'
    name: 'Fully Qualified Name 2'
    accessModifierId: '&IDI_AccessModifier_Public;'
    initialValue: ''
    returnsAttributeId: '&IDA_Name;'
    buildsWithAttributes:
    - order: a
      executes: '&IDMB_Module__get__Parent_Module_Fully_Qualified_Name_with_trailing_colon_if_necessary;'
    - order: b
      executes: '&IDMB_Module__get__Name;'
 
  - returnAttributeMethodBinding: '&IDMB_Module__get__Fully_Qualified_Name;'
    executesMethod: '&IDM_Module__get__Fully_Qualified_Name;'