взяти визначення мавка;
взяти визначення РМв1;

простір мавка {
  внутрішня дія ЗРЗМ(значення: РМв1::Значення) -> Значення {
    вернути Значення { значення.дані як п64, значення.вид };
  }

  внутрішня дія ЗМЗР(значення: Значення) -> РМв1::Значення {
    вернути РМв1::Значення { значення.дані як п64, значення.вид };
  }

  внутрішня дія рідна_дія_РМв1_надрукувати_кд(Р: *РМв1::Розширення, значення: кд) {
    надрукувати_кд(Р.М як *Машина, значення);
  }

  внутрішня дія рідна_дія_РМв1_надрукувати_значення(Р: *РМв1::Розширення, значення: РМв1::Значення) {
    надрукувати_значення(Р.М як *Машина, ЗРЗМ(значення), 0, 0);
  }

  внутрішня дія рідна_дія_РМв1_створити_притримувач(я: *РМв1::Розширення) -> *РМв1::Притримувач {
    стала М = я.М як *Машина;

    змінна п = виділити<РМв1::Притримувач>(М, 1);

    п.Р = я;
    п.пм = створити_притримувач(М);

    вернути п;
  }

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

    знищити_притримувач(М, притримувач.пм як *Притримувач);

    звільнити(М, притримувач);
  }

  внутрішня дія рідна_дія_РМв1_створити_користувацькі_дані(я: *РМв1::Розширення, дані: адреса, дія_перед_знищенням: РМв1::ДіяПередЗнищеннямКористувацькихДаних) -> *РМв1::КористувацькіДані {
  }

  внутрішня дія рідна_дія_РМв1_записати_користувацькі_дані_предмету(я: *РМв1::Розширення, значення: РМв1::Значення, користувацькі_дані: *РМв1::КористувацькіДані, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_створити_число(я: *РМв1::Розширення, значення: р64, р: *РМв1::Значення) -> логічне {
    р::вміст = ЗМЗР(ЧИСЛО(значення));

    вернути так;
  }

  внутрішня дія рідна_дія_РМв1_створити_текст(я: *РМв1::Розширення, значення: кд, р: *РМв1::Значення) -> логічне {
    р::вміст = ЗМЗР(ПРЕДМЕТ(створити_текст(я.М як *Машина, значення)));

    вернути так;
  }

  внутрішня дія рідна_дія_РМв1_створити_текст_без_копіювання(я: *РМв1::Розширення, значення: кд, р: *РМв1::Значення) -> логічне {
    р::вміст = ЗМЗР(ПРЕДМЕТ(створити_текст_без_копіювання(
      я.М як *Машина,
      значення.розмір,
      значення.дані
    )));

    вернути так;
  }

  структура КДРДРМв1 {
    Р: *РМв1::Розширення;
    рідна_дія: РМв1::РіднаДія;
    додаткові_користувацькі_дані: *РМв1::КористувацькіДані;
  }

  внутрішня дія дія_перед_знищенням_КДРДРМв1(М: *Машина, користувацькі_дані: *КористувацькіДані) {
    змінна корд = користувацькі_дані.значення як *КДРДРМв1;

    якщо корд.додаткові_користувацькі_дані != пусто {
      // ...
    }

    звільнити(М, корд);
  }

  внутрішня дія рідна_дія_РМв1 (
    М: *Машина,
    діяльність: *Діяльність,
  ) -> ЗначенняАбоСтанПадіння {
    змінна дкд = діяльність.предмет_дії.додаткові_користувацькі_дані;
    якщо дкд == пусто {
      вернути НЕДІЙСНЕ; // щось пішло не так, вбудована помилка
    }

    змінна корд = дкд.значення як *КДРДРМв1;

    змінна р: РМв1::Значення;

    змінна успіх = корд.рідна_дія(корд.Р, діяльність як *РМв1::Діяльність, р::адреса);
    якщо не успіх {
      // потім: доробити
    }

    вернути НЕДІЙСНЕ;
  }

  внутрішня дія рідна_дія_РМв1_створити_дію(я: *РМв1::Розширення, назва: РМв1::Значення, рідна_дія: РМв1::РіднаДія, р: *РМв1::Значення) -> логічне {
    стала М = я.М як *Машина;

    змінна назва_пт: *ПредметТексту = пусто;

    // потім: назва.дані як *Предмет як *ПредметТексту

    змінна д = створити_рідну_дію(
      М,
      назва_пт,
      М.пуста_послідовність,
      пусто,
      рідна_дія_РМв1,
      пусто,
    );

    р::вміст = ЗМЗР(ПРЕДМЕТ(д));

    змінна корд = виділити<КДРДРМв1>(М, 1);
    корд.Р = я;
    корд.рідна_дія = рідна_дія;
    корд.додаткові_користувацькі_дані = пусто;

    д.додаткові_користувацькі_дані = створити_користувацькі_дані(
      М,
      корд,
      дія_перед_знищенням_КДРДРМв1,
    );

    вернути так;
  }

  внутрішня дія рідна_дія_РМв1_створити_клас(я: *РМв1::Розширення, назва: РМв1::Значення, предок: РМв1::Значення, параметри: РМв1::Значення, дії: РМв1::Значення, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_створити_модуль(я: *РМв1::Розширення, назва: РМв1::Значення, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_створити_список(я: *РМв1::Розширення, вмісткість: природне, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_створити_словник(я: *РМв1::Розширення, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_створити_дані(я: *РМв1::Розширення, дані: *п8, розмір: природне, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_створити_дані_без_копіювання(я: *РМв1::Розширення, дані: *п8, розмір: природне, р: *РМв1::Значення) -> логічне {
  }

  внутрішня дія рідна_дія_РМв1_здійснити(я: *РМв1::Розширення, значення: РМв1::Значення, здійснювач: РМв1::Значення, дз: *РМв1::Значення, кз: природне, р: *РМв1::Значення) -> логічне {
  }

  дія створити_РМв1(М: *Машина) -> *РМв1::Розширення {
    змінна Р = виділити<РМв1::Розширення>(М, 1);

    Р.М = М;
    Р.надрукувати_кд = рідна_дія_РМв1_надрукувати_кд;
    Р.надрукувати_значення = рідна_дія_РМв1_надрукувати_значення;
    Р.створити_притримувач = рідна_дія_РМв1_створити_притримувач;
    Р.знищити_притримувач = рідна_дія_РМв1_знищити_притримувач;
    Р.створити_користувацькі_дані = рідна_дія_РМв1_створити_користувацькі_дані;
    Р.записати_користувацькі_дані_предмету = рідна_дія_РМв1_записати_користувацькі_дані_предмету;
    Р.створити_число = рідна_дія_РМв1_створити_число;
    Р.створити_текст = рідна_дія_РМв1_створити_текст;
    Р.створити_текст_без_копіювання = рідна_дія_РМв1_створити_текст_без_копіювання;
    Р.створити_дію = рідна_дія_РМв1_створити_дію;
    Р.створити_клас = рідна_дія_РМв1_створити_клас;
    Р.створити_модуль = рідна_дія_РМв1_створити_модуль;
    Р.створити_список = рідна_дія_РМв1_створити_список;
    Р.створити_словник = рідна_дія_РМв1_створити_словник;
    Р.створити_дані = рідна_дія_РМв1_створити_дані;
    Р.створити_дані_без_копіювання = рідна_дія_РМв1_створити_дані_без_копіювання;
    Р.здійснити = рідна_дія_РМв1_здійснити;

    вернути Р;
  }

  дія завантажити_РМв1(М: *Машина, шлях: *ПредметТексту, назва_символа: *ПредметТексту) -> ЗначенняАбоСтанПадіння {
    змінна Р = створити_РМв1(М);

    М.налаштування.завантажити_РМв1(М, Р, шлях, назва_символа);

    вернути НЕДІЙСНЕ;
  }
}