Revision control
Copy as Markdown
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<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="<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0" version="29.1.1">
 <diagram name="Page-1" id="EWGCfftPMHDNaB7Ktcnn">
 <mxGraphModel dx="1306" dy="798" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0" adaptiveColors="none">
 <root>
 <mxCell id="0" />
 <mxCell id="1" parent="0" />
 <mxCell id="bK31V1c9JacBmA6A12r2-30" parent="1" style="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;" value="&lt;div align=&quot;left&quot;&gt;Project-supplied code and generated code&lt;/div&gt;" vertex="1">
 <mxGeometry height="340" width="770" x="30" y="401" as="geometry" />
 </mxCell>
 <mxCell id="bK31V1c9JacBmA6A12r2-4" parent="1" style="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;" value="&lt;div align=&quot;left&quot;&gt;Java platform classes&lt;/div&gt;" vertex="1">
 <mxGeometry height="310" width="770" x="30" y="80" as="geometry" />
 </mxCell>
 <mxCell id="bK31V1c9JacBmA6A12r2-38" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="Java Proxy" vertex="1">
 <mxGeometry height="60" width="120" x="330" y="140" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-16" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="Java interface to implement" vertex="1">
 <mxGeometry height="60" width="120" x="590" y="140" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-17" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="InvocationHandler" vertex="1">
 <mxGeometry height="60" width="120" x="330" y="250" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-18" edge="1" parent="1" source="M-e99mp8GHTy1wrCGWPK-16" style="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;" target="bK31V1c9JacBmA6A12r2-38" value="">
 <mxGeometry height="50" relative="1" width="50" as="geometry">
 <Array as="points" />
 <mxPoint x="400" y="410" as="sourcePoint" />
 <mxPoint x="450" y="360" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-19" edge="1" parent="1" source="bK31V1c9JacBmA6A12r2-38" style="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;" target="M-e99mp8GHTy1wrCGWPK-17" value="">
 <mxGeometry height="50" relative="1" width="50" as="geometry">
 <Array as="points" />
 <mxPoint x="620" y="240" as="sourcePoint" />
 <mxPoint x="390" y="230" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-20" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="NativeInvocationHandler&amp;nbsp;&lt;br&gt;(project-supplied)" vertex="1">
 <mxGeometry height="60" width="190" x="295" y="470" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-21" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="Generic dispatch to C++&lt;br&gt;(generated)" vertex="1">
 <mxGeometry height="60" width="190" x="295" y="560" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-22" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="Dispatch to specific C++ virtual functions&lt;br&gt;(generated)" vertex="1">
 <mxGeometry height="60" width="190" x="295" y="650" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-24" parent="1" style="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;" value="&lt;div align=&quot;left&quot;&gt;User code (C++)&lt;/div&gt;" vertex="1">
 <mxGeometry height="160" width="770" x="30" y="750" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-26" edge="1" parent="1" source="M-e99mp8GHTy1wrCGWPK-17" style="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;" target="M-e99mp8GHTy1wrCGWPK-20" value="">
 <mxGeometry height="50" relative="1" width="50" as="geometry">
 <Array as="points" />
 <mxPoint x="640" y="560" as="sourcePoint" />
 <mxPoint x="781" y="623" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-28" edge="1" parent="1" source="M-e99mp8GHTy1wrCGWPK-21" style="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;" target="M-e99mp8GHTy1wrCGWPK-22" value="">
 <mxGeometry height="50" relative="1" width="50" as="geometry">
 <Array as="points" />
 <mxPoint x="680" y="550" as="sourcePoint" />
 <mxPoint x="687" y="585" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-30" edge="1" parent="1" source="M-e99mp8GHTy1wrCGWPK-20" style="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;" target="M-e99mp8GHTy1wrCGWPK-21" value="">
 <mxGeometry height="50" relative="1" width="50" as="geometry">
 <Array as="points" />
 <mxPoint x="620" y="580" as="sourcePoint" />
 <mxPoint x="620" y="610" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-31" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=light-dark(#2CDE85,#2CDE85);fontColor=light-dark(#000000,#000000);strokeColor=light-dark(#000000,#000000);fillStyle=solid;" value="Interface implementation, overrides of C++ virtual functions" vertex="1">
 <mxGeometry height="60" width="190" x="295" y="810" as="geometry" />
 </mxCell>
 <mxCell id="M-e99mp8GHTy1wrCGWPK-32" edge="1" parent="1" source="M-e99mp8GHTy1wrCGWPK-22" style="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;" target="M-e99mp8GHTy1wrCGWPK-31" value="">
 <mxGeometry height="50" relative="1" width="50" as="geometry">
 <Array as="points" />
 <mxPoint x="560" y="580" as="sourcePoint" />
 <mxPoint x="560" y="610" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 </root>
 </mxGraphModel>
 </diagram>
</mxfile>
"><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>