// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)

взяти означення мавка/машина;

простір мавка {
  дія заповнити_структуру_Модуль(
    М: адреса<Машина>
  ) {
    М.предмет_структури_Модуль.заборонити_наслідування = так;
  }

  дія створити_модуль(
    М: адреса<Машина>,
    назва: адреса<ПредметТексту>
  ) -> адреса<ПредметМодуля> {
    змінна предмет = виділити_предмет<ПредметМодуля>(М, М.предмет_структури_Модуль);

    предмет.готовий = ні;
    предмет.назва = назва;
    предмет.властивості = Призначення { 0, пусто, 0 };

    вернути предмет;
  }

  дія предмет_модуля_отримати_властивість(
    М: адреса<Машина>,
    предмет_модуля: адреса<ПредметМодуля>,
    назва: адреса<ПредметТексту>,
    місцезнаходження: Місцезнаходження
  ) -> ЗначенняАбоСтанПадіння {
    змінна значення_властивості = НЕДІЙСНЕ;

    якщо знайти_призначене(
      М,
      предмет_модуля.властивості,
      назва,
      значення_властивості::адреса
    ) {
      вернути значення_властивості;
    }

    змінна предмет_методу = знайти_метод_в_структурі(
      М,
      М.предмет_структури_Модуль,
      назва
    );

    якщо предмет_методу == пусто {
      вернути НЕДІЙСНЕ;
    }

    вернути МАШИННИЙ_ПРЕДМЕТ(предмет_методу);
  }

  дія предмет_модуля_змінити_властивість(
    М: адреса<Машина>,
    предмет_модуля: адреса<ПредметМодуля>,
    назва: адреса<ПредметТексту>,
    значення: Значення,
    місцезнаходження: Місцезнаходження
  ) {
    призначити(
      М,
      предмет_модуля.властивості::адреса,
      назва,
      значення
    );
  }
}