2#include <ossia/network/dataspace/dataspace.hpp> 
    3#include <ossia/network/dataspace/value_with_unit.hpp> 
    6template <
typename Functor>
 
    7auto apply(Functor&& functor, 
const strong_value_variant& arg0, 
const unit_variant& arg1)
 
   11    case strong_value_variant::Type::Type0: {
 
   14        case unit_variant::Type::Type0: {
 
   15          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
   17        case unit_variant::Type::Type1: {
 
   18          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
   20        case unit_variant::Type::Type2: {
 
   21          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
   23        case unit_variant::Type::Type3: {
 
   24          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
   26        case unit_variant::Type::Type4: {
 
   27          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
   29        case unit_variant::Type::Type5: {
 
   30          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
   32        case unit_variant::Type::Type6: {
 
   33          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
   35        case unit_variant::Type::Type7: {
 
   36          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
   39          ossia_do_throw(std::runtime_error, 
": bad type");
 
   42    case strong_value_variant::Type::Type1: {
 
   45        case unit_variant::Type::Type0: {
 
   46          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
   48        case unit_variant::Type::Type1: {
 
   49          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
   51        case unit_variant::Type::Type2: {
 
   52          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
   54        case unit_variant::Type::Type3: {
 
   55          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
   57        case unit_variant::Type::Type4: {
 
   58          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
   60        case unit_variant::Type::Type5: {
 
   61          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
   63        case unit_variant::Type::Type6: {
 
   64          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
   66        case unit_variant::Type::Type7: {
 
   67          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
   70          ossia_do_throw(std::runtime_error, 
": bad type");
 
   73    case strong_value_variant::Type::Type2: {
 
   76        case unit_variant::Type::Type0: {
 
   77          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
   79        case unit_variant::Type::Type1: {
 
   80          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
   82        case unit_variant::Type::Type2: {
 
   83          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
   85        case unit_variant::Type::Type3: {
 
   86          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
   88        case unit_variant::Type::Type4: {
 
   89          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
   91        case unit_variant::Type::Type5: {
 
   92          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
   94        case unit_variant::Type::Type6: {
 
   95          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
   97        case unit_variant::Type::Type7: {
 
   98          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
  101          ossia_do_throw(std::runtime_error, 
": bad type");
 
  104    case strong_value_variant::Type::Type3: {
 
  107        case unit_variant::Type::Type0: {
 
  108          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
  110        case unit_variant::Type::Type1: {
 
  111          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
  113        case unit_variant::Type::Type2: {
 
  114          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
  116        case unit_variant::Type::Type3: {
 
  117          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
  119        case unit_variant::Type::Type4: {
 
  120          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
  122        case unit_variant::Type::Type5: {
 
  123          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
  125        case unit_variant::Type::Type6: {
 
  126          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
  128        case unit_variant::Type::Type7: {
 
  129          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
  132          ossia_do_throw(std::runtime_error, 
": bad type");
 
  135    case strong_value_variant::Type::Type4: {
 
  138        case unit_variant::Type::Type0: {
 
  139          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
  141        case unit_variant::Type::Type1: {
 
  142          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
  144        case unit_variant::Type::Type2: {
 
  145          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
  147        case unit_variant::Type::Type3: {
 
  148          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
  150        case unit_variant::Type::Type4: {
 
  151          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
  153        case unit_variant::Type::Type5: {
 
  154          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
  156        case unit_variant::Type::Type6: {
 
  157          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
  159        case unit_variant::Type::Type7: {
 
  160          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
  163          ossia_do_throw(std::runtime_error, 
": bad type");
 
  166    case strong_value_variant::Type::Type5: {
 
  169        case unit_variant::Type::Type0: {
 
  170          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
  172        case unit_variant::Type::Type1: {
 
  173          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
  175        case unit_variant::Type::Type2: {
 
  176          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
  178        case unit_variant::Type::Type3: {
 
  179          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
  181        case unit_variant::Type::Type4: {
 
  182          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
  184        case unit_variant::Type::Type5: {
 
  185          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
  187        case unit_variant::Type::Type6: {
 
  188          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
  190        case unit_variant::Type::Type7: {
 
  191          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
  194          ossia_do_throw(std::runtime_error, 
": bad type");
 
  197    case strong_value_variant::Type::Type6: {
 
  200        case unit_variant::Type::Type0: {
 
  201          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
  203        case unit_variant::Type::Type1: {
 
  204          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
  206        case unit_variant::Type::Type2: {
 
  207          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
  209        case unit_variant::Type::Type3: {
 
  210          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
  212        case unit_variant::Type::Type4: {
 
  213          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
  215        case unit_variant::Type::Type5: {
 
  216          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
  218        case unit_variant::Type::Type6: {
 
  219          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
  221        case unit_variant::Type::Type7: {
 
  222          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
  225          ossia_do_throw(std::runtime_error, 
": bad type");
 
  228    case strong_value_variant::Type::Type7: {
 
  231        case unit_variant::Type::Type0: {
 
  232          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
  234        case unit_variant::Type::Type1: {
 
  235          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
  237        case unit_variant::Type::Type2: {
 
  238          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
  240        case unit_variant::Type::Type3: {
 
  241          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
  243        case unit_variant::Type::Type4: {
 
  244          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
  246        case unit_variant::Type::Type5: {
 
  247          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
  249        case unit_variant::Type::Type6: {
 
  250          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
  252        case unit_variant::Type::Type7: {
 
  253          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
  256          ossia_do_throw(std::runtime_error, 
": bad type");
 
  259    case strong_value_variant::Type::Type8: {
 
  262        case unit_variant::Type::Type0: {
 
  263          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
  265        case unit_variant::Type::Type1: {
 
  266          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
  268        case unit_variant::Type::Type2: {
 
  269          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
  271        case unit_variant::Type::Type3: {
 
  272          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
  274        case unit_variant::Type::Type4: {
 
  275          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
  277        case unit_variant::Type::Type5: {
 
  278          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
  280        case unit_variant::Type::Type6: {
 
  281          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
  283        case unit_variant::Type::Type7: {
 
  284          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
  287          ossia_do_throw(std::runtime_error, 
": bad type");
 
  291      ossia_do_throw(std::runtime_error, 
": bad type");
 
  294template <
typename Functor>
 
  295auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const angle_u& arg1)
 
  299    case value_variant_type::Type::Type0: {
 
  302        case angle_u::Type::Type0: {
 
  303          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
  305        case angle_u::Type::Type1: {
 
  306          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
  309          ossia_do_throw(std::runtime_error, 
": bad type");
 
  312    case value_variant_type::Type::Type1: {
 
  315        case angle_u::Type::Type0: {
 
  316          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
  318        case angle_u::Type::Type1: {
 
  319          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
  322          ossia_do_throw(std::runtime_error, 
": bad type");
 
  325    case value_variant_type::Type::Type2: {
 
  328        case angle_u::Type::Type0: {
 
  329          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
  331        case angle_u::Type::Type1: {
 
  332          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
  335          ossia_do_throw(std::runtime_error, 
": bad type");
 
  338    case value_variant_type::Type::Type3: {
 
  341        case angle_u::Type::Type0: {
 
  342          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
  344        case angle_u::Type::Type1: {
 
  345          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
  348          ossia_do_throw(std::runtime_error, 
": bad type");
 
  351    case value_variant_type::Type::Type4: {
 
  354        case angle_u::Type::Type0: {
 
  355          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
  357        case angle_u::Type::Type1: {
 
  358          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
  361          ossia_do_throw(std::runtime_error, 
": bad type");
 
  364    case value_variant_type::Type::Type5: {
 
  367        case angle_u::Type::Type0: {
 
  368          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
  370        case angle_u::Type::Type1: {
 
  371          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
  374          ossia_do_throw(std::runtime_error, 
": bad type");
 
  377    case value_variant_type::Type::Type6: {
 
  380        case angle_u::Type::Type0: {
 
  381          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
  383        case angle_u::Type::Type1: {
 
  384          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
  387          ossia_do_throw(std::runtime_error, 
": bad type");
 
  390    case value_variant_type::Type::Type7: {
 
  393        case angle_u::Type::Type0: {
 
  394          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
  396        case angle_u::Type::Type1: {
 
  397          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
  400          ossia_do_throw(std::runtime_error, 
": bad type");
 
  403    case value_variant_type::Type::Type8: {
 
  406        case angle_u::Type::Type0: {
 
  407          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
  409        case angle_u::Type::Type1: {
 
  410          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
  413          ossia_do_throw(std::runtime_error, 
": bad type");
 
  416    case value_variant_type::Type::Type9: {
 
  419        case angle_u::Type::Type0: {
 
  420          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
  422        case angle_u::Type::Type1: {
 
  423          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
  426          ossia_do_throw(std::runtime_error, 
": bad type");
 
  430      ossia_do_throw(std::runtime_error, 
": bad type");
 
  433template <
typename Functor>
 
  434auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const color_u& arg1)
 
  438    case value_variant_type::Type::Type0: {
 
  441        case color_u::Type::Type0: {
 
  442          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
  444        case color_u::Type::Type1: {
 
  445          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
  447        case color_u::Type::Type2: {
 
  448          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
  450        case color_u::Type::Type3: {
 
  451          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
  453        case color_u::Type::Type4: {
 
  454          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
  456        case color_u::Type::Type5: {
 
  457          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
  459        case color_u::Type::Type6: {
 
  460          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
  462        case color_u::Type::Type7: {
 
  463          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
  465        case color_u::Type::Type8: {
 
  466          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
  469          ossia_do_throw(std::runtime_error, 
": bad type");
 
  472    case value_variant_type::Type::Type1: {
 
  475        case color_u::Type::Type0: {
 
  476          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
  478        case color_u::Type::Type1: {
 
  479          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
  481        case color_u::Type::Type2: {
 
  482          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
  484        case color_u::Type::Type3: {
 
  485          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
  487        case color_u::Type::Type4: {
 
  488          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
  490        case color_u::Type::Type5: {
 
  491          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
  493        case color_u::Type::Type6: {
 
  494          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
  496        case color_u::Type::Type7: {
 
  497          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
  499        case color_u::Type::Type8: {
 
  500          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
  503          ossia_do_throw(std::runtime_error, 
": bad type");
 
  506    case value_variant_type::Type::Type2: {
 
  509        case color_u::Type::Type0: {
 
  510          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
  512        case color_u::Type::Type1: {
 
  513          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
  515        case color_u::Type::Type2: {
 
  516          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
  518        case color_u::Type::Type3: {
 
  519          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
  521        case color_u::Type::Type4: {
 
  522          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
  524        case color_u::Type::Type5: {
 
  525          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
  527        case color_u::Type::Type6: {
 
  528          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
  530        case color_u::Type::Type7: {
 
  531          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
  533        case color_u::Type::Type8: {
 
  534          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
  537          ossia_do_throw(std::runtime_error, 
": bad type");
 
  540    case value_variant_type::Type::Type3: {
 
  543        case color_u::Type::Type0: {
 
  544          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
  546        case color_u::Type::Type1: {
 
  547          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
  549        case color_u::Type::Type2: {
 
  550          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
  552        case color_u::Type::Type3: {
 
  553          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
  555        case color_u::Type::Type4: {
 
  556          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
  558        case color_u::Type::Type5: {
 
  559          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
  561        case color_u::Type::Type6: {
 
  562          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
  564        case color_u::Type::Type7: {
 
  565          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
  567        case color_u::Type::Type8: {
 
  568          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
  571          ossia_do_throw(std::runtime_error, 
": bad type");
 
  574    case value_variant_type::Type::Type4: {
 
  577        case color_u::Type::Type0: {
 
  578          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
  580        case color_u::Type::Type1: {
 
  581          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
  583        case color_u::Type::Type2: {
 
  584          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
  586        case color_u::Type::Type3: {
 
  587          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
  589        case color_u::Type::Type4: {
 
  590          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
  592        case color_u::Type::Type5: {
 
  593          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
  595        case color_u::Type::Type6: {
 
  596          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
  598        case color_u::Type::Type7: {
 
  599          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
  601        case color_u::Type::Type8: {
 
  602          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
  605          ossia_do_throw(std::runtime_error, 
": bad type");
 
  608    case value_variant_type::Type::Type5: {
 
  611        case color_u::Type::Type0: {
 
  612          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
  614        case color_u::Type::Type1: {
 
  615          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
  617        case color_u::Type::Type2: {
 
  618          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
  620        case color_u::Type::Type3: {
 
  621          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
  623        case color_u::Type::Type4: {
 
  624          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
  626        case color_u::Type::Type5: {
 
  627          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
  629        case color_u::Type::Type6: {
 
  630          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
  632        case color_u::Type::Type7: {
 
  633          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
  635        case color_u::Type::Type8: {
 
  636          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
  639          ossia_do_throw(std::runtime_error, 
": bad type");
 
  642    case value_variant_type::Type::Type6: {
 
  645        case color_u::Type::Type0: {
 
  646          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
  648        case color_u::Type::Type1: {
 
  649          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
  651        case color_u::Type::Type2: {
 
  652          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
  654        case color_u::Type::Type3: {
 
  655          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
  657        case color_u::Type::Type4: {
 
  658          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
  660        case color_u::Type::Type5: {
 
  661          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
  663        case color_u::Type::Type6: {
 
  664          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
  666        case color_u::Type::Type7: {
 
  667          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
  669        case color_u::Type::Type8: {
 
  670          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
  673          ossia_do_throw(std::runtime_error, 
": bad type");
 
  676    case value_variant_type::Type::Type7: {
 
  679        case color_u::Type::Type0: {
 
  680          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
  682        case color_u::Type::Type1: {
 
  683          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
  685        case color_u::Type::Type2: {
 
  686          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
  688        case color_u::Type::Type3: {
 
  689          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
  691        case color_u::Type::Type4: {
 
  692          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
  694        case color_u::Type::Type5: {
 
  695          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
  697        case color_u::Type::Type6: {
 
  698          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
  700        case color_u::Type::Type7: {
 
  701          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
  703        case color_u::Type::Type8: {
 
  704          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
  707          ossia_do_throw(std::runtime_error, 
": bad type");
 
  710    case value_variant_type::Type::Type8: {
 
  713        case color_u::Type::Type0: {
 
  714          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
  716        case color_u::Type::Type1: {
 
  717          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
  719        case color_u::Type::Type2: {
 
  720          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
  722        case color_u::Type::Type3: {
 
  723          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
  725        case color_u::Type::Type4: {
 
  726          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
  728        case color_u::Type::Type5: {
 
  729          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
  731        case color_u::Type::Type6: {
 
  732          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
  734        case color_u::Type::Type7: {
 
  735          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
  737        case color_u::Type::Type8: {
 
  738          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
  741          ossia_do_throw(std::runtime_error, 
": bad type");
 
  744    case value_variant_type::Type::Type9: {
 
  747        case color_u::Type::Type0: {
 
  748          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
  750        case color_u::Type::Type1: {
 
  751          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
  753        case color_u::Type::Type2: {
 
  754          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
  756        case color_u::Type::Type3: {
 
  757          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
  759        case color_u::Type::Type4: {
 
  760          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value4);
 
  762        case color_u::Type::Type5: {
 
  763          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value5);
 
  765        case color_u::Type::Type6: {
 
  766          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value6);
 
  768        case color_u::Type::Type7: {
 
  769          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value7);
 
  771        case color_u::Type::Type8: {
 
  772          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value8);
 
  775          ossia_do_throw(std::runtime_error, 
": bad type");
 
  779      ossia_do_throw(std::runtime_error, 
": bad type");
 
  782template <
typename Functor>
 
  783auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const distance_u& arg1)
 
  787    case value_variant_type::Type::Type0: {
 
  790        case distance_u::Type::Type0: {
 
  791          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
  793        case distance_u::Type::Type1: {
 
  794          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
  796        case distance_u::Type::Type2: {
 
  797          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
  799        case distance_u::Type::Type3: {
 
  800          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
  802        case distance_u::Type::Type4: {
 
  803          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
  805        case distance_u::Type::Type5: {
 
  806          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
  808        case distance_u::Type::Type6: {
 
  809          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
  811        case distance_u::Type::Type7: {
 
  812          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
  814        case distance_u::Type::Type8: {
 
  815          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
  817        case distance_u::Type::Type9: {
 
  818          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
  820        case distance_u::Type::Type10: {
 
  821          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value10);
 
  824          ossia_do_throw(std::runtime_error, 
": bad type");
 
  827    case value_variant_type::Type::Type1: {
 
  830        case distance_u::Type::Type0: {
 
  831          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
  833        case distance_u::Type::Type1: {
 
  834          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
  836        case distance_u::Type::Type2: {
 
  837          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
  839        case distance_u::Type::Type3: {
 
  840          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
  842        case distance_u::Type::Type4: {
 
  843          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
  845        case distance_u::Type::Type5: {
 
  846          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
  848        case distance_u::Type::Type6: {
 
  849          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
  851        case distance_u::Type::Type7: {
 
  852          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
  854        case distance_u::Type::Type8: {
 
  855          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
  857        case distance_u::Type::Type9: {
 
  858          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
  860        case distance_u::Type::Type10: {
 
  861          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value10);
 
  864          ossia_do_throw(std::runtime_error, 
": bad type");
 
  867    case value_variant_type::Type::Type2: {
 
  870        case distance_u::Type::Type0: {
 
  871          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
  873        case distance_u::Type::Type1: {
 
  874          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
  876        case distance_u::Type::Type2: {
 
  877          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
  879        case distance_u::Type::Type3: {
 
  880          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
  882        case distance_u::Type::Type4: {
 
  883          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
  885        case distance_u::Type::Type5: {
 
  886          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
  888        case distance_u::Type::Type6: {
 
  889          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
  891        case distance_u::Type::Type7: {
 
  892          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
  894        case distance_u::Type::Type8: {
 
  895          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
  897        case distance_u::Type::Type9: {
 
  898          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
  900        case distance_u::Type::Type10: {
 
  901          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value10);
 
  904          ossia_do_throw(std::runtime_error, 
": bad type");
 
  907    case value_variant_type::Type::Type3: {
 
  910        case distance_u::Type::Type0: {
 
  911          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
  913        case distance_u::Type::Type1: {
 
  914          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
  916        case distance_u::Type::Type2: {
 
  917          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
  919        case distance_u::Type::Type3: {
 
  920          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
  922        case distance_u::Type::Type4: {
 
  923          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
  925        case distance_u::Type::Type5: {
 
  926          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
  928        case distance_u::Type::Type6: {
 
  929          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
  931        case distance_u::Type::Type7: {
 
  932          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
  934        case distance_u::Type::Type8: {
 
  935          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
  937        case distance_u::Type::Type9: {
 
  938          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
  940        case distance_u::Type::Type10: {
 
  941          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value10);
 
  944          ossia_do_throw(std::runtime_error, 
": bad type");
 
  947    case value_variant_type::Type::Type4: {
 
  950        case distance_u::Type::Type0: {
 
  951          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
  953        case distance_u::Type::Type1: {
 
  954          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
  956        case distance_u::Type::Type2: {
 
  957          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
  959        case distance_u::Type::Type3: {
 
  960          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
  962        case distance_u::Type::Type4: {
 
  963          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
  965        case distance_u::Type::Type5: {
 
  966          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
  968        case distance_u::Type::Type6: {
 
  969          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
  971        case distance_u::Type::Type7: {
 
  972          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
  974        case distance_u::Type::Type8: {
 
  975          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
  977        case distance_u::Type::Type9: {
 
  978          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value9);
 
  980        case distance_u::Type::Type10: {
 
  981          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value10);
 
  984          ossia_do_throw(std::runtime_error, 
": bad type");
 
  987    case value_variant_type::Type::Type5: {
 
  990        case distance_u::Type::Type0: {
 
  991          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
  993        case distance_u::Type::Type1: {
 
  994          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
  996        case distance_u::Type::Type2: {
 
  997          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
  999        case distance_u::Type::Type3: {
 
 1000          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 1002        case distance_u::Type::Type4: {
 
 1003          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 1005        case distance_u::Type::Type5: {
 
 1006          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 1008        case distance_u::Type::Type6: {
 
 1009          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 1011        case distance_u::Type::Type7: {
 
 1012          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 1014        case distance_u::Type::Type8: {
 
 1015          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 1017        case distance_u::Type::Type9: {
 
 1018          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value9);
 
 1020        case distance_u::Type::Type10: {
 
 1021          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value10);
 
 1024          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1027    case value_variant_type::Type::Type6: {
 
 1030        case distance_u::Type::Type0: {
 
 1031          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 1033        case distance_u::Type::Type1: {
 
 1034          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 1036        case distance_u::Type::Type2: {
 
 1037          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 1039        case distance_u::Type::Type3: {
 
 1040          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 1042        case distance_u::Type::Type4: {
 
 1043          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 1045        case distance_u::Type::Type5: {
 
 1046          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 1048        case distance_u::Type::Type6: {
 
 1049          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 1051        case distance_u::Type::Type7: {
 
 1052          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 1054        case distance_u::Type::Type8: {
 
 1055          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 1057        case distance_u::Type::Type9: {
 
 1058          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value9);
 
 1060        case distance_u::Type::Type10: {
 
 1061          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value10);
 
 1064          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1067    case value_variant_type::Type::Type7: {
 
 1070        case distance_u::Type::Type0: {
 
 1071          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 1073        case distance_u::Type::Type1: {
 
 1074          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 1076        case distance_u::Type::Type2: {
 
 1077          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 1079        case distance_u::Type::Type3: {
 
 1080          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 1082        case distance_u::Type::Type4: {
 
 1083          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 1085        case distance_u::Type::Type5: {
 
 1086          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 1088        case distance_u::Type::Type6: {
 
 1089          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 1091        case distance_u::Type::Type7: {
 
 1092          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 1094        case distance_u::Type::Type8: {
 
 1095          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 1097        case distance_u::Type::Type9: {
 
 1098          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value9);
 
 1100        case distance_u::Type::Type10: {
 
 1101          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value10);
 
 1104          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1107    case value_variant_type::Type::Type8: {
 
 1110        case distance_u::Type::Type0: {
 
 1111          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 1113        case distance_u::Type::Type1: {
 
 1114          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 1116        case distance_u::Type::Type2: {
 
 1117          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 1119        case distance_u::Type::Type3: {
 
 1120          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 1122        case distance_u::Type::Type4: {
 
 1123          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 1125        case distance_u::Type::Type5: {
 
 1126          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 1128        case distance_u::Type::Type6: {
 
 1129          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 1131        case distance_u::Type::Type7: {
 
 1132          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 1134        case distance_u::Type::Type8: {
 
 1135          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 1137        case distance_u::Type::Type9: {
 
 1138          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value9);
 
 1140        case distance_u::Type::Type10: {
 
 1141          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value10);
 
 1144          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1147    case value_variant_type::Type::Type9: {
 
 1150        case distance_u::Type::Type0: {
 
 1151          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 1153        case distance_u::Type::Type1: {
 
 1154          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 1156        case distance_u::Type::Type2: {
 
 1157          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 1159        case distance_u::Type::Type3: {
 
 1160          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
 1162        case distance_u::Type::Type4: {
 
 1163          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value4);
 
 1165        case distance_u::Type::Type5: {
 
 1166          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value5);
 
 1168        case distance_u::Type::Type6: {
 
 1169          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value6);
 
 1171        case distance_u::Type::Type7: {
 
 1172          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value7);
 
 1174        case distance_u::Type::Type8: {
 
 1175          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value8);
 
 1177        case distance_u::Type::Type9: {
 
 1178          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value9);
 
 1180        case distance_u::Type::Type10: {
 
 1181          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value10);
 
 1184          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1188      ossia_do_throw(std::runtime_error, 
": bad type");
 
 1191template <
typename Functor>
 
 1192auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const gain_u& arg1)
 
 1196    case value_variant_type::Type::Type0: {
 
 1199        case gain_u::Type::Type0: {
 
 1200          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 1202        case gain_u::Type::Type1: {
 
 1203          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 1205        case gain_u::Type::Type2: {
 
 1206          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 1208        case gain_u::Type::Type3: {
 
 1209          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 1212          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1215    case value_variant_type::Type::Type1: {
 
 1218        case gain_u::Type::Type0: {
 
 1219          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 1221        case gain_u::Type::Type1: {
 
 1222          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 1224        case gain_u::Type::Type2: {
 
 1225          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 1227        case gain_u::Type::Type3: {
 
 1228          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 1231          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1234    case value_variant_type::Type::Type2: {
 
 1237        case gain_u::Type::Type0: {
 
 1238          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 1240        case gain_u::Type::Type1: {
 
 1241          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 1243        case gain_u::Type::Type2: {
 
 1244          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 1246        case gain_u::Type::Type3: {
 
 1247          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 1250          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1253    case value_variant_type::Type::Type3: {
 
 1256        case gain_u::Type::Type0: {
 
 1257          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 1259        case gain_u::Type::Type1: {
 
 1260          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 1262        case gain_u::Type::Type2: {
 
 1263          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 1265        case gain_u::Type::Type3: {
 
 1266          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 1269          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1272    case value_variant_type::Type::Type4: {
 
 1275        case gain_u::Type::Type0: {
 
 1276          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 1278        case gain_u::Type::Type1: {
 
 1279          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 1281        case gain_u::Type::Type2: {
 
 1282          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 1284        case gain_u::Type::Type3: {
 
 1285          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 1288          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1291    case value_variant_type::Type::Type5: {
 
 1294        case gain_u::Type::Type0: {
 
 1295          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 1297        case gain_u::Type::Type1: {
 
 1298          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 1300        case gain_u::Type::Type2: {
 
 1301          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 1303        case gain_u::Type::Type3: {
 
 1304          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 1307          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1310    case value_variant_type::Type::Type6: {
 
 1313        case gain_u::Type::Type0: {
 
 1314          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 1316        case gain_u::Type::Type1: {
 
 1317          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 1319        case gain_u::Type::Type2: {
 
 1320          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 1322        case gain_u::Type::Type3: {
 
 1323          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 1326          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1329    case value_variant_type::Type::Type7: {
 
 1332        case gain_u::Type::Type0: {
 
 1333          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 1335        case gain_u::Type::Type1: {
 
 1336          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 1338        case gain_u::Type::Type2: {
 
 1339          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 1341        case gain_u::Type::Type3: {
 
 1342          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 1345          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1348    case value_variant_type::Type::Type8: {
 
 1351        case gain_u::Type::Type0: {
 
 1352          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 1354        case gain_u::Type::Type1: {
 
 1355          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 1357        case gain_u::Type::Type2: {
 
 1358          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 1360        case gain_u::Type::Type3: {
 
 1361          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 1364          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1367    case value_variant_type::Type::Type9: {
 
 1370        case gain_u::Type::Type0: {
 
 1371          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 1373        case gain_u::Type::Type1: {
 
 1374          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 1376        case gain_u::Type::Type2: {
 
 1377          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 1379        case gain_u::Type::Type3: {
 
 1380          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
 1383          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1387      ossia_do_throw(std::runtime_error, 
": bad type");
 
 1390template <
typename Functor>
 
 1391auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const orientation_u& arg1)
 
 1395    case value_variant_type::Type::Type0: {
 
 1398        case orientation_u::Type::Type0: {
 
 1399          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 1401        case orientation_u::Type::Type1: {
 
 1402          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 1404        case orientation_u::Type::Type2: {
 
 1405          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 1408          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1411    case value_variant_type::Type::Type1: {
 
 1414        case orientation_u::Type::Type0: {
 
 1415          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 1417        case orientation_u::Type::Type1: {
 
 1418          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 1420        case orientation_u::Type::Type2: {
 
 1421          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 1424          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1427    case value_variant_type::Type::Type2: {
 
 1430        case orientation_u::Type::Type0: {
 
 1431          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 1433        case orientation_u::Type::Type1: {
 
 1434          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 1436        case orientation_u::Type::Type2: {
 
 1437          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 1440          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1443    case value_variant_type::Type::Type3: {
 
 1446        case orientation_u::Type::Type0: {
 
 1447          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 1449        case orientation_u::Type::Type1: {
 
 1450          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 1452        case orientation_u::Type::Type2: {
 
 1453          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 1456          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1459    case value_variant_type::Type::Type4: {
 
 1462        case orientation_u::Type::Type0: {
 
 1463          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 1465        case orientation_u::Type::Type1: {
 
 1466          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 1468        case orientation_u::Type::Type2: {
 
 1469          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 1472          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1475    case value_variant_type::Type::Type5: {
 
 1478        case orientation_u::Type::Type0: {
 
 1479          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 1481        case orientation_u::Type::Type1: {
 
 1482          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 1484        case orientation_u::Type::Type2: {
 
 1485          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 1488          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1491    case value_variant_type::Type::Type6: {
 
 1494        case orientation_u::Type::Type0: {
 
 1495          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 1497        case orientation_u::Type::Type1: {
 
 1498          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 1500        case orientation_u::Type::Type2: {
 
 1501          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 1504          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1507    case value_variant_type::Type::Type7: {
 
 1510        case orientation_u::Type::Type0: {
 
 1511          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 1513        case orientation_u::Type::Type1: {
 
 1514          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 1516        case orientation_u::Type::Type2: {
 
 1517          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 1520          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1523    case value_variant_type::Type::Type8: {
 
 1526        case orientation_u::Type::Type0: {
 
 1527          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 1529        case orientation_u::Type::Type1: {
 
 1530          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 1532        case orientation_u::Type::Type2: {
 
 1533          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 1536          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1539    case value_variant_type::Type::Type9: {
 
 1542        case orientation_u::Type::Type0: {
 
 1543          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 1545        case orientation_u::Type::Type1: {
 
 1546          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 1548        case orientation_u::Type::Type2: {
 
 1549          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 1552          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1556      ossia_do_throw(std::runtime_error, 
": bad type");
 
 1559template <
typename Functor>
 
 1560auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const position_u& arg1)
 
 1564    case value_variant_type::Type::Type0: {
 
 1567        case position_u::Type::Type0: {
 
 1568          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 1570        case position_u::Type::Type1: {
 
 1571          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 1573        case position_u::Type::Type2: {
 
 1574          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 1576        case position_u::Type::Type3: {
 
 1577          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 1579        case position_u::Type::Type4: {
 
 1580          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 1582        case position_u::Type::Type5: {
 
 1583          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 1585        case position_u::Type::Type6: {
 
 1586          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 1588        case position_u::Type::Type7: {
 
 1589          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 1591        case position_u::Type::Type8: {
 
 1592          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 1595          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1598    case value_variant_type::Type::Type1: {
 
 1601        case position_u::Type::Type0: {
 
 1602          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 1604        case position_u::Type::Type1: {
 
 1605          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 1607        case position_u::Type::Type2: {
 
 1608          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 1610        case position_u::Type::Type3: {
 
 1611          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 1613        case position_u::Type::Type4: {
 
 1614          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 1616        case position_u::Type::Type5: {
 
 1617          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 1619        case position_u::Type::Type6: {
 
 1620          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 1622        case position_u::Type::Type7: {
 
 1623          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 1625        case position_u::Type::Type8: {
 
 1626          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 1629          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1632    case value_variant_type::Type::Type2: {
 
 1635        case position_u::Type::Type0: {
 
 1636          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 1638        case position_u::Type::Type1: {
 
 1639          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 1641        case position_u::Type::Type2: {
 
 1642          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 1644        case position_u::Type::Type3: {
 
 1645          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 1647        case position_u::Type::Type4: {
 
 1648          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 1650        case position_u::Type::Type5: {
 
 1651          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 1653        case position_u::Type::Type6: {
 
 1654          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 1656        case position_u::Type::Type7: {
 
 1657          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 1659        case position_u::Type::Type8: {
 
 1660          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 1663          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1666    case value_variant_type::Type::Type3: {
 
 1669        case position_u::Type::Type0: {
 
 1670          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 1672        case position_u::Type::Type1: {
 
 1673          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 1675        case position_u::Type::Type2: {
 
 1676          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 1678        case position_u::Type::Type3: {
 
 1679          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 1681        case position_u::Type::Type4: {
 
 1682          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 1684        case position_u::Type::Type5: {
 
 1685          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 1687        case position_u::Type::Type6: {
 
 1688          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 1690        case position_u::Type::Type7: {
 
 1691          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 1693        case position_u::Type::Type8: {
 
 1694          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 1697          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1700    case value_variant_type::Type::Type4: {
 
 1703        case position_u::Type::Type0: {
 
 1704          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 1706        case position_u::Type::Type1: {
 
 1707          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 1709        case position_u::Type::Type2: {
 
 1710          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 1712        case position_u::Type::Type3: {
 
 1713          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 1715        case position_u::Type::Type4: {
 
 1716          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 1718        case position_u::Type::Type5: {
 
 1719          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 1721        case position_u::Type::Type6: {
 
 1722          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 1724        case position_u::Type::Type7: {
 
 1725          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 1727        case position_u::Type::Type8: {
 
 1728          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 1731          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1734    case value_variant_type::Type::Type5: {
 
 1737        case position_u::Type::Type0: {
 
 1738          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 1740        case position_u::Type::Type1: {
 
 1741          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 1743        case position_u::Type::Type2: {
 
 1744          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 1746        case position_u::Type::Type3: {
 
 1747          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 1749        case position_u::Type::Type4: {
 
 1750          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 1752        case position_u::Type::Type5: {
 
 1753          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 1755        case position_u::Type::Type6: {
 
 1756          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 1758        case position_u::Type::Type7: {
 
 1759          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 1761        case position_u::Type::Type8: {
 
 1762          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 1765          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1768    case value_variant_type::Type::Type6: {
 
 1771        case position_u::Type::Type0: {
 
 1772          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 1774        case position_u::Type::Type1: {
 
 1775          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 1777        case position_u::Type::Type2: {
 
 1778          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 1780        case position_u::Type::Type3: {
 
 1781          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 1783        case position_u::Type::Type4: {
 
 1784          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 1786        case position_u::Type::Type5: {
 
 1787          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 1789        case position_u::Type::Type6: {
 
 1790          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 1792        case position_u::Type::Type7: {
 
 1793          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 1795        case position_u::Type::Type8: {
 
 1796          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 1799          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1802    case value_variant_type::Type::Type7: {
 
 1805        case position_u::Type::Type0: {
 
 1806          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 1808        case position_u::Type::Type1: {
 
 1809          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 1811        case position_u::Type::Type2: {
 
 1812          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 1814        case position_u::Type::Type3: {
 
 1815          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 1817        case position_u::Type::Type4: {
 
 1818          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 1820        case position_u::Type::Type5: {
 
 1821          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 1823        case position_u::Type::Type6: {
 
 1824          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 1826        case position_u::Type::Type7: {
 
 1827          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 1829        case position_u::Type::Type8: {
 
 1830          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 1833          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1836    case value_variant_type::Type::Type8: {
 
 1839        case position_u::Type::Type0: {
 
 1840          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 1842        case position_u::Type::Type1: {
 
 1843          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 1845        case position_u::Type::Type2: {
 
 1846          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 1848        case position_u::Type::Type3: {
 
 1849          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 1851        case position_u::Type::Type4: {
 
 1852          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 1854        case position_u::Type::Type5: {
 
 1855          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 1857        case position_u::Type::Type6: {
 
 1858          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 1860        case position_u::Type::Type7: {
 
 1861          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 1863        case position_u::Type::Type8: {
 
 1864          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 1867          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1871      ossia_do_throw(std::runtime_error, 
": bad type");
 
 1874template <
typename Functor>
 
 1875auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const speed_u& arg1)
 
 1879    case value_variant_type::Type::Type0: {
 
 1882        case speed_u::Type::Type0: {
 
 1883          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 1885        case speed_u::Type::Type1: {
 
 1886          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 1888        case speed_u::Type::Type2: {
 
 1889          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 1891        case speed_u::Type::Type3: {
 
 1892          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 1894        case speed_u::Type::Type4: {
 
 1895          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 1897        case speed_u::Type::Type5: {
 
 1898          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 1901          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1904    case value_variant_type::Type::Type1: {
 
 1907        case speed_u::Type::Type0: {
 
 1908          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 1910        case speed_u::Type::Type1: {
 
 1911          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 1913        case speed_u::Type::Type2: {
 
 1914          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 1916        case speed_u::Type::Type3: {
 
 1917          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 1919        case speed_u::Type::Type4: {
 
 1920          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 1922        case speed_u::Type::Type5: {
 
 1923          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 1926          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1929    case value_variant_type::Type::Type2: {
 
 1932        case speed_u::Type::Type0: {
 
 1933          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 1935        case speed_u::Type::Type1: {
 
 1936          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 1938        case speed_u::Type::Type2: {
 
 1939          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 1941        case speed_u::Type::Type3: {
 
 1942          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 1944        case speed_u::Type::Type4: {
 
 1945          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 1947        case speed_u::Type::Type5: {
 
 1948          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 1951          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1954    case value_variant_type::Type::Type3: {
 
 1957        case speed_u::Type::Type0: {
 
 1958          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 1960        case speed_u::Type::Type1: {
 
 1961          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 1963        case speed_u::Type::Type2: {
 
 1964          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 1966        case speed_u::Type::Type3: {
 
 1967          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 1969        case speed_u::Type::Type4: {
 
 1970          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 1972        case speed_u::Type::Type5: {
 
 1973          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 1976          ossia_do_throw(std::runtime_error, 
": bad type");
 
 1979    case value_variant_type::Type::Type4: {
 
 1982        case speed_u::Type::Type0: {
 
 1983          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 1985        case speed_u::Type::Type1: {
 
 1986          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 1988        case speed_u::Type::Type2: {
 
 1989          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 1991        case speed_u::Type::Type3: {
 
 1992          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 1994        case speed_u::Type::Type4: {
 
 1995          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 1997        case speed_u::Type::Type5: {
 
 1998          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 2001          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2004    case value_variant_type::Type::Type5: {
 
 2007        case speed_u::Type::Type0: {
 
 2008          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 2010        case speed_u::Type::Type1: {
 
 2011          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 2013        case speed_u::Type::Type2: {
 
 2014          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 2016        case speed_u::Type::Type3: {
 
 2017          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 2019        case speed_u::Type::Type4: {
 
 2020          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 2022        case speed_u::Type::Type5: {
 
 2023          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 2026          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2029    case value_variant_type::Type::Type6: {
 
 2032        case speed_u::Type::Type0: {
 
 2033          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 2035        case speed_u::Type::Type1: {
 
 2036          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 2038        case speed_u::Type::Type2: {
 
 2039          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 2041        case speed_u::Type::Type3: {
 
 2042          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 2044        case speed_u::Type::Type4: {
 
 2045          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 2047        case speed_u::Type::Type5: {
 
 2048          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 2051          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2054    case value_variant_type::Type::Type7: {
 
 2057        case speed_u::Type::Type0: {
 
 2058          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 2060        case speed_u::Type::Type1: {
 
 2061          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 2063        case speed_u::Type::Type2: {
 
 2064          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 2066        case speed_u::Type::Type3: {
 
 2067          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 2069        case speed_u::Type::Type4: {
 
 2070          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 2072        case speed_u::Type::Type5: {
 
 2073          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 2076          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2079    case value_variant_type::Type::Type8: {
 
 2082        case speed_u::Type::Type0: {
 
 2083          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 2085        case speed_u::Type::Type1: {
 
 2086          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 2088        case speed_u::Type::Type2: {
 
 2089          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 2091        case speed_u::Type::Type3: {
 
 2092          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 2094        case speed_u::Type::Type4: {
 
 2095          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 2097        case speed_u::Type::Type5: {
 
 2098          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 2101          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2104    case value_variant_type::Type::Type9: {
 
 2107        case speed_u::Type::Type0: {
 
 2108          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 2110        case speed_u::Type::Type1: {
 
 2111          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 2113        case speed_u::Type::Type2: {
 
 2114          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 2116        case speed_u::Type::Type3: {
 
 2117          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
 2119        case speed_u::Type::Type4: {
 
 2120          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value4);
 
 2122        case speed_u::Type::Type5: {
 
 2123          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value5);
 
 2126          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2130      ossia_do_throw(std::runtime_error, 
": bad type");
 
 2133template <
typename Functor>
 
 2134auto apply(Functor&& functor, 
const value_variant_type& arg0, 
const timing_u& arg1)
 
 2138    case value_variant_type::Type::Type0: {
 
 2141        case timing_u::Type::Type0: {
 
 2142          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 2144        case timing_u::Type::Type1: {
 
 2145          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 2147        case timing_u::Type::Type2: {
 
 2148          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 2150        case timing_u::Type::Type3: {
 
 2151          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 2153        case timing_u::Type::Type4: {
 
 2154          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 2156        case timing_u::Type::Type5: {
 
 2157          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 2159        case timing_u::Type::Type6: {
 
 2160          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 2162        case timing_u::Type::Type7: {
 
 2163          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 2165        case timing_u::Type::Type8: {
 
 2166          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 2169          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2172    case value_variant_type::Type::Type1: {
 
 2175        case timing_u::Type::Type0: {
 
 2176          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 2178        case timing_u::Type::Type1: {
 
 2179          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 2181        case timing_u::Type::Type2: {
 
 2182          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 2184        case timing_u::Type::Type3: {
 
 2185          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 2187        case timing_u::Type::Type4: {
 
 2188          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 2190        case timing_u::Type::Type5: {
 
 2191          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 2193        case timing_u::Type::Type6: {
 
 2194          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 2196        case timing_u::Type::Type7: {
 
 2197          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 2199        case timing_u::Type::Type8: {
 
 2200          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 2203          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2206    case value_variant_type::Type::Type2: {
 
 2209        case timing_u::Type::Type0: {
 
 2210          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 2212        case timing_u::Type::Type1: {
 
 2213          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 2215        case timing_u::Type::Type2: {
 
 2216          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 2218        case timing_u::Type::Type3: {
 
 2219          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 2221        case timing_u::Type::Type4: {
 
 2222          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 2224        case timing_u::Type::Type5: {
 
 2225          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 2227        case timing_u::Type::Type6: {
 
 2228          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 2230        case timing_u::Type::Type7: {
 
 2231          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 2233        case timing_u::Type::Type8: {
 
 2234          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 2237          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2240    case value_variant_type::Type::Type3: {
 
 2243        case timing_u::Type::Type0: {
 
 2244          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 2246        case timing_u::Type::Type1: {
 
 2247          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 2249        case timing_u::Type::Type2: {
 
 2250          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 2252        case timing_u::Type::Type3: {
 
 2253          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 2255        case timing_u::Type::Type4: {
 
 2256          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 2258        case timing_u::Type::Type5: {
 
 2259          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 2261        case timing_u::Type::Type6: {
 
 2262          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 2264        case timing_u::Type::Type7: {
 
 2265          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 2267        case timing_u::Type::Type8: {
 
 2268          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 2271          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2274    case value_variant_type::Type::Type4: {
 
 2277        case timing_u::Type::Type0: {
 
 2278          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 2280        case timing_u::Type::Type1: {
 
 2281          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 2283        case timing_u::Type::Type2: {
 
 2284          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 2286        case timing_u::Type::Type3: {
 
 2287          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 2289        case timing_u::Type::Type4: {
 
 2290          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 2292        case timing_u::Type::Type5: {
 
 2293          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 2295        case timing_u::Type::Type6: {
 
 2296          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 2298        case timing_u::Type::Type7: {
 
 2299          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 2301        case timing_u::Type::Type8: {
 
 2302          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 2305          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2308    case value_variant_type::Type::Type5: {
 
 2311        case timing_u::Type::Type0: {
 
 2312          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 2314        case timing_u::Type::Type1: {
 
 2315          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 2317        case timing_u::Type::Type2: {
 
 2318          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 2320        case timing_u::Type::Type3: {
 
 2321          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 2323        case timing_u::Type::Type4: {
 
 2324          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 2326        case timing_u::Type::Type5: {
 
 2327          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 2329        case timing_u::Type::Type6: {
 
 2330          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 2332        case timing_u::Type::Type7: {
 
 2333          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 2335        case timing_u::Type::Type8: {
 
 2336          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 2339          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2342    case value_variant_type::Type::Type6: {
 
 2345        case timing_u::Type::Type0: {
 
 2346          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 2348        case timing_u::Type::Type1: {
 
 2349          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 2351        case timing_u::Type::Type2: {
 
 2352          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 2354        case timing_u::Type::Type3: {
 
 2355          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 2357        case timing_u::Type::Type4: {
 
 2358          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 2360        case timing_u::Type::Type5: {
 
 2361          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 2363        case timing_u::Type::Type6: {
 
 2364          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 2366        case timing_u::Type::Type7: {
 
 2367          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 2369        case timing_u::Type::Type8: {
 
 2370          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 2373          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2376    case value_variant_type::Type::Type7: {
 
 2379        case timing_u::Type::Type0: {
 
 2380          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 2382        case timing_u::Type::Type1: {
 
 2383          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 2385        case timing_u::Type::Type2: {
 
 2386          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 2388        case timing_u::Type::Type3: {
 
 2389          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 2391        case timing_u::Type::Type4: {
 
 2392          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 2394        case timing_u::Type::Type5: {
 
 2395          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 2397        case timing_u::Type::Type6: {
 
 2398          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 2400        case timing_u::Type::Type7: {
 
 2401          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 2403        case timing_u::Type::Type8: {
 
 2404          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 2407          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2410    case value_variant_type::Type::Type8: {
 
 2413        case timing_u::Type::Type0: {
 
 2414          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 2416        case timing_u::Type::Type1: {
 
 2417          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 2419        case timing_u::Type::Type2: {
 
 2420          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 2422        case timing_u::Type::Type3: {
 
 2423          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 2425        case timing_u::Type::Type4: {
 
 2426          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 2428        case timing_u::Type::Type5: {
 
 2429          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 2431        case timing_u::Type::Type6: {
 
 2432          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 2434        case timing_u::Type::Type7: {
 
 2435          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 2437        case timing_u::Type::Type8: {
 
 2438          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 2441          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2444    case value_variant_type::Type::Type9: {
 
 2447        case timing_u::Type::Type0: {
 
 2448          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 2450        case timing_u::Type::Type1: {
 
 2451          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 2453        case timing_u::Type::Type2: {
 
 2454          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 2456        case timing_u::Type::Type3: {
 
 2457          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
 2459        case timing_u::Type::Type4: {
 
 2460          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value4);
 
 2462        case timing_u::Type::Type5: {
 
 2463          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value5);
 
 2465        case timing_u::Type::Type6: {
 
 2466          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value6);
 
 2468        case timing_u::Type::Type7: {
 
 2469          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value7);
 
 2471        case timing_u::Type::Type8: {
 
 2472          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value8);
 
 2475          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2479      ossia_do_throw(std::runtime_error, 
": bad type");
 
 2482template <
typename Functor>
 
 2483auto apply(Functor&& functor, 
const angle& arg0, 
const angle_u& arg1)
 
 2487    case angle::Type::Type0: {
 
 2490        case angle_u::Type::Type0: {
 
 2491          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 2493        case angle_u::Type::Type1: {
 
 2494          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 2497          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2500    case angle::Type::Type1: {
 
 2503        case angle_u::Type::Type0: {
 
 2504          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 2506        case angle_u::Type::Type1: {
 
 2507          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 2510          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2514      ossia_do_throw(std::runtime_error, 
": bad type");
 
 2517template <
typename Functor>
 
 2518auto apply(Functor&& functor, 
const color& arg0, 
const color_u& arg1)
 
 2522    case color::Type::Type0: {
 
 2525        case color_u::Type::Type0: {
 
 2526          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 2528        case color_u::Type::Type1: {
 
 2529          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 2531        case color_u::Type::Type2: {
 
 2532          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 2534        case color_u::Type::Type3: {
 
 2535          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 2537        case color_u::Type::Type4: {
 
 2538          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 2540        case color_u::Type::Type5: {
 
 2541          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 2543        case color_u::Type::Type6: {
 
 2544          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 2546        case color_u::Type::Type7: {
 
 2547          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 2549        case color_u::Type::Type8: {
 
 2550          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 2553          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2556    case color::Type::Type1: {
 
 2559        case color_u::Type::Type0: {
 
 2560          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 2562        case color_u::Type::Type1: {
 
 2563          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 2565        case color_u::Type::Type2: {
 
 2566          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 2568        case color_u::Type::Type3: {
 
 2569          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 2571        case color_u::Type::Type4: {
 
 2572          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 2574        case color_u::Type::Type5: {
 
 2575          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 2577        case color_u::Type::Type6: {
 
 2578          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 2580        case color_u::Type::Type7: {
 
 2581          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 2583        case color_u::Type::Type8: {
 
 2584          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 2587          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2590    case color::Type::Type2: {
 
 2593        case color_u::Type::Type0: {
 
 2594          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 2596        case color_u::Type::Type1: {
 
 2597          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 2599        case color_u::Type::Type2: {
 
 2600          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 2602        case color_u::Type::Type3: {
 
 2603          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 2605        case color_u::Type::Type4: {
 
 2606          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 2608        case color_u::Type::Type5: {
 
 2609          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 2611        case color_u::Type::Type6: {
 
 2612          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 2614        case color_u::Type::Type7: {
 
 2615          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 2617        case color_u::Type::Type8: {
 
 2618          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 2621          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2624    case color::Type::Type3: {
 
 2627        case color_u::Type::Type0: {
 
 2628          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 2630        case color_u::Type::Type1: {
 
 2631          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 2633        case color_u::Type::Type2: {
 
 2634          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 2636        case color_u::Type::Type3: {
 
 2637          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 2639        case color_u::Type::Type4: {
 
 2640          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 2642        case color_u::Type::Type5: {
 
 2643          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 2645        case color_u::Type::Type6: {
 
 2646          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 2648        case color_u::Type::Type7: {
 
 2649          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 2651        case color_u::Type::Type8: {
 
 2652          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 2655          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2658    case color::Type::Type4: {
 
 2661        case color_u::Type::Type0: {
 
 2662          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 2664        case color_u::Type::Type1: {
 
 2665          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 2667        case color_u::Type::Type2: {
 
 2668          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 2670        case color_u::Type::Type3: {
 
 2671          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 2673        case color_u::Type::Type4: {
 
 2674          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 2676        case color_u::Type::Type5: {
 
 2677          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 2679        case color_u::Type::Type6: {
 
 2680          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 2682        case color_u::Type::Type7: {
 
 2683          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 2685        case color_u::Type::Type8: {
 
 2686          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 2689          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2692    case color::Type::Type5: {
 
 2695        case color_u::Type::Type0: {
 
 2696          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 2698        case color_u::Type::Type1: {
 
 2699          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 2701        case color_u::Type::Type2: {
 
 2702          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 2704        case color_u::Type::Type3: {
 
 2705          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 2707        case color_u::Type::Type4: {
 
 2708          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 2710        case color_u::Type::Type5: {
 
 2711          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 2713        case color_u::Type::Type6: {
 
 2714          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 2716        case color_u::Type::Type7: {
 
 2717          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 2719        case color_u::Type::Type8: {
 
 2720          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 2723          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2726    case color::Type::Type6: {
 
 2729        case color_u::Type::Type0: {
 
 2730          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 2732        case color_u::Type::Type1: {
 
 2733          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 2735        case color_u::Type::Type2: {
 
 2736          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 2738        case color_u::Type::Type3: {
 
 2739          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 2741        case color_u::Type::Type4: {
 
 2742          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 2744        case color_u::Type::Type5: {
 
 2745          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 2747        case color_u::Type::Type6: {
 
 2748          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 2750        case color_u::Type::Type7: {
 
 2751          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 2753        case color_u::Type::Type8: {
 
 2754          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 2757          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2760    case color::Type::Type7: {
 
 2763        case color_u::Type::Type0: {
 
 2764          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 2766        case color_u::Type::Type1: {
 
 2767          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 2769        case color_u::Type::Type2: {
 
 2770          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 2772        case color_u::Type::Type3: {
 
 2773          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 2775        case color_u::Type::Type4: {
 
 2776          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 2778        case color_u::Type::Type5: {
 
 2779          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 2781        case color_u::Type::Type6: {
 
 2782          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 2784        case color_u::Type::Type7: {
 
 2785          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 2787        case color_u::Type::Type8: {
 
 2788          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 2791          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2794    case color::Type::Type8: {
 
 2797        case color_u::Type::Type0: {
 
 2798          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 2800        case color_u::Type::Type1: {
 
 2801          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 2803        case color_u::Type::Type2: {
 
 2804          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 2806        case color_u::Type::Type3: {
 
 2807          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 2809        case color_u::Type::Type4: {
 
 2810          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 2812        case color_u::Type::Type5: {
 
 2813          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 2815        case color_u::Type::Type6: {
 
 2816          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 2818        case color_u::Type::Type7: {
 
 2819          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 2821        case color_u::Type::Type8: {
 
 2822          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 2825          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2829      ossia_do_throw(std::runtime_error, 
": bad type");
 
 2832template <
typename Functor>
 
 2833auto apply(Functor&& functor, 
const distance& arg0, 
const distance_u& arg1)
 
 2837    case distance::Type::Type0: {
 
 2840        case distance_u::Type::Type0: {
 
 2841          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 2843        case distance_u::Type::Type1: {
 
 2844          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 2846        case distance_u::Type::Type2: {
 
 2847          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 2849        case distance_u::Type::Type3: {
 
 2850          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 2852        case distance_u::Type::Type4: {
 
 2853          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 2855        case distance_u::Type::Type5: {
 
 2856          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 2858        case distance_u::Type::Type6: {
 
 2859          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 2861        case distance_u::Type::Type7: {
 
 2862          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 2864        case distance_u::Type::Type8: {
 
 2865          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 2867        case distance_u::Type::Type9: {
 
 2868          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 2870        case distance_u::Type::Type10: {
 
 2871          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value10);
 
 2874          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2877    case distance::Type::Type1: {
 
 2880        case distance_u::Type::Type0: {
 
 2881          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 2883        case distance_u::Type::Type1: {
 
 2884          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 2886        case distance_u::Type::Type2: {
 
 2887          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 2889        case distance_u::Type::Type3: {
 
 2890          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 2892        case distance_u::Type::Type4: {
 
 2893          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 2895        case distance_u::Type::Type5: {
 
 2896          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 2898        case distance_u::Type::Type6: {
 
 2899          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 2901        case distance_u::Type::Type7: {
 
 2902          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 2904        case distance_u::Type::Type8: {
 
 2905          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 2907        case distance_u::Type::Type9: {
 
 2908          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 2910        case distance_u::Type::Type10: {
 
 2911          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value10);
 
 2914          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2917    case distance::Type::Type2: {
 
 2920        case distance_u::Type::Type0: {
 
 2921          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 2923        case distance_u::Type::Type1: {
 
 2924          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 2926        case distance_u::Type::Type2: {
 
 2927          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 2929        case distance_u::Type::Type3: {
 
 2930          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 2932        case distance_u::Type::Type4: {
 
 2933          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 2935        case distance_u::Type::Type5: {
 
 2936          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 2938        case distance_u::Type::Type6: {
 
 2939          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 2941        case distance_u::Type::Type7: {
 
 2942          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 2944        case distance_u::Type::Type8: {
 
 2945          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 2947        case distance_u::Type::Type9: {
 
 2948          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 2950        case distance_u::Type::Type10: {
 
 2951          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value10);
 
 2954          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2957    case distance::Type::Type3: {
 
 2960        case distance_u::Type::Type0: {
 
 2961          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 2963        case distance_u::Type::Type1: {
 
 2964          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 2966        case distance_u::Type::Type2: {
 
 2967          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 2969        case distance_u::Type::Type3: {
 
 2970          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 2972        case distance_u::Type::Type4: {
 
 2973          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 2975        case distance_u::Type::Type5: {
 
 2976          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 2978        case distance_u::Type::Type6: {
 
 2979          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 2981        case distance_u::Type::Type7: {
 
 2982          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 2984        case distance_u::Type::Type8: {
 
 2985          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 2987        case distance_u::Type::Type9: {
 
 2988          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
 2990        case distance_u::Type::Type10: {
 
 2991          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value10);
 
 2994          ossia_do_throw(std::runtime_error, 
": bad type");
 
 2997    case distance::Type::Type4: {
 
 3000        case distance_u::Type::Type0: {
 
 3001          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 3003        case distance_u::Type::Type1: {
 
 3004          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 3006        case distance_u::Type::Type2: {
 
 3007          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 3009        case distance_u::Type::Type3: {
 
 3010          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 3012        case distance_u::Type::Type4: {
 
 3013          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 3015        case distance_u::Type::Type5: {
 
 3016          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 3018        case distance_u::Type::Type6: {
 
 3019          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 3021        case distance_u::Type::Type7: {
 
 3022          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 3024        case distance_u::Type::Type8: {
 
 3025          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 3027        case distance_u::Type::Type9: {
 
 3028          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value9);
 
 3030        case distance_u::Type::Type10: {
 
 3031          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value10);
 
 3034          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3037    case distance::Type::Type5: {
 
 3040        case distance_u::Type::Type0: {
 
 3041          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 3043        case distance_u::Type::Type1: {
 
 3044          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 3046        case distance_u::Type::Type2: {
 
 3047          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 3049        case distance_u::Type::Type3: {
 
 3050          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 3052        case distance_u::Type::Type4: {
 
 3053          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 3055        case distance_u::Type::Type5: {
 
 3056          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 3058        case distance_u::Type::Type6: {
 
 3059          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 3061        case distance_u::Type::Type7: {
 
 3062          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 3064        case distance_u::Type::Type8: {
 
 3065          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 3067        case distance_u::Type::Type9: {
 
 3068          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value9);
 
 3070        case distance_u::Type::Type10: {
 
 3071          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value10);
 
 3074          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3077    case distance::Type::Type6: {
 
 3080        case distance_u::Type::Type0: {
 
 3081          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 3083        case distance_u::Type::Type1: {
 
 3084          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 3086        case distance_u::Type::Type2: {
 
 3087          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 3089        case distance_u::Type::Type3: {
 
 3090          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 3092        case distance_u::Type::Type4: {
 
 3093          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 3095        case distance_u::Type::Type5: {
 
 3096          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 3098        case distance_u::Type::Type6: {
 
 3099          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 3101        case distance_u::Type::Type7: {
 
 3102          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 3104        case distance_u::Type::Type8: {
 
 3105          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 3107        case distance_u::Type::Type9: {
 
 3108          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value9);
 
 3110        case distance_u::Type::Type10: {
 
 3111          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value10);
 
 3114          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3117    case distance::Type::Type7: {
 
 3120        case distance_u::Type::Type0: {
 
 3121          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 3123        case distance_u::Type::Type1: {
 
 3124          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 3126        case distance_u::Type::Type2: {
 
 3127          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 3129        case distance_u::Type::Type3: {
 
 3130          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 3132        case distance_u::Type::Type4: {
 
 3133          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 3135        case distance_u::Type::Type5: {
 
 3136          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 3138        case distance_u::Type::Type6: {
 
 3139          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 3141        case distance_u::Type::Type7: {
 
 3142          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 3144        case distance_u::Type::Type8: {
 
 3145          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 3147        case distance_u::Type::Type9: {
 
 3148          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value9);
 
 3150        case distance_u::Type::Type10: {
 
 3151          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value10);
 
 3154          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3157    case distance::Type::Type8: {
 
 3160        case distance_u::Type::Type0: {
 
 3161          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 3163        case distance_u::Type::Type1: {
 
 3164          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 3166        case distance_u::Type::Type2: {
 
 3167          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 3169        case distance_u::Type::Type3: {
 
 3170          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 3172        case distance_u::Type::Type4: {
 
 3173          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 3175        case distance_u::Type::Type5: {
 
 3176          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 3178        case distance_u::Type::Type6: {
 
 3179          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 3181        case distance_u::Type::Type7: {
 
 3182          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 3184        case distance_u::Type::Type8: {
 
 3185          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 3187        case distance_u::Type::Type9: {
 
 3188          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value9);
 
 3190        case distance_u::Type::Type10: {
 
 3191          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value10);
 
 3194          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3197    case distance::Type::Type9: {
 
 3200        case distance_u::Type::Type0: {
 
 3201          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 3203        case distance_u::Type::Type1: {
 
 3204          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 3206        case distance_u::Type::Type2: {
 
 3207          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 3209        case distance_u::Type::Type3: {
 
 3210          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
 3212        case distance_u::Type::Type4: {
 
 3213          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value4);
 
 3215        case distance_u::Type::Type5: {
 
 3216          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value5);
 
 3218        case distance_u::Type::Type6: {
 
 3219          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value6);
 
 3221        case distance_u::Type::Type7: {
 
 3222          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value7);
 
 3224        case distance_u::Type::Type8: {
 
 3225          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value8);
 
 3227        case distance_u::Type::Type9: {
 
 3228          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value9);
 
 3230        case distance_u::Type::Type10: {
 
 3231          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value10);
 
 3234          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3237    case distance::Type::Type10: {
 
 3240        case distance_u::Type::Type0: {
 
 3241          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value0);
 
 3243        case distance_u::Type::Type1: {
 
 3244          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value1);
 
 3246        case distance_u::Type::Type2: {
 
 3247          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value2);
 
 3249        case distance_u::Type::Type3: {
 
 3250          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value3);
 
 3252        case distance_u::Type::Type4: {
 
 3253          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value4);
 
 3255        case distance_u::Type::Type5: {
 
 3256          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value5);
 
 3258        case distance_u::Type::Type6: {
 
 3259          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value6);
 
 3261        case distance_u::Type::Type7: {
 
 3262          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value7);
 
 3264        case distance_u::Type::Type8: {
 
 3265          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value8);
 
 3267        case distance_u::Type::Type9: {
 
 3268          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value9);
 
 3270        case distance_u::Type::Type10: {
 
 3271          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value10);
 
 3274          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3278      ossia_do_throw(std::runtime_error, 
": bad type");
 
 3281template <
typename Functor>
 
 3282auto apply(Functor&& functor, 
const gain& arg0, 
const gain_u& arg1)
 
 3286    case gain::Type::Type0: {
 
 3289        case gain_u::Type::Type0: {
 
 3290          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 3292        case gain_u::Type::Type1: {
 
 3293          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 3295        case gain_u::Type::Type2: {
 
 3296          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 3298        case gain_u::Type::Type3: {
 
 3299          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 3302          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3305    case gain::Type::Type1: {
 
 3308        case gain_u::Type::Type0: {
 
 3309          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 3311        case gain_u::Type::Type1: {
 
 3312          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 3314        case gain_u::Type::Type2: {
 
 3315          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 3317        case gain_u::Type::Type3: {
 
 3318          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 3321          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3324    case gain::Type::Type2: {
 
 3327        case gain_u::Type::Type0: {
 
 3328          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 3330        case gain_u::Type::Type1: {
 
 3331          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 3333        case gain_u::Type::Type2: {
 
 3334          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 3336        case gain_u::Type::Type3: {
 
 3337          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 3340          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3343    case gain::Type::Type3: {
 
 3346        case gain_u::Type::Type0: {
 
 3347          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 3349        case gain_u::Type::Type1: {
 
 3350          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 3352        case gain_u::Type::Type2: {
 
 3353          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 3355        case gain_u::Type::Type3: {
 
 3356          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 3359          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3363      ossia_do_throw(std::runtime_error, 
": bad type");
 
 3366template <
typename Functor>
 
 3367auto apply(Functor&& functor, 
const orientation& arg0, 
const orientation_u& arg1)
 
 3371    case orientation::Type::Type0: {
 
 3374        case orientation_u::Type::Type0: {
 
 3375          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 3377        case orientation_u::Type::Type1: {
 
 3378          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 3380        case orientation_u::Type::Type2: {
 
 3381          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 3384          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3387    case orientation::Type::Type1: {
 
 3390        case orientation_u::Type::Type0: {
 
 3391          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 3393        case orientation_u::Type::Type1: {
 
 3394          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 3396        case orientation_u::Type::Type2: {
 
 3397          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 3400          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3403    case orientation::Type::Type2: {
 
 3406        case orientation_u::Type::Type0: {
 
 3407          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 3409        case orientation_u::Type::Type1: {
 
 3410          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 3412        case orientation_u::Type::Type2: {
 
 3413          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 3416          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3420      ossia_do_throw(std::runtime_error, 
": bad type");
 
 3423template <
typename Functor>
 
 3424auto apply(Functor&& functor, 
const position& arg0, 
const position_u& arg1)
 
 3428    case position::Type::Type0: {
 
 3431        case position_u::Type::Type0: {
 
 3432          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 3434        case position_u::Type::Type1: {
 
 3435          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 3437        case position_u::Type::Type2: {
 
 3438          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 3440        case position_u::Type::Type3: {
 
 3441          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 3443        case position_u::Type::Type4: {
 
 3444          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 3446        case position_u::Type::Type5: {
 
 3447          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 3449        case position_u::Type::Type6: {
 
 3450          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 3452        case position_u::Type::Type7: {
 
 3453          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 3455        case position_u::Type::Type8: {
 
 3456          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 3459          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3462    case position::Type::Type1: {
 
 3465        case position_u::Type::Type0: {
 
 3466          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 3468        case position_u::Type::Type1: {
 
 3469          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 3471        case position_u::Type::Type2: {
 
 3472          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 3474        case position_u::Type::Type3: {
 
 3475          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 3477        case position_u::Type::Type4: {
 
 3478          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 3480        case position_u::Type::Type5: {
 
 3481          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 3483        case position_u::Type::Type6: {
 
 3484          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 3486        case position_u::Type::Type7: {
 
 3487          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 3489        case position_u::Type::Type8: {
 
 3490          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 3493          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3496    case position::Type::Type2: {
 
 3499        case position_u::Type::Type0: {
 
 3500          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 3502        case position_u::Type::Type1: {
 
 3503          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 3505        case position_u::Type::Type2: {
 
 3506          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 3508        case position_u::Type::Type3: {
 
 3509          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 3511        case position_u::Type::Type4: {
 
 3512          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 3514        case position_u::Type::Type5: {
 
 3515          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 3517        case position_u::Type::Type6: {
 
 3518          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 3520        case position_u::Type::Type7: {
 
 3521          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 3523        case position_u::Type::Type8: {
 
 3524          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 3527          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3530    case position::Type::Type3: {
 
 3533        case position_u::Type::Type0: {
 
 3534          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 3536        case position_u::Type::Type1: {
 
 3537          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 3539        case position_u::Type::Type2: {
 
 3540          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 3542        case position_u::Type::Type3: {
 
 3543          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 3545        case position_u::Type::Type4: {
 
 3546          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 3548        case position_u::Type::Type5: {
 
 3549          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 3551        case position_u::Type::Type6: {
 
 3552          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 3554        case position_u::Type::Type7: {
 
 3555          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 3557        case position_u::Type::Type8: {
 
 3558          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 3561          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3564    case position::Type::Type4: {
 
 3567        case position_u::Type::Type0: {
 
 3568          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 3570        case position_u::Type::Type1: {
 
 3571          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 3573        case position_u::Type::Type2: {
 
 3574          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 3576        case position_u::Type::Type3: {
 
 3577          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 3579        case position_u::Type::Type4: {
 
 3580          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 3582        case position_u::Type::Type5: {
 
 3583          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 3585        case position_u::Type::Type6: {
 
 3586          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 3588        case position_u::Type::Type7: {
 
 3589          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 3591        case position_u::Type::Type8: {
 
 3592          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 3595          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3598    case position::Type::Type5: {
 
 3601        case position_u::Type::Type0: {
 
 3602          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 3604        case position_u::Type::Type1: {
 
 3605          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 3607        case position_u::Type::Type2: {
 
 3608          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 3610        case position_u::Type::Type3: {
 
 3611          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 3613        case position_u::Type::Type4: {
 
 3614          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 3616        case position_u::Type::Type5: {
 
 3617          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 3619        case position_u::Type::Type6: {
 
 3620          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 3622        case position_u::Type::Type7: {
 
 3623          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 3625        case position_u::Type::Type8: {
 
 3626          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 3629          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3632    case position::Type::Type6: {
 
 3635        case position_u::Type::Type0: {
 
 3636          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 3638        case position_u::Type::Type1: {
 
 3639          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 3641        case position_u::Type::Type2: {
 
 3642          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 3644        case position_u::Type::Type3: {
 
 3645          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 3647        case position_u::Type::Type4: {
 
 3648          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 3650        case position_u::Type::Type5: {
 
 3651          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 3653        case position_u::Type::Type6: {
 
 3654          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 3656        case position_u::Type::Type7: {
 
 3657          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 3659        case position_u::Type::Type8: {
 
 3660          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 3663          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3666    case position::Type::Type7: {
 
 3669        case position_u::Type::Type0: {
 
 3670          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 3672        case position_u::Type::Type1: {
 
 3673          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 3675        case position_u::Type::Type2: {
 
 3676          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 3678        case position_u::Type::Type3: {
 
 3679          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 3681        case position_u::Type::Type4: {
 
 3682          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 3684        case position_u::Type::Type5: {
 
 3685          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 3687        case position_u::Type::Type6: {
 
 3688          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 3690        case position_u::Type::Type7: {
 
 3691          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 3693        case position_u::Type::Type8: {
 
 3694          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 3697          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3700    case position::Type::Type8: {
 
 3703        case position_u::Type::Type0: {
 
 3704          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 3706        case position_u::Type::Type1: {
 
 3707          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 3709        case position_u::Type::Type2: {
 
 3710          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 3712        case position_u::Type::Type3: {
 
 3713          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 3715        case position_u::Type::Type4: {
 
 3716          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 3718        case position_u::Type::Type5: {
 
 3719          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 3721        case position_u::Type::Type6: {
 
 3722          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 3724        case position_u::Type::Type7: {
 
 3725          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 3727        case position_u::Type::Type8: {
 
 3728          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 3731          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3735      ossia_do_throw(std::runtime_error, 
": bad type");
 
 3738template <
typename Functor>
 
 3739auto apply(Functor&& functor, 
const speed& arg0, 
const speed_u& arg1)
 
 3743    case speed::Type::Type0: {
 
 3746        case speed_u::Type::Type0: {
 
 3747          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 3749        case speed_u::Type::Type1: {
 
 3750          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 3752        case speed_u::Type::Type2: {
 
 3753          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 3755        case speed_u::Type::Type3: {
 
 3756          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 3758        case speed_u::Type::Type4: {
 
 3759          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 3761        case speed_u::Type::Type5: {
 
 3762          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 3765          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3768    case speed::Type::Type1: {
 
 3771        case speed_u::Type::Type0: {
 
 3772          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 3774        case speed_u::Type::Type1: {
 
 3775          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 3777        case speed_u::Type::Type2: {
 
 3778          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 3780        case speed_u::Type::Type3: {
 
 3781          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 3783        case speed_u::Type::Type4: {
 
 3784          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 3786        case speed_u::Type::Type5: {
 
 3787          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 3790          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3793    case speed::Type::Type2: {
 
 3796        case speed_u::Type::Type0: {
 
 3797          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 3799        case speed_u::Type::Type1: {
 
 3800          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 3802        case speed_u::Type::Type2: {
 
 3803          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 3805        case speed_u::Type::Type3: {
 
 3806          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 3808        case speed_u::Type::Type4: {
 
 3809          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 3811        case speed_u::Type::Type5: {
 
 3812          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 3815          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3818    case speed::Type::Type3: {
 
 3821        case speed_u::Type::Type0: {
 
 3822          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 3824        case speed_u::Type::Type1: {
 
 3825          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 3827        case speed_u::Type::Type2: {
 
 3828          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 3830        case speed_u::Type::Type3: {
 
 3831          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 3833        case speed_u::Type::Type4: {
 
 3834          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 3836        case speed_u::Type::Type5: {
 
 3837          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 3840          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3843    case speed::Type::Type4: {
 
 3846        case speed_u::Type::Type0: {
 
 3847          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 3849        case speed_u::Type::Type1: {
 
 3850          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 3852        case speed_u::Type::Type2: {
 
 3853          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 3855        case speed_u::Type::Type3: {
 
 3856          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 3858        case speed_u::Type::Type4: {
 
 3859          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 3861        case speed_u::Type::Type5: {
 
 3862          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 3865          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3868    case speed::Type::Type5: {
 
 3871        case speed_u::Type::Type0: {
 
 3872          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 3874        case speed_u::Type::Type1: {
 
 3875          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 3877        case speed_u::Type::Type2: {
 
 3878          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 3880        case speed_u::Type::Type3: {
 
 3881          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 3883        case speed_u::Type::Type4: {
 
 3884          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 3886        case speed_u::Type::Type5: {
 
 3887          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 3890          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3894      ossia_do_throw(std::runtime_error, 
": bad type");
 
 3897template <
typename Functor>
 
 3898auto apply(Functor&& functor, 
const timing& arg0, 
const timing_u& arg1)
 
 3902    case timing::Type::Type0: {
 
 3905        case timing_u::Type::Type0: {
 
 3906          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 3908        case timing_u::Type::Type1: {
 
 3909          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 3911        case timing_u::Type::Type2: {
 
 3912          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 3914        case timing_u::Type::Type3: {
 
 3915          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 3917        case timing_u::Type::Type4: {
 
 3918          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 3920        case timing_u::Type::Type5: {
 
 3921          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 3923        case timing_u::Type::Type6: {
 
 3924          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 3926        case timing_u::Type::Type7: {
 
 3927          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 3929        case timing_u::Type::Type8: {
 
 3930          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 3933          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3936    case timing::Type::Type1: {
 
 3939        case timing_u::Type::Type0: {
 
 3940          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 3942        case timing_u::Type::Type1: {
 
 3943          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 3945        case timing_u::Type::Type2: {
 
 3946          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 3948        case timing_u::Type::Type3: {
 
 3949          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 3951        case timing_u::Type::Type4: {
 
 3952          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 3954        case timing_u::Type::Type5: {
 
 3955          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 3957        case timing_u::Type::Type6: {
 
 3958          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 3960        case timing_u::Type::Type7: {
 
 3961          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 3963        case timing_u::Type::Type8: {
 
 3964          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 3967          ossia_do_throw(std::runtime_error, 
": bad type");
 
 3970    case timing::Type::Type2: {
 
 3973        case timing_u::Type::Type0: {
 
 3974          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 3976        case timing_u::Type::Type1: {
 
 3977          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 3979        case timing_u::Type::Type2: {
 
 3980          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 3982        case timing_u::Type::Type3: {
 
 3983          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 3985        case timing_u::Type::Type4: {
 
 3986          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 3988        case timing_u::Type::Type5: {
 
 3989          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 3991        case timing_u::Type::Type6: {
 
 3992          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 3994        case timing_u::Type::Type7: {
 
 3995          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 3997        case timing_u::Type::Type8: {
 
 3998          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 4001          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4004    case timing::Type::Type3: {
 
 4007        case timing_u::Type::Type0: {
 
 4008          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 4010        case timing_u::Type::Type1: {
 
 4011          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 4013        case timing_u::Type::Type2: {
 
 4014          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 4016        case timing_u::Type::Type3: {
 
 4017          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 4019        case timing_u::Type::Type4: {
 
 4020          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 4022        case timing_u::Type::Type5: {
 
 4023          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 4025        case timing_u::Type::Type6: {
 
 4026          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 4028        case timing_u::Type::Type7: {
 
 4029          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 4031        case timing_u::Type::Type8: {
 
 4032          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 4035          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4038    case timing::Type::Type4: {
 
 4041        case timing_u::Type::Type0: {
 
 4042          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 4044        case timing_u::Type::Type1: {
 
 4045          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 4047        case timing_u::Type::Type2: {
 
 4048          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 4050        case timing_u::Type::Type3: {
 
 4051          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 4053        case timing_u::Type::Type4: {
 
 4054          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 4056        case timing_u::Type::Type5: {
 
 4057          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 4059        case timing_u::Type::Type6: {
 
 4060          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 4062        case timing_u::Type::Type7: {
 
 4063          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 4065        case timing_u::Type::Type8: {
 
 4066          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 4069          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4072    case timing::Type::Type5: {
 
 4075        case timing_u::Type::Type0: {
 
 4076          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 4078        case timing_u::Type::Type1: {
 
 4079          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 4081        case timing_u::Type::Type2: {
 
 4082          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 4084        case timing_u::Type::Type3: {
 
 4085          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 4087        case timing_u::Type::Type4: {
 
 4088          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 4090        case timing_u::Type::Type5: {
 
 4091          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 4093        case timing_u::Type::Type6: {
 
 4094          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 4096        case timing_u::Type::Type7: {
 
 4097          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 4099        case timing_u::Type::Type8: {
 
 4100          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 4103          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4106    case timing::Type::Type6: {
 
 4109        case timing_u::Type::Type0: {
 
 4110          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 4112        case timing_u::Type::Type1: {
 
 4113          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 4115        case timing_u::Type::Type2: {
 
 4116          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 4118        case timing_u::Type::Type3: {
 
 4119          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 4121        case timing_u::Type::Type4: {
 
 4122          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 4124        case timing_u::Type::Type5: {
 
 4125          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 4127        case timing_u::Type::Type6: {
 
 4128          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 4130        case timing_u::Type::Type7: {
 
 4131          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 4133        case timing_u::Type::Type8: {
 
 4134          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 4137          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4140    case timing::Type::Type7: {
 
 4143        case timing_u::Type::Type0: {
 
 4144          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 4146        case timing_u::Type::Type1: {
 
 4147          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 4149        case timing_u::Type::Type2: {
 
 4150          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 4152        case timing_u::Type::Type3: {
 
 4153          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 4155        case timing_u::Type::Type4: {
 
 4156          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 4158        case timing_u::Type::Type5: {
 
 4159          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 4161        case timing_u::Type::Type6: {
 
 4162          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 4164        case timing_u::Type::Type7: {
 
 4165          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 4167        case timing_u::Type::Type8: {
 
 4168          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 4171          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4174    case timing::Type::Type8: {
 
 4177        case timing_u::Type::Type0: {
 
 4178          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 4180        case timing_u::Type::Type1: {
 
 4181          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 4183        case timing_u::Type::Type2: {
 
 4184          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 4186        case timing_u::Type::Type3: {
 
 4187          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 4189        case timing_u::Type::Type4: {
 
 4190          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 4192        case timing_u::Type::Type5: {
 
 4193          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 4195        case timing_u::Type::Type6: {
 
 4196          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 4198        case timing_u::Type::Type7: {
 
 4199          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 4201        case timing_u::Type::Type8: {
 
 4202          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 4205          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4209      ossia_do_throw(std::runtime_error, 
": bad type");
 
 4212template <
typename Functor>
 
 4213auto apply(Functor&& functor, 
const angle& arg0, 
const value_variant_type& arg1)
 
 4217    case angle::Type::Type0: {
 
 4220        case value_variant_type::Type::Type0: {
 
 4221          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 4223        case value_variant_type::Type::Type1: {
 
 4224          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 4226        case value_variant_type::Type::Type2: {
 
 4227          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 4229        case value_variant_type::Type::Type3: {
 
 4230          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 4232        case value_variant_type::Type::Type4: {
 
 4233          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 4235        case value_variant_type::Type::Type5: {
 
 4236          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 4238        case value_variant_type::Type::Type6: {
 
 4239          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 4241        case value_variant_type::Type::Type7: {
 
 4242          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 4244        case value_variant_type::Type::Type8: {
 
 4245          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 4247        case value_variant_type::Type::Type9: {
 
 4248          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 4251          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4254    case angle::Type::Type1: {
 
 4257        case value_variant_type::Type::Type0: {
 
 4258          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 4260        case value_variant_type::Type::Type1: {
 
 4261          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 4263        case value_variant_type::Type::Type2: {
 
 4264          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 4266        case value_variant_type::Type::Type3: {
 
 4267          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 4269        case value_variant_type::Type::Type4: {
 
 4270          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 4272        case value_variant_type::Type::Type5: {
 
 4273          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 4275        case value_variant_type::Type::Type6: {
 
 4276          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 4278        case value_variant_type::Type::Type7: {
 
 4279          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 4281        case value_variant_type::Type::Type8: {
 
 4282          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 4284        case value_variant_type::Type::Type9: {
 
 4285          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 4288          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4292      ossia_do_throw(std::runtime_error, 
": bad type");
 
 4295template <
typename Functor>
 
 4296auto apply(Functor&& functor, 
const color& arg0, 
const value_variant_type& arg1)
 
 4300    case color::Type::Type0: {
 
 4303        case value_variant_type::Type::Type0: {
 
 4304          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 4306        case value_variant_type::Type::Type1: {
 
 4307          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 4309        case value_variant_type::Type::Type2: {
 
 4310          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 4312        case value_variant_type::Type::Type3: {
 
 4313          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 4315        case value_variant_type::Type::Type4: {
 
 4316          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 4318        case value_variant_type::Type::Type5: {
 
 4319          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 4321        case value_variant_type::Type::Type6: {
 
 4322          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 4324        case value_variant_type::Type::Type7: {
 
 4325          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 4327        case value_variant_type::Type::Type8: {
 
 4328          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 4330        case value_variant_type::Type::Type9: {
 
 4331          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 4334          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4337    case color::Type::Type1: {
 
 4340        case value_variant_type::Type::Type0: {
 
 4341          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 4343        case value_variant_type::Type::Type1: {
 
 4344          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 4346        case value_variant_type::Type::Type2: {
 
 4347          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 4349        case value_variant_type::Type::Type3: {
 
 4350          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 4352        case value_variant_type::Type::Type4: {
 
 4353          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 4355        case value_variant_type::Type::Type5: {
 
 4356          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 4358        case value_variant_type::Type::Type6: {
 
 4359          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 4361        case value_variant_type::Type::Type7: {
 
 4362          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 4364        case value_variant_type::Type::Type8: {
 
 4365          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 4367        case value_variant_type::Type::Type9: {
 
 4368          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 4371          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4374    case color::Type::Type2: {
 
 4377        case value_variant_type::Type::Type0: {
 
 4378          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 4380        case value_variant_type::Type::Type1: {
 
 4381          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 4383        case value_variant_type::Type::Type2: {
 
 4384          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 4386        case value_variant_type::Type::Type3: {
 
 4387          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 4389        case value_variant_type::Type::Type4: {
 
 4390          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 4392        case value_variant_type::Type::Type5: {
 
 4393          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 4395        case value_variant_type::Type::Type6: {
 
 4396          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 4398        case value_variant_type::Type::Type7: {
 
 4399          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 4401        case value_variant_type::Type::Type8: {
 
 4402          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 4404        case value_variant_type::Type::Type9: {
 
 4405          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 4408          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4411    case color::Type::Type3: {
 
 4414        case value_variant_type::Type::Type0: {
 
 4415          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 4417        case value_variant_type::Type::Type1: {
 
 4418          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 4420        case value_variant_type::Type::Type2: {
 
 4421          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 4423        case value_variant_type::Type::Type3: {
 
 4424          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 4426        case value_variant_type::Type::Type4: {
 
 4427          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 4429        case value_variant_type::Type::Type5: {
 
 4430          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 4432        case value_variant_type::Type::Type6: {
 
 4433          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 4435        case value_variant_type::Type::Type7: {
 
 4436          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 4438        case value_variant_type::Type::Type8: {
 
 4439          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 4441        case value_variant_type::Type::Type9: {
 
 4442          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
 4445          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4448    case color::Type::Type4: {
 
 4451        case value_variant_type::Type::Type0: {
 
 4452          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 4454        case value_variant_type::Type::Type1: {
 
 4455          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 4457        case value_variant_type::Type::Type2: {
 
 4458          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 4460        case value_variant_type::Type::Type3: {
 
 4461          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 4463        case value_variant_type::Type::Type4: {
 
 4464          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 4466        case value_variant_type::Type::Type5: {
 
 4467          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 4469        case value_variant_type::Type::Type6: {
 
 4470          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 4472        case value_variant_type::Type::Type7: {
 
 4473          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 4475        case value_variant_type::Type::Type8: {
 
 4476          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 4478        case value_variant_type::Type::Type9: {
 
 4479          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value9);
 
 4482          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4485    case color::Type::Type5: {
 
 4488        case value_variant_type::Type::Type0: {
 
 4489          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 4491        case value_variant_type::Type::Type1: {
 
 4492          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 4494        case value_variant_type::Type::Type2: {
 
 4495          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 4497        case value_variant_type::Type::Type3: {
 
 4498          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 4500        case value_variant_type::Type::Type4: {
 
 4501          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 4503        case value_variant_type::Type::Type5: {
 
 4504          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 4506        case value_variant_type::Type::Type6: {
 
 4507          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 4509        case value_variant_type::Type::Type7: {
 
 4510          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 4512        case value_variant_type::Type::Type8: {
 
 4513          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 4515        case value_variant_type::Type::Type9: {
 
 4516          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value9);
 
 4519          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4522    case color::Type::Type6: {
 
 4525        case value_variant_type::Type::Type0: {
 
 4526          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 4528        case value_variant_type::Type::Type1: {
 
 4529          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 4531        case value_variant_type::Type::Type2: {
 
 4532          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 4534        case value_variant_type::Type::Type3: {
 
 4535          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 4537        case value_variant_type::Type::Type4: {
 
 4538          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 4540        case value_variant_type::Type::Type5: {
 
 4541          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 4543        case value_variant_type::Type::Type6: {
 
 4544          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 4546        case value_variant_type::Type::Type7: {
 
 4547          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 4549        case value_variant_type::Type::Type8: {
 
 4550          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 4552        case value_variant_type::Type::Type9: {
 
 4553          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value9);
 
 4556          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4559    case color::Type::Type7: {
 
 4562        case value_variant_type::Type::Type0: {
 
 4563          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 4565        case value_variant_type::Type::Type1: {
 
 4566          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 4568        case value_variant_type::Type::Type2: {
 
 4569          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 4571        case value_variant_type::Type::Type3: {
 
 4572          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 4574        case value_variant_type::Type::Type4: {
 
 4575          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 4577        case value_variant_type::Type::Type5: {
 
 4578          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 4580        case value_variant_type::Type::Type6: {
 
 4581          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 4583        case value_variant_type::Type::Type7: {
 
 4584          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 4586        case value_variant_type::Type::Type8: {
 
 4587          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 4589        case value_variant_type::Type::Type9: {
 
 4590          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value9);
 
 4593          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4596    case color::Type::Type8: {
 
 4599        case value_variant_type::Type::Type0: {
 
 4600          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 4602        case value_variant_type::Type::Type1: {
 
 4603          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 4605        case value_variant_type::Type::Type2: {
 
 4606          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 4608        case value_variant_type::Type::Type3: {
 
 4609          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 4611        case value_variant_type::Type::Type4: {
 
 4612          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 4614        case value_variant_type::Type::Type5: {
 
 4615          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 4617        case value_variant_type::Type::Type6: {
 
 4618          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 4620        case value_variant_type::Type::Type7: {
 
 4621          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 4623        case value_variant_type::Type::Type8: {
 
 4624          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 4626        case value_variant_type::Type::Type9: {
 
 4627          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value9);
 
 4630          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4634      ossia_do_throw(std::runtime_error, 
": bad type");
 
 4637template <
typename Functor>
 
 4638auto apply(Functor&& functor, 
const distance& arg0, 
const value_variant_type& arg1)
 
 4642    case distance::Type::Type0: {
 
 4645        case value_variant_type::Type::Type0: {
 
 4646          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 4648        case value_variant_type::Type::Type1: {
 
 4649          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 4651        case value_variant_type::Type::Type2: {
 
 4652          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 4654        case value_variant_type::Type::Type3: {
 
 4655          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 4657        case value_variant_type::Type::Type4: {
 
 4658          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 4660        case value_variant_type::Type::Type5: {
 
 4661          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 4663        case value_variant_type::Type::Type6: {
 
 4664          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 4666        case value_variant_type::Type::Type7: {
 
 4667          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 4669        case value_variant_type::Type::Type8: {
 
 4670          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 4672        case value_variant_type::Type::Type9: {
 
 4673          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 4676          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4679    case distance::Type::Type1: {
 
 4682        case value_variant_type::Type::Type0: {
 
 4683          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 4685        case value_variant_type::Type::Type1: {
 
 4686          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 4688        case value_variant_type::Type::Type2: {
 
 4689          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 4691        case value_variant_type::Type::Type3: {
 
 4692          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 4694        case value_variant_type::Type::Type4: {
 
 4695          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 4697        case value_variant_type::Type::Type5: {
 
 4698          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 4700        case value_variant_type::Type::Type6: {
 
 4701          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 4703        case value_variant_type::Type::Type7: {
 
 4704          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 4706        case value_variant_type::Type::Type8: {
 
 4707          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 4709        case value_variant_type::Type::Type9: {
 
 4710          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 4713          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4716    case distance::Type::Type2: {
 
 4719        case value_variant_type::Type::Type0: {
 
 4720          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 4722        case value_variant_type::Type::Type1: {
 
 4723          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 4725        case value_variant_type::Type::Type2: {
 
 4726          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 4728        case value_variant_type::Type::Type3: {
 
 4729          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 4731        case value_variant_type::Type::Type4: {
 
 4732          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 4734        case value_variant_type::Type::Type5: {
 
 4735          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 4737        case value_variant_type::Type::Type6: {
 
 4738          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 4740        case value_variant_type::Type::Type7: {
 
 4741          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 4743        case value_variant_type::Type::Type8: {
 
 4744          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 4746        case value_variant_type::Type::Type9: {
 
 4747          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 4750          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4753    case distance::Type::Type3: {
 
 4756        case value_variant_type::Type::Type0: {
 
 4757          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 4759        case value_variant_type::Type::Type1: {
 
 4760          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 4762        case value_variant_type::Type::Type2: {
 
 4763          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 4765        case value_variant_type::Type::Type3: {
 
 4766          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 4768        case value_variant_type::Type::Type4: {
 
 4769          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 4771        case value_variant_type::Type::Type5: {
 
 4772          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 4774        case value_variant_type::Type::Type6: {
 
 4775          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 4777        case value_variant_type::Type::Type7: {
 
 4778          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 4780        case value_variant_type::Type::Type8: {
 
 4781          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 4783        case value_variant_type::Type::Type9: {
 
 4784          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
 4787          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4790    case distance::Type::Type4: {
 
 4793        case value_variant_type::Type::Type0: {
 
 4794          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 4796        case value_variant_type::Type::Type1: {
 
 4797          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 4799        case value_variant_type::Type::Type2: {
 
 4800          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 4802        case value_variant_type::Type::Type3: {
 
 4803          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 4805        case value_variant_type::Type::Type4: {
 
 4806          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 4808        case value_variant_type::Type::Type5: {
 
 4809          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 4811        case value_variant_type::Type::Type6: {
 
 4812          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 4814        case value_variant_type::Type::Type7: {
 
 4815          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 4817        case value_variant_type::Type::Type8: {
 
 4818          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 4820        case value_variant_type::Type::Type9: {
 
 4821          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value9);
 
 4824          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4827    case distance::Type::Type5: {
 
 4830        case value_variant_type::Type::Type0: {
 
 4831          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 4833        case value_variant_type::Type::Type1: {
 
 4834          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 4836        case value_variant_type::Type::Type2: {
 
 4837          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 4839        case value_variant_type::Type::Type3: {
 
 4840          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 4842        case value_variant_type::Type::Type4: {
 
 4843          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 4845        case value_variant_type::Type::Type5: {
 
 4846          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 4848        case value_variant_type::Type::Type6: {
 
 4849          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 4851        case value_variant_type::Type::Type7: {
 
 4852          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 4854        case value_variant_type::Type::Type8: {
 
 4855          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 4857        case value_variant_type::Type::Type9: {
 
 4858          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value9);
 
 4861          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4864    case distance::Type::Type6: {
 
 4867        case value_variant_type::Type::Type0: {
 
 4868          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 4870        case value_variant_type::Type::Type1: {
 
 4871          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 4873        case value_variant_type::Type::Type2: {
 
 4874          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 4876        case value_variant_type::Type::Type3: {
 
 4877          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 4879        case value_variant_type::Type::Type4: {
 
 4880          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 4882        case value_variant_type::Type::Type5: {
 
 4883          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 4885        case value_variant_type::Type::Type6: {
 
 4886          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 4888        case value_variant_type::Type::Type7: {
 
 4889          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 4891        case value_variant_type::Type::Type8: {
 
 4892          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 4894        case value_variant_type::Type::Type9: {
 
 4895          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value9);
 
 4898          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4901    case distance::Type::Type7: {
 
 4904        case value_variant_type::Type::Type0: {
 
 4905          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 4907        case value_variant_type::Type::Type1: {
 
 4908          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 4910        case value_variant_type::Type::Type2: {
 
 4911          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 4913        case value_variant_type::Type::Type3: {
 
 4914          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 4916        case value_variant_type::Type::Type4: {
 
 4917          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 4919        case value_variant_type::Type::Type5: {
 
 4920          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 4922        case value_variant_type::Type::Type6: {
 
 4923          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 4925        case value_variant_type::Type::Type7: {
 
 4926          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 4928        case value_variant_type::Type::Type8: {
 
 4929          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 4931        case value_variant_type::Type::Type9: {
 
 4932          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value9);
 
 4935          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4938    case distance::Type::Type8: {
 
 4941        case value_variant_type::Type::Type0: {
 
 4942          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 4944        case value_variant_type::Type::Type1: {
 
 4945          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 4947        case value_variant_type::Type::Type2: {
 
 4948          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 4950        case value_variant_type::Type::Type3: {
 
 4951          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 4953        case value_variant_type::Type::Type4: {
 
 4954          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 4956        case value_variant_type::Type::Type5: {
 
 4957          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 4959        case value_variant_type::Type::Type6: {
 
 4960          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 4962        case value_variant_type::Type::Type7: {
 
 4963          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 4965        case value_variant_type::Type::Type8: {
 
 4966          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 4968        case value_variant_type::Type::Type9: {
 
 4969          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value9);
 
 4972          ossia_do_throw(std::runtime_error, 
": bad type");
 
 4975    case distance::Type::Type9: {
 
 4978        case value_variant_type::Type::Type0: {
 
 4979          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value0);
 
 4981        case value_variant_type::Type::Type1: {
 
 4982          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value1);
 
 4984        case value_variant_type::Type::Type2: {
 
 4985          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value2);
 
 4987        case value_variant_type::Type::Type3: {
 
 4988          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value3);
 
 4990        case value_variant_type::Type::Type4: {
 
 4991          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value4);
 
 4993        case value_variant_type::Type::Type5: {
 
 4994          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value5);
 
 4996        case value_variant_type::Type::Type6: {
 
 4997          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value6);
 
 4999        case value_variant_type::Type::Type7: {
 
 5000          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value7);
 
 5002        case value_variant_type::Type::Type8: {
 
 5003          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value8);
 
 5005        case value_variant_type::Type::Type9: {
 
 5006          return functor(arg0.m_impl.m_value9, arg1.m_impl.m_value9);
 
 5009          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5012    case distance::Type::Type10: {
 
 5015        case value_variant_type::Type::Type0: {
 
 5016          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value0);
 
 5018        case value_variant_type::Type::Type1: {
 
 5019          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value1);
 
 5021        case value_variant_type::Type::Type2: {
 
 5022          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value2);
 
 5024        case value_variant_type::Type::Type3: {
 
 5025          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value3);
 
 5027        case value_variant_type::Type::Type4: {
 
 5028          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value4);
 
 5030        case value_variant_type::Type::Type5: {
 
 5031          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value5);
 
 5033        case value_variant_type::Type::Type6: {
 
 5034          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value6);
 
 5036        case value_variant_type::Type::Type7: {
 
 5037          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value7);
 
 5039        case value_variant_type::Type::Type8: {
 
 5040          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value8);
 
 5042        case value_variant_type::Type::Type9: {
 
 5043          return functor(arg0.m_impl.m_value10, arg1.m_impl.m_value9);
 
 5046          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5050      ossia_do_throw(std::runtime_error, 
": bad type");
 
 5053template <
typename Functor>
 
 5054auto apply(Functor&& functor, 
const gain& arg0, 
const value_variant_type& arg1)
 
 5058    case gain::Type::Type0: {
 
 5061        case value_variant_type::Type::Type0: {
 
 5062          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 5064        case value_variant_type::Type::Type1: {
 
 5065          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 5067        case value_variant_type::Type::Type2: {
 
 5068          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 5070        case value_variant_type::Type::Type3: {
 
 5071          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 5073        case value_variant_type::Type::Type4: {
 
 5074          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 5076        case value_variant_type::Type::Type5: {
 
 5077          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 5079        case value_variant_type::Type::Type6: {
 
 5080          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 5082        case value_variant_type::Type::Type7: {
 
 5083          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 5085        case value_variant_type::Type::Type8: {
 
 5086          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 5088        case value_variant_type::Type::Type9: {
 
 5089          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 5092          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5095    case gain::Type::Type1: {
 
 5098        case value_variant_type::Type::Type0: {
 
 5099          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 5101        case value_variant_type::Type::Type1: {
 
 5102          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 5104        case value_variant_type::Type::Type2: {
 
 5105          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 5107        case value_variant_type::Type::Type3: {
 
 5108          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 5110        case value_variant_type::Type::Type4: {
 
 5111          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 5113        case value_variant_type::Type::Type5: {
 
 5114          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 5116        case value_variant_type::Type::Type6: {
 
 5117          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 5119        case value_variant_type::Type::Type7: {
 
 5120          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 5122        case value_variant_type::Type::Type8: {
 
 5123          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 5125        case value_variant_type::Type::Type9: {
 
 5126          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 5129          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5132    case gain::Type::Type2: {
 
 5135        case value_variant_type::Type::Type0: {
 
 5136          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 5138        case value_variant_type::Type::Type1: {
 
 5139          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 5141        case value_variant_type::Type::Type2: {
 
 5142          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 5144        case value_variant_type::Type::Type3: {
 
 5145          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 5147        case value_variant_type::Type::Type4: {
 
 5148          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 5150        case value_variant_type::Type::Type5: {
 
 5151          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 5153        case value_variant_type::Type::Type6: {
 
 5154          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 5156        case value_variant_type::Type::Type7: {
 
 5157          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 5159        case value_variant_type::Type::Type8: {
 
 5160          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 5162        case value_variant_type::Type::Type9: {
 
 5163          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 5166          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5169    case gain::Type::Type3: {
 
 5172        case value_variant_type::Type::Type0: {
 
 5173          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 5175        case value_variant_type::Type::Type1: {
 
 5176          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 5178        case value_variant_type::Type::Type2: {
 
 5179          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 5181        case value_variant_type::Type::Type3: {
 
 5182          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 5184        case value_variant_type::Type::Type4: {
 
 5185          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 5187        case value_variant_type::Type::Type5: {
 
 5188          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 5190        case value_variant_type::Type::Type6: {
 
 5191          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 5193        case value_variant_type::Type::Type7: {
 
 5194          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 5196        case value_variant_type::Type::Type8: {
 
 5197          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 5199        case value_variant_type::Type::Type9: {
 
 5200          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
 5203          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5207      ossia_do_throw(std::runtime_error, 
": bad type");
 
 5210template <
typename Functor>
 
 5211auto apply(Functor&& functor, 
const orientation& arg0, 
const value_variant_type& arg1)
 
 5215    case orientation::Type::Type0: {
 
 5218        case value_variant_type::Type::Type0: {
 
 5219          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 5221        case value_variant_type::Type::Type1: {
 
 5222          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 5224        case value_variant_type::Type::Type2: {
 
 5225          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 5227        case value_variant_type::Type::Type3: {
 
 5228          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 5230        case value_variant_type::Type::Type4: {
 
 5231          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 5233        case value_variant_type::Type::Type5: {
 
 5234          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 5236        case value_variant_type::Type::Type6: {
 
 5237          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 5239        case value_variant_type::Type::Type7: {
 
 5240          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 5242        case value_variant_type::Type::Type8: {
 
 5243          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 5245        case value_variant_type::Type::Type9: {
 
 5246          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 5249          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5252    case orientation::Type::Type1: {
 
 5255        case value_variant_type::Type::Type0: {
 
 5256          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 5258        case value_variant_type::Type::Type1: {
 
 5259          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 5261        case value_variant_type::Type::Type2: {
 
 5262          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 5264        case value_variant_type::Type::Type3: {
 
 5265          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 5267        case value_variant_type::Type::Type4: {
 
 5268          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 5270        case value_variant_type::Type::Type5: {
 
 5271          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 5273        case value_variant_type::Type::Type6: {
 
 5274          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 5276        case value_variant_type::Type::Type7: {
 
 5277          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 5279        case value_variant_type::Type::Type8: {
 
 5280          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 5282        case value_variant_type::Type::Type9: {
 
 5283          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 5286          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5289    case orientation::Type::Type2: {
 
 5292        case value_variant_type::Type::Type0: {
 
 5293          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 5295        case value_variant_type::Type::Type1: {
 
 5296          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 5298        case value_variant_type::Type::Type2: {
 
 5299          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 5301        case value_variant_type::Type::Type3: {
 
 5302          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 5304        case value_variant_type::Type::Type4: {
 
 5305          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 5307        case value_variant_type::Type::Type5: {
 
 5308          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 5310        case value_variant_type::Type::Type6: {
 
 5311          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 5313        case value_variant_type::Type::Type7: {
 
 5314          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 5316        case value_variant_type::Type::Type8: {
 
 5317          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 5319        case value_variant_type::Type::Type9: {
 
 5320          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 5323          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5327      ossia_do_throw(std::runtime_error, 
": bad type");
 
 5330template <
typename Functor>
 
 5331auto apply(Functor&& functor, 
const position& arg0, 
const value_variant_type& arg1)
 
 5335    case position::Type::Type0: {
 
 5338        case value_variant_type::Type::Type0: {
 
 5339          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 5341        case value_variant_type::Type::Type1: {
 
 5342          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 5344        case value_variant_type::Type::Type2: {
 
 5345          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 5347        case value_variant_type::Type::Type3: {
 
 5348          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 5350        case value_variant_type::Type::Type4: {
 
 5351          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 5353        case value_variant_type::Type::Type5: {
 
 5354          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 5356        case value_variant_type::Type::Type6: {
 
 5357          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 5359        case value_variant_type::Type::Type7: {
 
 5360          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 5362        case value_variant_type::Type::Type8: {
 
 5363          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 5366          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5369    case position::Type::Type1: {
 
 5372        case value_variant_type::Type::Type0: {
 
 5373          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 5375        case value_variant_type::Type::Type1: {
 
 5376          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 5378        case value_variant_type::Type::Type2: {
 
 5379          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 5381        case value_variant_type::Type::Type3: {
 
 5382          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 5384        case value_variant_type::Type::Type4: {
 
 5385          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 5387        case value_variant_type::Type::Type5: {
 
 5388          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 5390        case value_variant_type::Type::Type6: {
 
 5391          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 5393        case value_variant_type::Type::Type7: {
 
 5394          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 5396        case value_variant_type::Type::Type8: {
 
 5397          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 5400          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5403    case position::Type::Type2: {
 
 5406        case value_variant_type::Type::Type0: {
 
 5407          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 5409        case value_variant_type::Type::Type1: {
 
 5410          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 5412        case value_variant_type::Type::Type2: {
 
 5413          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 5415        case value_variant_type::Type::Type3: {
 
 5416          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 5418        case value_variant_type::Type::Type4: {
 
 5419          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 5421        case value_variant_type::Type::Type5: {
 
 5422          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 5424        case value_variant_type::Type::Type6: {
 
 5425          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 5427        case value_variant_type::Type::Type7: {
 
 5428          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 5430        case value_variant_type::Type::Type8: {
 
 5431          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 5434          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5437    case position::Type::Type3: {
 
 5440        case value_variant_type::Type::Type0: {
 
 5441          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 5443        case value_variant_type::Type::Type1: {
 
 5444          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 5446        case value_variant_type::Type::Type2: {
 
 5447          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 5449        case value_variant_type::Type::Type3: {
 
 5450          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 5452        case value_variant_type::Type::Type4: {
 
 5453          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 5455        case value_variant_type::Type::Type5: {
 
 5456          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 5458        case value_variant_type::Type::Type6: {
 
 5459          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 5461        case value_variant_type::Type::Type7: {
 
 5462          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 5464        case value_variant_type::Type::Type8: {
 
 5465          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 5468          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5471    case position::Type::Type4: {
 
 5474        case value_variant_type::Type::Type0: {
 
 5475          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 5477        case value_variant_type::Type::Type1: {
 
 5478          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 5480        case value_variant_type::Type::Type2: {
 
 5481          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 5483        case value_variant_type::Type::Type3: {
 
 5484          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 5486        case value_variant_type::Type::Type4: {
 
 5487          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 5489        case value_variant_type::Type::Type5: {
 
 5490          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 5492        case value_variant_type::Type::Type6: {
 
 5493          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 5495        case value_variant_type::Type::Type7: {
 
 5496          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 5498        case value_variant_type::Type::Type8: {
 
 5499          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 5502          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5505    case position::Type::Type5: {
 
 5508        case value_variant_type::Type::Type0: {
 
 5509          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 5511        case value_variant_type::Type::Type1: {
 
 5512          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 5514        case value_variant_type::Type::Type2: {
 
 5515          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 5517        case value_variant_type::Type::Type3: {
 
 5518          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 5520        case value_variant_type::Type::Type4: {
 
 5521          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 5523        case value_variant_type::Type::Type5: {
 
 5524          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 5526        case value_variant_type::Type::Type6: {
 
 5527          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 5529        case value_variant_type::Type::Type7: {
 
 5530          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 5532        case value_variant_type::Type::Type8: {
 
 5533          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 5536          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5539    case position::Type::Type6: {
 
 5542        case value_variant_type::Type::Type0: {
 
 5543          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 5545        case value_variant_type::Type::Type1: {
 
 5546          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 5548        case value_variant_type::Type::Type2: {
 
 5549          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 5551        case value_variant_type::Type::Type3: {
 
 5552          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 5554        case value_variant_type::Type::Type4: {
 
 5555          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 5557        case value_variant_type::Type::Type5: {
 
 5558          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 5560        case value_variant_type::Type::Type6: {
 
 5561          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 5563        case value_variant_type::Type::Type7: {
 
 5564          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 5566        case value_variant_type::Type::Type8: {
 
 5567          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 5570          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5573    case position::Type::Type7: {
 
 5576        case value_variant_type::Type::Type0: {
 
 5577          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 5579        case value_variant_type::Type::Type1: {
 
 5580          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 5582        case value_variant_type::Type::Type2: {
 
 5583          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 5585        case value_variant_type::Type::Type3: {
 
 5586          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 5588        case value_variant_type::Type::Type4: {
 
 5589          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 5591        case value_variant_type::Type::Type5: {
 
 5592          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 5594        case value_variant_type::Type::Type6: {
 
 5595          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 5597        case value_variant_type::Type::Type7: {
 
 5598          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 5600        case value_variant_type::Type::Type8: {
 
 5601          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 5604          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5607    case position::Type::Type8: {
 
 5610        case value_variant_type::Type::Type0: {
 
 5611          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 5613        case value_variant_type::Type::Type1: {
 
 5614          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 5616        case value_variant_type::Type::Type2: {
 
 5617          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 5619        case value_variant_type::Type::Type3: {
 
 5620          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 5622        case value_variant_type::Type::Type4: {
 
 5623          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 5625        case value_variant_type::Type::Type5: {
 
 5626          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 5628        case value_variant_type::Type::Type6: {
 
 5629          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 5631        case value_variant_type::Type::Type7: {
 
 5632          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 5634        case value_variant_type::Type::Type8: {
 
 5635          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 5638          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5642      ossia_do_throw(std::runtime_error, 
": bad type");
 
 5645template <
typename Functor>
 
 5646auto apply(Functor&& functor, 
const speed& arg0, 
const value_variant_type& arg1)
 
 5650    case speed::Type::Type0: {
 
 5653        case value_variant_type::Type::Type0: {
 
 5654          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 5656        case value_variant_type::Type::Type1: {
 
 5657          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 5659        case value_variant_type::Type::Type2: {
 
 5660          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 5662        case value_variant_type::Type::Type3: {
 
 5663          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 5665        case value_variant_type::Type::Type4: {
 
 5666          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 5668        case value_variant_type::Type::Type5: {
 
 5669          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 5671        case value_variant_type::Type::Type6: {
 
 5672          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 5674        case value_variant_type::Type::Type7: {
 
 5675          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 5677        case value_variant_type::Type::Type8: {
 
 5678          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 5680        case value_variant_type::Type::Type9: {
 
 5681          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 5684          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5687    case speed::Type::Type1: {
 
 5690        case value_variant_type::Type::Type0: {
 
 5691          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 5693        case value_variant_type::Type::Type1: {
 
 5694          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 5696        case value_variant_type::Type::Type2: {
 
 5697          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 5699        case value_variant_type::Type::Type3: {
 
 5700          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 5702        case value_variant_type::Type::Type4: {
 
 5703          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 5705        case value_variant_type::Type::Type5: {
 
 5706          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 5708        case value_variant_type::Type::Type6: {
 
 5709          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 5711        case value_variant_type::Type::Type7: {
 
 5712          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 5714        case value_variant_type::Type::Type8: {
 
 5715          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 5717        case value_variant_type::Type::Type9: {
 
 5718          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 5721          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5724    case speed::Type::Type2: {
 
 5727        case value_variant_type::Type::Type0: {
 
 5728          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 5730        case value_variant_type::Type::Type1: {
 
 5731          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 5733        case value_variant_type::Type::Type2: {
 
 5734          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 5736        case value_variant_type::Type::Type3: {
 
 5737          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 5739        case value_variant_type::Type::Type4: {
 
 5740          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 5742        case value_variant_type::Type::Type5: {
 
 5743          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 5745        case value_variant_type::Type::Type6: {
 
 5746          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 5748        case value_variant_type::Type::Type7: {
 
 5749          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 5751        case value_variant_type::Type::Type8: {
 
 5752          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 5754        case value_variant_type::Type::Type9: {
 
 5755          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 5758          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5761    case speed::Type::Type3: {
 
 5764        case value_variant_type::Type::Type0: {
 
 5765          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 5767        case value_variant_type::Type::Type1: {
 
 5768          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 5770        case value_variant_type::Type::Type2: {
 
 5771          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 5773        case value_variant_type::Type::Type3: {
 
 5774          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 5776        case value_variant_type::Type::Type4: {
 
 5777          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 5779        case value_variant_type::Type::Type5: {
 
 5780          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 5782        case value_variant_type::Type::Type6: {
 
 5783          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 5785        case value_variant_type::Type::Type7: {
 
 5786          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 5788        case value_variant_type::Type::Type8: {
 
 5789          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 5791        case value_variant_type::Type::Type9: {
 
 5792          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
 5795          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5798    case speed::Type::Type4: {
 
 5801        case value_variant_type::Type::Type0: {
 
 5802          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 5804        case value_variant_type::Type::Type1: {
 
 5805          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 5807        case value_variant_type::Type::Type2: {
 
 5808          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 5810        case value_variant_type::Type::Type3: {
 
 5811          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 5813        case value_variant_type::Type::Type4: {
 
 5814          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 5816        case value_variant_type::Type::Type5: {
 
 5817          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 5819        case value_variant_type::Type::Type6: {
 
 5820          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 5822        case value_variant_type::Type::Type7: {
 
 5823          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 5825        case value_variant_type::Type::Type8: {
 
 5826          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 5828        case value_variant_type::Type::Type9: {
 
 5829          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value9);
 
 5832          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5835    case speed::Type::Type5: {
 
 5838        case value_variant_type::Type::Type0: {
 
 5839          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 5841        case value_variant_type::Type::Type1: {
 
 5842          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 5844        case value_variant_type::Type::Type2: {
 
 5845          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 5847        case value_variant_type::Type::Type3: {
 
 5848          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 5850        case value_variant_type::Type::Type4: {
 
 5851          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 5853        case value_variant_type::Type::Type5: {
 
 5854          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 5856        case value_variant_type::Type::Type6: {
 
 5857          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 5859        case value_variant_type::Type::Type7: {
 
 5860          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 5862        case value_variant_type::Type::Type8: {
 
 5863          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 5865        case value_variant_type::Type::Type9: {
 
 5866          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value9);
 
 5869          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5873      ossia_do_throw(std::runtime_error, 
": bad type");
 
 5876template <
typename Functor>
 
 5877auto apply(Functor&& functor, 
const timing& arg0, 
const value_variant_type& arg1)
 
 5881    case timing::Type::Type0: {
 
 5884        case value_variant_type::Type::Type0: {
 
 5885          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value0);
 
 5887        case value_variant_type::Type::Type1: {
 
 5888          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value1);
 
 5890        case value_variant_type::Type::Type2: {
 
 5891          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value2);
 
 5893        case value_variant_type::Type::Type3: {
 
 5894          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value3);
 
 5896        case value_variant_type::Type::Type4: {
 
 5897          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value4);
 
 5899        case value_variant_type::Type::Type5: {
 
 5900          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value5);
 
 5902        case value_variant_type::Type::Type6: {
 
 5903          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value6);
 
 5905        case value_variant_type::Type::Type7: {
 
 5906          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value7);
 
 5908        case value_variant_type::Type::Type8: {
 
 5909          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value8);
 
 5911        case value_variant_type::Type::Type9: {
 
 5912          return functor(arg0.m_impl.m_value0, arg1.m_impl.m_value9);
 
 5915          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5918    case timing::Type::Type1: {
 
 5921        case value_variant_type::Type::Type0: {
 
 5922          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value0);
 
 5924        case value_variant_type::Type::Type1: {
 
 5925          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value1);
 
 5927        case value_variant_type::Type::Type2: {
 
 5928          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value2);
 
 5930        case value_variant_type::Type::Type3: {
 
 5931          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value3);
 
 5933        case value_variant_type::Type::Type4: {
 
 5934          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value4);
 
 5936        case value_variant_type::Type::Type5: {
 
 5937          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value5);
 
 5939        case value_variant_type::Type::Type6: {
 
 5940          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value6);
 
 5942        case value_variant_type::Type::Type7: {
 
 5943          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value7);
 
 5945        case value_variant_type::Type::Type8: {
 
 5946          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value8);
 
 5948        case value_variant_type::Type::Type9: {
 
 5949          return functor(arg0.m_impl.m_value1, arg1.m_impl.m_value9);
 
 5952          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5955    case timing::Type::Type2: {
 
 5958        case value_variant_type::Type::Type0: {
 
 5959          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value0);
 
 5961        case value_variant_type::Type::Type1: {
 
 5962          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value1);
 
 5964        case value_variant_type::Type::Type2: {
 
 5965          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value2);
 
 5967        case value_variant_type::Type::Type3: {
 
 5968          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value3);
 
 5970        case value_variant_type::Type::Type4: {
 
 5971          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value4);
 
 5973        case value_variant_type::Type::Type5: {
 
 5974          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value5);
 
 5976        case value_variant_type::Type::Type6: {
 
 5977          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value6);
 
 5979        case value_variant_type::Type::Type7: {
 
 5980          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value7);
 
 5982        case value_variant_type::Type::Type8: {
 
 5983          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value8);
 
 5985        case value_variant_type::Type::Type9: {
 
 5986          return functor(arg0.m_impl.m_value2, arg1.m_impl.m_value9);
 
 5989          ossia_do_throw(std::runtime_error, 
": bad type");
 
 5992    case timing::Type::Type3: {
 
 5995        case value_variant_type::Type::Type0: {
 
 5996          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value0);
 
 5998        case value_variant_type::Type::Type1: {
 
 5999          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value1);
 
 6001        case value_variant_type::Type::Type2: {
 
 6002          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value2);
 
 6004        case value_variant_type::Type::Type3: {
 
 6005          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value3);
 
 6007        case value_variant_type::Type::Type4: {
 
 6008          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value4);
 
 6010        case value_variant_type::Type::Type5: {
 
 6011          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value5);
 
 6013        case value_variant_type::Type::Type6: {
 
 6014          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value6);
 
 6016        case value_variant_type::Type::Type7: {
 
 6017          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value7);
 
 6019        case value_variant_type::Type::Type8: {
 
 6020          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value8);
 
 6022        case value_variant_type::Type::Type9: {
 
 6023          return functor(arg0.m_impl.m_value3, arg1.m_impl.m_value9);
 
 6026          ossia_do_throw(std::runtime_error, 
": bad type");
 
 6029    case timing::Type::Type4: {
 
 6032        case value_variant_type::Type::Type0: {
 
 6033          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value0);
 
 6035        case value_variant_type::Type::Type1: {
 
 6036          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value1);
 
 6038        case value_variant_type::Type::Type2: {
 
 6039          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value2);
 
 6041        case value_variant_type::Type::Type3: {
 
 6042          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value3);
 
 6044        case value_variant_type::Type::Type4: {
 
 6045          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value4);
 
 6047        case value_variant_type::Type::Type5: {
 
 6048          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value5);
 
 6050        case value_variant_type::Type::Type6: {
 
 6051          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value6);
 
 6053        case value_variant_type::Type::Type7: {
 
 6054          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value7);
 
 6056        case value_variant_type::Type::Type8: {
 
 6057          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value8);
 
 6059        case value_variant_type::Type::Type9: {
 
 6060          return functor(arg0.m_impl.m_value4, arg1.m_impl.m_value9);
 
 6063          ossia_do_throw(std::runtime_error, 
": bad type");
 
 6066    case timing::Type::Type5: {
 
 6069        case value_variant_type::Type::Type0: {
 
 6070          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value0);
 
 6072        case value_variant_type::Type::Type1: {
 
 6073          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value1);
 
 6075        case value_variant_type::Type::Type2: {
 
 6076          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value2);
 
 6078        case value_variant_type::Type::Type3: {
 
 6079          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value3);
 
 6081        case value_variant_type::Type::Type4: {
 
 6082          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value4);
 
 6084        case value_variant_type::Type::Type5: {
 
 6085          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value5);
 
 6087        case value_variant_type::Type::Type6: {
 
 6088          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value6);
 
 6090        case value_variant_type::Type::Type7: {
 
 6091          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value7);
 
 6093        case value_variant_type::Type::Type8: {
 
 6094          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value8);
 
 6096        case value_variant_type::Type::Type9: {
 
 6097          return functor(arg0.m_impl.m_value5, arg1.m_impl.m_value9);
 
 6100          ossia_do_throw(std::runtime_error, 
": bad type");
 
 6103    case timing::Type::Type6: {
 
 6106        case value_variant_type::Type::Type0: {
 
 6107          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value0);
 
 6109        case value_variant_type::Type::Type1: {
 
 6110          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value1);
 
 6112        case value_variant_type::Type::Type2: {
 
 6113          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value2);
 
 6115        case value_variant_type::Type::Type3: {
 
 6116          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value3);
 
 6118        case value_variant_type::Type::Type4: {
 
 6119          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value4);
 
 6121        case value_variant_type::Type::Type5: {
 
 6122          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value5);
 
 6124        case value_variant_type::Type::Type6: {
 
 6125          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value6);
 
 6127        case value_variant_type::Type::Type7: {
 
 6128          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value7);
 
 6130        case value_variant_type::Type::Type8: {
 
 6131          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value8);
 
 6133        case value_variant_type::Type::Type9: {
 
 6134          return functor(arg0.m_impl.m_value6, arg1.m_impl.m_value9);
 
 6137          ossia_do_throw(std::runtime_error, 
": bad type");
 
 6140    case timing::Type::Type7: {
 
 6143        case value_variant_type::Type::Type0: {
 
 6144          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value0);
 
 6146        case value_variant_type::Type::Type1: {
 
 6147          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value1);
 
 6149        case value_variant_type::Type::Type2: {
 
 6150          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value2);
 
 6152        case value_variant_type::Type::Type3: {
 
 6153          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value3);
 
 6155        case value_variant_type::Type::Type4: {
 
 6156          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value4);
 
 6158        case value_variant_type::Type::Type5: {
 
 6159          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value5);
 
 6161        case value_variant_type::Type::Type6: {
 
 6162          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value6);
 
 6164        case value_variant_type::Type::Type7: {
 
 6165          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value7);
 
 6167        case value_variant_type::Type::Type8: {
 
 6168          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value8);
 
 6170        case value_variant_type::Type::Type9: {
 
 6171          return functor(arg0.m_impl.m_value7, arg1.m_impl.m_value9);
 
 6174          ossia_do_throw(std::runtime_error, 
": bad type");
 
 6177    case timing::Type::Type8: {
 
 6180        case value_variant_type::Type::Type0: {
 
 6181          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value0);
 
 6183        case value_variant_type::Type::Type1: {
 
 6184          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value1);
 
 6186        case value_variant_type::Type::Type2: {
 
 6187          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value2);
 
 6189        case value_variant_type::Type::Type3: {
 
 6190          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value3);
 
 6192        case value_variant_type::Type::Type4: {
 
 6193          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value4);
 
 6195        case value_variant_type::Type::Type5: {
 
 6196          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value5);
 
 6198        case value_variant_type::Type::Type6: {
 
 6199          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value6);
 
 6201        case value_variant_type::Type::Type7: {
 
 6202          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value7);
 
 6204        case value_variant_type::Type::Type8: {
 
 6205          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value8);
 
 6207        case value_variant_type::Type::Type9: {
 
 6208          return functor(arg0.m_impl.m_value8, arg1.m_impl.m_value9);
 
 6211          ossia_do_throw(std::runtime_error, 
": bad type");
 
 6215      ossia_do_throw(std::runtime_error, 
": bad type");