\ProvidesExplPackage {luamml-patches-kernel} {2024-10-30} {0.2.0}
  {Feel free to add a description here}

\cs_set:Npn \mathsm@sh #1 #2 {
  \setbox \z@ \hbox {
    $
    \m@th #1 {
      #2
    }
    \luamml_save:nNn {mathsmash} #1 {mpadded}
    \luamml_pdf_write:
    $
  }
  \luamml_annotate:nen {2} {
    nucleus = true,
    core = consume_label('mathsmash', function(padded)
      padded.height, padded.depth = 0, 0~
    end),
  } {
    {}
    \finsm@sh
  }
}

\cs_set:Npn \mathph@nt #1 #2 {
  \setbox \z@ = \hbox {
    $
    \m@th
    #1
    {#2}
    \luamml_save:nNn {mathphant} #1 {mphantom}
    $
  }
  \luamml_annotate:nen {1} {
    nucleus = true,
    core = {[0] = 'mpadded',
      \ifh@\else
        width = 0,
      \fi
      \ifv@\else
        height = 0, depth = 0,
      \fi
      consume_label'mathphant',
    }
  } {
    \finph@nt
  }
}

\@ifpackageloaded {unicode-math} {} {
  \cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 {
    \cs_set:cpx { \cs_to_str:N #1 ~ } {
      \luamml_annotate:nen {#2} {
        nucleus = true, core = {[0] = 'mi', '\string\u{#3}'},
      } {
        \exp_not:v { \cs_to_str:N #1 ~ }
      }
    }
  }

  \__luamml_kernel_define_character:Nnn \models {3} {22a7}
  \__luamml_kernel_define_character:Nnn \hookrightarrow {3} {21aa}
  \__luamml_kernel_define_character:Nnn \hookleftarrow {3} {21a9}
  \__luamml_kernel_define_character:Nnn \bowtie {3} {22c8}
  \__luamml_kernel_define_character:Nnn \Longrightarrow {3} {27f9}
  \__luamml_kernel_define_character:Nnn \longrightarrow {3} {27f6}
  \__luamml_kernel_define_character:Nnn \Longleftarrow {3} {27f8}
  \__luamml_kernel_define_character:Nnn \longleftarrow {3} {27f5}
  \__luamml_kernel_define_character:Nnn \Longleftrightarrow {3} {27fa}
  \__luamml_kernel_define_character:Nnn \longleftrightarrow {3} {27f7}
  \__luamml_kernel_define_character:Nnn \longmapsto {4} {27fc}
}

\IfFileLoadedT {latex-lab-math.ltx} {
  \RequirePackage{luamml-patches-lab-math}
}
