Revision control

Copy as Markdown

<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: #ffffff; background-color: light-dark(#ffffff, #121212); color-scheme: light;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="771px" height="831px" viewBox="0 0 771 831" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0&quot; version=&quot;29.1.1&quot;&gt;&#xA; &lt;diagram name=&quot;Page-1&quot; id=&quot;EWGCfftPMHDNaB7Ktcnn&quot;&gt;&#xA; &lt;mxGraphModel dx=&quot;1306&quot; dy=&quot;798&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;850&quot; pageHeight=&quot;1100&quot; math=&quot;0&quot; shadow=&quot;0&quot; adaptiveColors=&quot;none&quot;&gt;&#xA; &lt;root&gt;&#xA; &lt;mxCell id=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;bK31V1c9JacBmA6A12r2-30&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;fillColor=light-dark(#00414A,#00414A);strokeColor=light-dark(#001DBC,#000000);fontColor=light-dark(#FFFFFF,#FFFFFF);fillStyle=solid;align=left;&quot; value=&quot;&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;Project-supplied code and generated code&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;340&quot; width=&quot;770&quot; x=&quot;30&quot; y=&quot;401&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;bK31V1c9JacBmA6A12r2-4&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;fillColor=light-dark(#00414A,#00414A);fontColor=#FFFFFF;strokeColor=light-dark(#2D7600,#000000);gradientColor=none;fillStyle=solid;align=left;&quot; value=&quot;&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;Java platform classes&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;310&quot; width=&quot;770&quot; x=&quot;30&quot; y=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;bK31V1c9JacBmA6A12r2-38&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;Java Proxy&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;330&quot; y=&quot;140&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-16&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;Java interface to implement&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;590&quot; y=&quot;140&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-17&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;InvocationHandler&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;120&quot; x=&quot;330&quot; y=&quot;250&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-18&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;M-e99mp8GHTy1wrCGWPK-16&quot; style=&quot;endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;strokeColor=#2CDE85;&quot; target=&quot;bK31V1c9JacBmA6A12r2-38&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot; /&gt;&#xA; &lt;mxPoint x=&quot;400&quot; y=&quot;410&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;450&quot; y=&quot;360&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-19&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;bK31V1c9JacBmA6A12r2-38&quot; style=&quot;endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeColor=#2CDE85;entryX=0.5;entryY=0;entryDx=0;entryDy=0;&quot; target=&quot;M-e99mp8GHTy1wrCGWPK-17&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot; /&gt;&#xA; &lt;mxPoint x=&quot;620&quot; y=&quot;240&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;390&quot; y=&quot;230&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-20&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;NativeInvocationHandler&amp;amp;nbsp;&amp;lt;br&amp;gt;(project-supplied)&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;190&quot; x=&quot;295&quot; y=&quot;470&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-21&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;Generic dispatch to C++&amp;lt;br&amp;gt;(generated)&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;190&quot; x=&quot;295&quot; y=&quot;560&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-22&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;Dispatch to specific C++ virtual functions&amp;lt;br&amp;gt;(generated)&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;190&quot; x=&quot;295&quot; y=&quot;650&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-24&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;fillColor=light-dark(#00414A,#00414A);strokeColor=light-dark(#001DBC,#000000);fontColor=light-dark(#FFFFFF,#FFFFFF);fillStyle=solid;align=left;&quot; value=&quot;&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;User code (C++)&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;160&quot; width=&quot;770&quot; x=&quot;30&quot; y=&quot;750&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-26&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;M-e99mp8GHTy1wrCGWPK-17&quot; style=&quot;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeColor=#2CDE85;&quot; target=&quot;M-e99mp8GHTy1wrCGWPK-20&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot; /&gt;&#xA; &lt;mxPoint x=&quot;640&quot; y=&quot;560&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;781&quot; y=&quot;623&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-28&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;M-e99mp8GHTy1wrCGWPK-21&quot; style=&quot;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeColor=#2CDE85;&quot; target=&quot;M-e99mp8GHTy1wrCGWPK-22&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot; /&gt;&#xA; &lt;mxPoint x=&quot;680&quot; y=&quot;550&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;687&quot; y=&quot;585&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-30&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;M-e99mp8GHTy1wrCGWPK-20&quot; style=&quot;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeColor=#2CDE85;&quot; target=&quot;M-e99mp8GHTy1wrCGWPK-21&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot; /&gt;&#xA; &lt;mxPoint x=&quot;620&quot; y=&quot;580&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;620&quot; y=&quot;610&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-31&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;&quot; value=&quot;Interface implementation, overrides of C++ virtual functions&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;190&quot; x=&quot;295&quot; y=&quot;810&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;M-e99mp8GHTy1wrCGWPK-32&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;M-e99mp8GHTy1wrCGWPK-22&quot; style=&quot;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeColor=#2CDE85;&quot; target=&quot;M-e99mp8GHTy1wrCGWPK-31&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot; /&gt;&#xA; &lt;mxPoint x=&quot;560&quot; y=&quot;580&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;560&quot; y=&quot;610&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;/root&gt;&#xA; &lt;/mxGraphModel&gt;&#xA; &lt;/diagram&gt;&#xA;&lt;/mxfile&gt;&#xA;"><defs/><rect fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));" width="100%" height="100%" x="0" y="0"/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="bK31V1c9JacBmA6A12r2-30"><g transform="translate(0.5,0.5)"><rect x="0" y="321" width="770" height="340" fill="#00414a" style="fill: rgb(0, 65, 74); stroke: light-dark(rgb(0, 29, 188), rgb(0, 0, 0));" stroke="#001dbc" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 768px; height: 1px; padding-top: 328px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #FFFFFF; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div align="left">Project-supplied code and generated code</div></div></div></div></foreignObject><text x="2" y="340" fill="light-dark(#FFFFFF,#FFFFFF)" font-family="Helvetica" font-size="12px">Project-supplied code and generated code</text></switch></g></g></g><g data-cell-id="bK31V1c9JacBmA6A12r2-4"><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="770" height="310" fill="#00414a" style="fill: rgb(0, 65, 74); stroke: light-dark(rgb(45, 118, 0), rgb(0, 0, 0));" stroke="#2d7600" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 768px; height: 1px; padding-top: 7px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #FFFFFF; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#FFFFFF, #121212); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div align="left">Java platform classes</div></div></div></div></foreignObject><text x="2" y="19" fill="#FFFFFF" font-family="Helvetica" font-size="12px">Java platform classes</text></switch></g></g></g><g data-cell-id="bK31V1c9JacBmA6A12r2-38"><g transform="translate(0.5,0.5)"><rect x="300" y="60" width="120" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 90px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Java Proxy</div></div></div></foreignObject><text x="360" y="94" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">Java Proxy</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-16"><g transform="translate(0.5,0.5)"><rect x="560" y="60" width="120" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 90px; margin-left: 561px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Java interface to implement</div></div></div></foreignObject><text x="620" y="94" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">Java interface to im...</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-17"><g transform="translate(0.5,0.5)"><rect x="300" y="170" width="120" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 301px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">InvocationHandler</div></div></div></foreignObject><text x="360" y="204" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">InvocationHandler</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-18"><g transform="translate(0.5,0.5)"><path d="M 560 90 L 426.37 90" fill="none" stroke="#2cde85" style="stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 421.12 90 L 428.12 86.5 L 426.37 90 L 428.12 93.5 Z" fill="#2cde85" style="fill: light-dark(rgb(44, 222, 133), rgb(0, 122, 45)); stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke="#2cde85" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-19"><g transform="translate(0.5,0.5)"><path d="M 360 120 L 360 163.63" fill="none" stroke="#2cde85" style="stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 168.88 L 356.5 161.88 L 360 163.63 L 363.5 161.88 Z" fill="#2cde85" style="fill: light-dark(rgb(44, 222, 133), rgb(0, 122, 45)); stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke="#2cde85" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-20"><g transform="translate(0.5,0.5)"><rect x="265" y="390" width="190" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 420px; margin-left: 266px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NativeInvocationHandler <br />(project-supplied)</div></div></div></foreignObject><text x="360" y="424" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">NativeInvocationHandler...</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-21"><g transform="translate(0.5,0.5)"><rect x="265" y="480" width="190" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 510px; margin-left: 266px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Generic dispatch to C++<br />(generated)</div></div></div></foreignObject><text x="360" y="514" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">Generic dispatch to C++...</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-22"><g transform="translate(0.5,0.5)"><rect x="265" y="570" width="190" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 600px; margin-left: 266px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dispatch to specific C++ virtual functions<br />(generated)</div></div></div></foreignObject><text x="360" y="604" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">Dispatch to specific C++ virtua...</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-24"><g transform="translate(0.5,0.5)"><rect x="0" y="670" width="770" height="160" fill="#00414a" style="fill: rgb(0, 65, 74); stroke: light-dark(rgb(0, 29, 188), rgb(0, 0, 0));" stroke="#001dbc" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 768px; height: 1px; padding-top: 677px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #FFFFFF; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #FFFFFF; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div align="left">User code (C++)</div></div></div></div></foreignObject><text x="2" y="689" fill="light-dark(#FFFFFF,#FFFFFF)" font-family="Helvetica" font-size="12px">User code (C++)</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-26"><g transform="translate(0.5,0.5)"><path d="M 360 230 L 360 383.63" fill="none" stroke="#2cde85" style="stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 388.88 L 356.5 381.88 L 360 383.63 L 363.5 381.88 Z" fill="#2cde85" style="fill: light-dark(rgb(44, 222, 133), rgb(0, 122, 45)); stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke="#2cde85" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-28"><g transform="translate(0.5,0.5)"><path d="M 360 540 L 360 563.63" fill="none" stroke="#2cde85" style="stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 568.88 L 356.5 561.88 L 360 563.63 L 363.5 561.88 Z" fill="#2cde85" style="fill: light-dark(rgb(44, 222, 133), rgb(0, 122, 45)); stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke="#2cde85" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-30"><g transform="translate(0.5,0.5)"><path d="M 360 450 L 360 473.63" fill="none" stroke="#2cde85" style="stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 478.88 L 356.5 471.88 L 360 473.63 L 363.5 471.88 Z" fill="#2cde85" style="fill: light-dark(rgb(44, 222, 133), rgb(0, 122, 45)); stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke="#2cde85" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-31"><g transform="translate(0.5,0.5)"><rect x="265" y="730" width="190" height="60" fill="#2cde85" style="fill: rgb(44, 222, 133); stroke: rgb(0, 0, 0);" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 760px; margin-left: 266px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Interface implementation, overrides of C++ virtual functions</div></div></div></foreignObject><text x="360" y="764" fill="light-dark(#000000,#000000)" font-family="Helvetica" font-size="12px" text-anchor="middle">Interface implementation, overr...</text></switch></g></g></g><g data-cell-id="M-e99mp8GHTy1wrCGWPK-32"><g transform="translate(0.5,0.5)"><path d="M 360 630 L 360 723.63" fill="none" stroke="#2cde85" style="stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 360 728.88 L 356.5 721.88 L 360 723.63 L 363.5 721.88 Z" fill="#2cde85" style="fill: light-dark(rgb(44, 222, 133), rgb(0, 122, 45)); stroke: light-dark(rgb(44, 222, 133), rgb(0, 122, 45));" stroke="#2cde85" stroke-miterlimit="10" pointer-events="all"/></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>