Revert "Removed docs dir (should be in a different place/branch)"
authorJeanderson Candido <jeandersonbc@gmail.com>
Thu, 21 Jun 2018 12:06:56 +0000 (09:06 -0300)
committerJeanderson Candido <jeandersonbc@gmail.com>
Thu, 21 Jun 2018 12:06:56 +0000 (09:06 -0300)
This reverts commit b59acc6ac631d3e4624b81867296812fcc9ff575.

30 files changed:
docs/graphics/DFSListener.svg [new file with mode: 0644]
docs/graphics/app-types.svg [new file with mode: 0644]
docs/graphics/attributes.svg [new file with mode: 0644]
docs/graphics/bc-factory.svg [new file with mode: 0644]
docs/graphics/cg-impl.svg [new file with mode: 0644]
docs/graphics/cg-motivation.svg [new file with mode: 0644]
docs/graphics/cg-ontology.svg [new file with mode: 0644]
docs/graphics/cg-sequence.svg [new file with mode: 0644]
docs/graphics/choicegen-example.svg [new file with mode: 0644]
docs/graphics/genpeer.svg [new file with mode: 0644]
docs/graphics/interleavings.svg [new file with mode: 0644]
docs/graphics/jpf-abstractions.svg [new file with mode: 0644]
docs/graphics/jpf-basic.svg [new file with mode: 0644]
docs/graphics/jpf-intro-new.svg [new file with mode: 0644]
docs/graphics/jpf-layers.svg [new file with mode: 0644]
docs/graphics/jpf-project.svg [new file with mode: 0644]
docs/graphics/listener-overview.svg [new file with mode: 0644]
docs/graphics/listeners.svg [new file with mode: 0644]
docs/graphics/mji-call.svg [new file with mode: 0644]
docs/graphics/mji-functions.svg [new file with mode: 0644]
docs/graphics/mji-mangling.svg [new file with mode: 0644]
docs/graphics/new-testing.svg [new file with mode: 0644]
docs/graphics/por-mark.svg [new file with mode: 0644]
docs/graphics/por-scheduling-relevance.svg [new file with mode: 0644]
docs/graphics/properties.svg [new file with mode: 0644]
docs/graphics/report.svg [new file with mode: 0644]
docs/graphics/states-mc.svg [new file with mode: 0644]
docs/graphics/states-testing.svg [new file with mode: 0644]
docs/graphics/sw-model-checking-2.svg [new file with mode: 0644]
docs/graphics/sw-model-checking.svg [new file with mode: 0644]

diff --git a/docs/graphics/DFSListener.svg b/docs/graphics/DFSListener.svg
new file mode 100644 (file)
index 0000000..1684827
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="62 54 384 228" width="32pc" height="19pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2005-10-21 18:50:44 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="588.0188" height="768.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id26_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id27_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id28_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id29_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id30_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id31_Graphic" filter="url(#Shadow)"/></g><g id="id26_Graphic"><path d="M 91.05 67 L 155.45 67 C 163.0676 67 169.25 71.704 169.25 77.5 C 169.25 83.296 163.0676 88 155.45 88 L 91.05 88 C 83.4324 88 77.25 83.296 77.25 77.5 C 77.25 71.704 83.4324 67 91.05 67" fill="white"/><path d="M 91.05 67 L 155.45 67 C 163.0676 67 169.25 71.704 169.25 77.5 C 169.25 83.296 163.0676 88 155.45 88 L 91.05 88 C 83.4324 88 77.25 83.296 77.25 77.5 C 77.25 71.704 83.4324 67 91.05 67" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id27_Graphic"><path d="M 352.55 67 L 416.95 67 C 424.5676 67 430.75 71.704 430.75 77.5 C 430.75 83.296 424.5676 88 416.95 88 L 352.55 88 C 344.9324 88 338.75 83.296 338.75 77.5 C 338.75 71.704 344.9324 67 352.55 67" fill="white"/><path d="M 352.55 67 L 416.95 67 C 424.5676 67 430.75 71.704 430.75 77.5 C 430.75 83.296 424.5676 88 416.95 88 L 352.55 88 C 344.9324 88 338.75 83.296 338.75 77.5 C 338.75 71.704 344.9324 67 352.55 67" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id28_Graphic"><path d="M 136.475 118 L 211.025 118 C 219.8432 118 227 122.704 227 128.5 C 227 134.296 219.8432 139 211.025 139 L 136.475 139 C 127.6568 139 120.5 134.296 120.5 128.5 C 120.5 122.704 127.6568 118 136.475 118" fill="white"/><path d="M 136.475 118 L 211.025 118 C 219.8432 118 227 122.704 227 128.5 C 227 134.296 219.8432 139 211.025 139 L 136.475 139 C 127.6568 139 120.5 134.296 120.5 128.5 C 120.5 122.704 127.6568 118 136.475 118" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id29_Graphic"><path d="M 231.1125 183 L 301.6375 183 C 309.9796 183 316.75 187.704 316.75 193.5 C 316.75 199.296 309.9796 204 301.6375 204 L 231.1125 204 C 222.7704 204 216 199.296 216 193.5 C 216 187.704 222.7704 183 231.1125 183" fill="white"/><path d="M 231.1125 183 L 301.6375 183 C 309.9796 183 316.75 187.704 316.75 193.5 C 316.75 199.296 309.9796 204 301.6375 204 L 231.1125 204 C 222.7704 204 216 199.296 216 193.5 C 216 187.704 222.7704 183 231.1125 183" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id30_Graphic"><path d="M 247.55 148.5 L 311.95 148.5 C 319.5676 148.5 325.75 153.204 325.75 159 C 325.75 164.796 319.5676 169.5 311.95 169.5 L 247.55 169.5 C 239.9324 169.5 233.75 164.796 233.75 159 C 233.75 153.204 239.9324 148.5 247.55 148.5" fill="white"/><path d="M 247.55 148.5 L 311.95 148.5 C 319.5676 148.5 325.75 153.204 325.75 159 C 325.75 164.796 319.5676 169.5 311.95 169.5 L 247.55 169.5 C 239.9324 169.5 233.75 164.796 233.75 159 C 233.75 153.204 239.9324 148.5 247.55 148.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id31_Graphic"><path d="M 202.55 231 L 284.45 231 C 294.1376 231 302 235.704 302 241.5 C 302 247.296 294.1376 252 284.45 252 L 202.55 252 C 192.8624 252 185 247.296 185 241.5 C 185 235.704 192.8624 231 202.55 231" fill="white"/><path d="M 202.55 231 L 284.45 231 C 294.1376 231 302 235.704 302 241.5 C 302 247.296 294.1376 252 284.45 252 L 202.55 252 C 192.8624 252 185 247.296 185 241.5 C 185 235.704 192.8624 231 202.55 231" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 131.82329 138.16666 C 132.88209 140.61086 134.72058 143.048855 135 145.5 C 135.27942 147.951145 134.72904 151.04185 133.5 152.875 C 132.27096 154.70815 129.874775 156.1667 127.625 156.5 C 125.375225 156.8333 121.604006 156.31236 120 154.875 C 118.395994 153.43764 117.02568 150.964375 118 147.875 C 118.33188 146.82268 119.04462 145.594735 119.94362 144.28092" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 300.2699 236.20079 C 302.39772 235.01331 304.5007 234.23864 306.654 232.638 C 308.8073 231.03736 312.13694 229.05675 313.191 226.596 C 314.24506 224.13525 314.7705 221.5729 312.979 217.872 C 312.15253 216.16467 310.59337 214.11944 308.80859 211.9702" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(89.5 71.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".25927734" y="10" textLength="68.481445">searchStarted</tspan></text><text transform="translate(349.5 70.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".203125" y="10" textLength="74.59375">searchFinished</tspan></text><text transform="translate(127 121.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="4.6135254" y="10" textLength="72.77295">stateAdvanced</tspan></text><text transform="translate(241 152.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".044433594" y="10" textLength="47.68994">propertyV</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="47.541016" y="10" textLength="32.41455">iolated</tspan></text><text transform="translate(224.5 187.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".31274414" y="10" textLength="84.37451">stateBacktracked</tspan></text><text transform="translate(194.5 234.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".203125" y="10" textLength="96.59375">searchConstraintHit</tspan></text><path d="M 168.67215 76.98571 L 180.57215 76.98571 L 190.47357 76.98571 C 195.94198 76.98571 200.375 81.41873 200.375 86.88714 L 200.375 106.1 L 200.375 108.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 226.33107 127.98571 L 238.23107 127.98571 L 272.23107 127.98571 C 277.75392 127.98571 282.23107 123.50856 282.23107 117.98571 L 282.23107 87.5 C 282.23107 81.977153 286.70823 77.5 292.23107 77.5 L 326.85 77.5 L 328.85 77.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 200.375 139 L 200.375 150.9 L 200.375 154.54757 C 200.375 156.56207 202.00807 158.19515 204.02257 158.19515 L 221.89 158.19515 L 223.89 158.19515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 325.17215 158.48571 L 337.07215 158.48571 L 375.7735 158.48571 C 381.29635 158.48571 385.7735 154.00856 385.7735 148.48571 L 385.7735 99.9 L 385.7735 97.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 316.11719 192.98571 L 328.01719 192.98571 L 388.22082 192.98571 C 393.74367 192.98571 398.22082 188.50856 398.22082 182.98571 L 398.22082 99.9 L 398.22082 97.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 301.26512 240.98571 L 313.16512 240.98571 L 400.5722 240.98571 C 406.09504 240.98571 410.5722 236.50856 410.5722 230.98571 L 410.5722 99.9 L 410.5722 97.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 173.23588 139 L 173.23588 150.9 L 173.23588 182.69515 C 173.23588 188.218 177.71303 192.69515 183.23588 192.69515 L 204.1438 192.69515 L 206.1438 192.69515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 146.75778 139 L 146.75778 150.9 L 146.75778 230.69515 C 146.75778 236.218 151.23493 240.69515 156.75778 240.69515 L 173.15087 240.69515 L 175.15087 240.69515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 242.93519 252 L 242.93519 263.9 L 242.93519 267.45 C 242.93519 269.41061 241.3458 271 239.38519 271 L 109 271 C 103.47715 271 99 266.52285 99 261 L 99 132.5183 C 99 129.854546 101.1594 127.69515 103.82315 127.69515 L 108.646305 127.69515 L 110.646305 127.69515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 226.71194 203.16666 C 227.59954 205.40255 229.22284 207.77799 229.375 209.875 C 229.52716 211.97201 228.85404 214.12516 227.625 215.75 C 226.39596 217.37484 224.22894 219.08339 222 219.625 C 219.77106 220.16661 215.89567 220.14572 214.25 219 C 212.60433 217.85428 210.99047 215.69356 212.125 212.75 C 212.54779 211.65307 213.48253 210.31699 214.64302 208.87548" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/app-types.svg b/docs/graphics/app-types.svg
new file mode 100644 (file)
index 0000000..f845707
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="20 24 747 537" width="747pt" height="537pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2015-01-05 22:17:29 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="11" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="15" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-800" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="black"><g><path d="M 5.5999994 0 L 0 -2.0999998 L 0 2.0999998 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Times New Roman" font-size="20" panose-1="2 2 8 3 7 5 5 2 3 4" units-per-em="1000" underline-position="-108.88672" underline-thickness="95.214844" slope="0" x-height="456.54297" cap-height="662.10938" ascent="891.1133" descent="-216.3086" font-weight="bold"><font-face-src><font-face-name name="TimesNewRomanPS-BoldMT"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -2 4 4" markerWidth="4" markerHeight="4" color="black"><g><path d="M 1.6 0 L 0 -.6 L 0 .6 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>App Types</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id50_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id65_Graphic" filter="url(#Shadow)"/></g><g filter="url(#Shadow_2)"><path d="M 327.333 77.9986 L 474.333 77.9986 C 480.40813 77.9986 485.333 82.92347 485.333 88.9986 L 485.333 311.5916 C 485.333 317.66673 480.40813 322.5916 474.333 322.5916 L 327.333 322.5916 C 321.25787 322.5916 316.333 317.66673 316.333 311.5916 L 316.333 88.9986 C 316.333 82.92347 321.25787 77.9986 327.333 77.9986 Z" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g><g id="id50_Graphic"><path d="M 282.2563 114.6481 C 282.2563 109.43795 281.63467 108.79335 277.09383 103.6371 L 277.04586 103.58375 C 272.48103 98.3736 272.43356 98.3736 267.74881 98.3736 C 261.51097 98.3736 233.309 98.3736 233.309 98.3736 L 233.309 153.3736 L 282.2563 153.3736 L 282.2563 114.6481 Z" fill="white"/><path d="M 282.2563 114.6481 C 282.2563 109.43795 281.63467 108.79335 277.09383 103.6371 L 277.04586 103.58375 C 272.48103 98.3736 272.43356 98.3736 267.74881 98.3736 C 261.51097 98.3736 233.309 98.3736 233.309 98.3736 L 233.309 153.3736 L 282.2563 153.3736 L 282.2563 114.6481 Z M 282.2563 114.3797 C 282.2563 109.43795 282.20833 109.43795 272.43356 109.43795 L 272.43356 109.43795 C 272.43356 98.4275 272.43356 98.3736 268.03564 98.3736" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="31.2632" y1="385.317" x2="755.896" y2="385.317" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="16,9,1,9"/><line x1="300.567" y1="128.5" x2="506.433" y2="128.5" marker-end="url(#Arrow_Marker)" marker-start="url(#Arrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(118.333 406.626)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="133.21924">non-functional properties</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="110.08594"> unhandled exceptions</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="41.561523">     (incl. </tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="40.95996" y="37" textLength="73.95996">AssertionError)</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="51" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="51" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="51" textLength="52.58838"> deadlocks</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="65" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="65" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="65" textLength="29.95459"> races</tspan></text><text transform="translate(118.333 318.229)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="119.8291">restricted choice types</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="111.91211"> scheduling sequences</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="88.04297"> java.util.Random </tspan></text><text transform="translate(118.333 478.959)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="107.572266">improved inspection</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="93.5376"> coverage statistics</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="97.22217"> exact object counts</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="52" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="52" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="52" textLength="78.87451"> execution costs</tspan></text><text transform="translate(36.33314 309.333) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="72.53174">constraints</tspan></text><text transform="translate(38.9582 487.959) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="40.86914">benefi</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="40.86914" y="15" textLength="11.6674805">ts</tspan></text><text transform="translate(527.5 202)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="152.81836">restricted application models</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="26.280762"> UML</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="37.952148" y="24" textLength="73.981445"> statemachines</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="151.620605"> does not run w/o JPF libraries </tspan></text><text transform="translate(118.666 200.667)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="72.12842">runtime costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="130.23291"> order of magnitude slower</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="109.430664"> state storage memory</tspan></text><text transform="translate(118.333 244.97)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="127.13379">standard library support</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="116.77832"> java.net, javax.swing, ..</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="151.01367">     (needs abstraction models) </tspan></text><text transform="translate(528.197 437.293)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="158.89307">functional (domain) properties</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="120.430664"> built-in into JPF libraries</tspan></text><text transform="translate(118.666 288.728)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="160.74072">functional property impl. costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="123.49756"> listeners, MJI knowledge</tspan></text><text transform="translate(528.197 467.96)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="6.7192383">fl</tspan><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="6.7192383" y="10" textLength="94.166016">exible state space</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="73.36914"> domain specifi</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="85.44336" y="24" textLength="45.853027">c choices</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="63.572266">     (e.g. UML</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="63.169434" y="37" textLength="91.58789"> &quot;enabling events&quot;)</tspan></text><text transform="translate(528.864 511.294)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="163.80762">runtime costs &amp; library support</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="149.80518"> usually not a problem, domain</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="147.96289">     libs can control state space</tspan></text><text transform="translate(142 114.334)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="57.481445">runs on any</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="23" textLength="22">JVM</tspan></text><text transform="translate(597.018 112.38)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="44.63379">runs only</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="23" textLength="50.746094">under JPF</tspan></text><text transform="translate(528.197 406.626)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="102.066895">low modeling costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="165.08594"> statemachine w/o layout hassle,..</tspan></text><text transform="translate(527.833 247.333)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="131.40918">initial domain impl. costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="126.55371"> domain libs can be tricky </tspan></text><text transform="translate(408 85.8125)" fill="black"><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="0" y="11" textLength="65.5542">&quot;sweet spot&quot;</tspan></text><text transform="translate(345.41 172.334)" fill="red"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="red" x="0" y="10" textLength="93.51074">annotate program</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="24" textLength="67.251465"> requirements</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="38" textLength="89.86914"> sequences (UML)</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="52" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="52" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="52" textLength="79.46533"> contracts (PbC)</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="66" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="66" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="66" textLength="26.286133"> tests</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="79" textLength="23.22461">    …</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="92" textLength="3.0561523"> </tspan></text><text transform="translate(345.41 259.291)" fill="red"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="red" x="0" y="10" textLength="87.41992">analyze program</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="24" textLength="72.13379"> symbolic exec</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="38" textLength="15.280762">     </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="15.280762" y="38" textLength="11">→</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="26.280762" y="38" textLength="45.251465"> test data</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="52" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="52" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="52" textLength="105.77295"> thread safety / races </tspan></text><path d="M 443.077 271.319 C 448.50012 269.28287 455.12626 268.07605 459.348 265.21 C 463.56974 262.34395 467.8014 258.03911 468.41 254.121 C 469.0186 250.20289 466.9996 245.38813 463 241.699 C 460.3534 239.25783 455.78244 237.2113 451.19748 235.16785" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(241.566 140.124)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="29.453125">*.class</tspan></text><g id="id65_Graphic"><path d="M 424.2383 117.1085 C 424.2383 111.89835 423.61667 111.25375 419.07583 106.0975 L 419.02786 106.04415 C 414.46303 100.834 414.41556 100.834 409.7308 100.834 C 403.49297 100.834 375.291 100.834 375.291 100.834 L 375.291 155.834 L 424.2383 155.834 L 424.2383 117.1085 Z" fill="white"/><path d="M 424.2383 117.1085 C 424.2383 111.89835 423.61667 111.25375 419.07583 106.0975 L 419.02786 106.04415 C 414.46303 100.834 414.41556 100.834 409.7308 100.834 C 403.49297 100.834 375.291 100.834 375.291 100.834 L 375.291 155.834 L 424.2383 155.834 L 424.2383 117.1085 Z M 424.2383 116.8401 C 424.2383 111.89835 424.19033 111.89835 414.41556 111.89835 L 414.41556 111.89835 C 414.41556 100.8879 414.41556 100.834 410.01764 100.834" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(385.548 142.585)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="25.014648">*.java</tspan></text><text transform="translate(381.548 115.758)" fill="blue"><tspan font-family="Times New Roman" font-size="20" font-weight="bold" fill="blue" x="0" y="18" textLength="33.046875">@V</tspan></text><path d="M 574.3423 117.1085 C 574.3423 111.89835 573.72067 111.25375 569.17983 106.0975 L 569.13186 106.04415 C 564.56703 100.834 564.51956 100.834 559.8348 100.834 C 553.59697 100.834 525.395 100.834 525.395 100.834 L 525.395 155.834 L 574.3423 155.834 L 574.3423 117.1085 Z" fill="white"/><path d="M 574.3423 117.1085 C 574.3423 111.89835 573.72067 111.25375 569.17983 106.0975 L 569.13186 106.04415 C 564.56703 100.834 564.51956 100.834 559.8348 100.834 C 553.59697 100.834 525.395 100.834 525.395 100.834 L 525.395 155.834 L 574.3423 155.834 L 574.3423 117.1085 Z M 574.3423 116.8401 C 574.3423 111.89835 574.29433 111.89835 564.51956 111.89835 L 564.51956 111.89835 C 564.51956 100.8879 564.51956 100.834 560.12164 100.834" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><ellipse cx="543.737" cy="113.0895" rx="5.3750086" ry="4.0625065" fill="yellow"/><ellipse cx="543.737" cy="113.0895" rx="5.3750086" ry="4.0625065" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><ellipse cx="556.987" cy="126.2145" rx="5.3750086" ry="4.0625065" fill="red"/><ellipse cx="556.987" cy="126.2145" rx="5.3750086" ry="4.0625065" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><ellipse cx="538.987" cy="135.2145" rx="5.3750086" ry="4.0625065" fill="blue"/><ellipse cx="538.987" cy="135.2145" rx="5.3750086" ry="4.0625065" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 549.51266 113.920245 C 550.629 114.080814 551.84554 113.92592 552.862 114.402 C 553.87846 114.87808 555.03463 115.563874 555.612 116.777 C 555.80122 117.17458 555.9176 117.662774 555.9969 118.19702" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 559.38672 130.37215 C 560.37838 132.09026 562.65776 134.17099 562.362 135.527 C 562.06624 136.88301 560.5531 138.39227 557.612 138.509 C 555.40905 138.596435 551.6817 137.6995 548.14292 136.92421" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 538.68525 130.65814 C 538.5775 129.031255 537.41597 126.75709 538.362 125.777 C 539.30803 124.79691 542.22674 124.81438 544.362 124.777 C 545.42796 124.75834 546.5616 124.8872 547.71222 125.05311" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(535.842 142.467)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="25.014648">*.java</tspan></text><text transform="translate(198.618 42.3331)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="88.374023">JPF unaware</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="33" textLength="63.354492">programs</tspan></text><text transform="translate(354.033 33.4506)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="84.22119">JPF enabled</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="33" textLength="63.354492">programs</tspan></text><text transform="translate(498.368 43.1018)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="101.74072">JPF dependent</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="33" textLength="63.354492">programs</tspan></text></g></g></svg>
diff --git a/docs/graphics/attributes.svg b/docs/graphics/attributes.svg
new file mode 100644 (file)
index 0000000..2aa20a4
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="98 7 445 412" width="445pt" height="412pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-16 18:21:11 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="8" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="8" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".75079507"/><feOffset in="blur" result="offset" dx=".5" dy=".5"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><filter id="Shadow_3" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".75079507"/><feOffset in="blur" result="offset" dx="1" dy="1"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier New" font-size="9" panose-1="2 7 6 9 2 2 5 2 4 4" units-per-em="1000" underline-position="-232.91016" underline-thickness="100.097656" slope="0" x-height="443.35938" cap-height="591.79688" ascent="832.51953" descent="-300.29297" font-weight="bold"><font-face-src><font-face-name name="CourierNewPS-BoldMT"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledBall_Marker" viewBox="-4 -3 5 6" markerWidth="5" markerHeight="6" color="black"><g><circle cx="-1.4999993" cy="0" r="1.4999987" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier New" font-size="10" panose-1="2 7 6 9 2 2 5 2 4 4" units-per-em="1000" underline-position="-232.91016" underline-thickness="100.097656" slope="0" x-height="443.35938" cap-height="591.79688" ascent="832.51953" descent="-300.29297" font-weight="bold"><font-face-src><font-face-name name="CourierNewPS-BoldMT"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-6 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M -4.8000002 0 L 0 1.8000001 L 0 -1.8000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1090.9091" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1200" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="#404040"><g><path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledBall_Marker_2" viewBox="-4 -3 5 6" markerWidth="5" markerHeight="6" color="#404040"><g><circle cx="-1.4999993" cy="0" r="1.4999987" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><path d="M 129.05398 137.779 L 521.01013 137.779 C 526.53298 137.779 531.01013 142.25615 531.01013 147.779 C 531.01013 147.78732 531.01012 147.795646 531.0101 147.80397 L 530.5015 351.50493 C 530.4877 357.02776 525.99938 361.49372 520.47655 361.47993 C 520.47598 361.47993 520.4754 361.47993 520.47483 361.47992 L 319.923 360.94463 C 314.40018 360.92988 309.935 356.4408 309.94973 350.91797 C 309.94984 350.8784 309.95018 350.83881 309.95075 350.79924 L 310.80437 292.10691 C 310.88469 286.58465 306.47312 282.04286 300.95085 281.96255 C 300.923 281.96214 300.89516 281.96185 300.86732 281.96168 L 130.49925 280.90729 C 125.04834 280.87355 120.62861 276.48048 120.56189 271.02987 L 119.05473 147.9014 C 118.98713 142.37896 123.40915 137.84735 128.93158 137.77975 C 128.97238 137.77925 129.01318 137.779 129.05398 137.779 Z" fill="#fcffec"/><path d="M 129.05398 137.779 L 521.01013 137.779 C 526.53298 137.779 531.01013 142.25615 531.01013 147.779 C 531.01013 147.78732 531.01012 147.795646 531.0101 147.80397 L 530.5015 351.50493 C 530.4877 357.02776 525.99938 361.49372 520.47655 361.47993 C 520.47598 361.47993 520.4754 361.47993 520.47483 361.47992 L 319.923 360.94463 C 314.40018 360.92988 309.935 356.4408 309.94973 350.91797 C 309.94984 350.8784 309.95018 350.83881 309.95075 350.79924 L 310.80437 292.10691 C 310.88469 286.58465 306.47312 282.04286 300.95085 281.96255 C 300.923 281.96214 300.89516 281.96185 300.86732 281.96168 L 130.49925 280.90729 C 125.04834 280.87355 120.62861 276.48048 120.56189 271.02987 L 119.05473 147.9014 C 118.98713 142.37896 123.40915 137.84735 128.93158 137.77975 C 128.97238 137.77925 129.01318 137.779 129.05398 137.779 Z" stroke="#dabc2a" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="335.637" y="278.727" width="102.191" height="50.5717" fill="#faffc4"/><rect x="335.637" y="278.727" width="102.191" height="50.5717" stroke="#ffc189" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow)"><rect x="335.805" y="149.616" width="102.191" height="119.14" fill="#faffc4"/><rect x="335.805" y="149.616" width="102.191" height="119.14" stroke="#ffc189" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow)"><rect x="131.795" y="149.616" width="97.7571" height="95.5241" fill="#faffc4"/><rect x="131.795" y="149.616" width="97.7571" height="95.5241" stroke="#ffc189" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 119.83489 292.59206 L 291.39527 293.14156 C 296.91809 293.15925 301.38088 297.65072 301.36319 303.17354 C 301.36314 303.18956 301.36305 303.2056 301.36292 303.22162 L 300.91446 359.19774 C 300.87032 364.707 305.2906 369.21415 310.79969 369.2772 L 430.69996 370.6495 C 436.17774 370.7122 440.58542 375.17053 440.58552 380.64867 L 440.58582 397.60582 C 440.58592 403.12867 436.10885 407.6059 430.586 407.606 C 430.58594 407.606 430.58588 407.606 430.58582 407.606 L 120.528715 407.606 C 115.03568 407.606 110.57097 403.17527 110.52901 397.6824 L 109.80315 302.6684 C 109.76096 297.14571 114.20378 292.63449 119.72647 292.5923 C 119.76261 292.59202 119.79875 292.59194 119.83489 292.59206 Z" fill="#e5ffe3"/><path d="M 119.83489 292.59206 L 291.39527 293.14156 C 296.91809 293.15925 301.38088 297.65072 301.36319 303.17354 C 301.36314 303.18956 301.36305 303.2056 301.36292 303.22162 L 300.91446 359.19774 C 300.87032 364.707 305.2906 369.21415 310.79969 369.2772 L 430.69996 370.6495 C 436.17774 370.7122 440.58542 375.17053 440.58552 380.64867 L 440.58582 397.60582 C 440.58592 403.12867 436.10885 407.6059 430.586 407.606 C 430.58594 407.606 430.58588 407.606 430.58582 407.606 L 120.528715 407.606 C 115.03568 407.606 110.57097 403.17527 110.52901 397.6824 L 109.80315 302.6684 C 109.76096 297.14571 114.20378 292.63449 119.72647 292.5923 C 119.76261 292.59202 119.79875 292.59194 119.83489 292.59206 Z" stroke="#0e9319" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="337.865" y="68.4215" width="102.191" height="60" fill="white"/><rect x="337.865" y="68.4215" width="102.191" height="60" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(342.865 68.4215)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="77.808594">dup(), push(), pop(), ..</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="15.984375">------</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="28" textLength="70.253906">getOperandAttr(idx)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="38" textLength="82.703125">setOperandAttr(idx,obj)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="48" textLength="58.246094">getLocalAttr(idx)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="58" textLength="70.695312">setLocalAttr(idx,obj)</tspan></text><rect x="337.865" y="28.4215" width="102.191" height="40" fill="white"/><rect x="337.865" y="28.4215" width="102.191" height="40" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(342.865 28.4215)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="35.570312">int[] locals</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="58.6875">Object[] localAttr</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="28" textLength="48.476562">int[] operands</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="38" textLength="71.59375">Object[] operandAttr</tspan></text><rect x="337.865" y="18.4215" width="102.191" height="10" fill="white"/><rect x="337.865" y="18.4215" width="102.191" height="10" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(342.865 18.4215)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="23.415812" y="8" textLength="45.359375">StackFrame</tspan></text><rect x="133.561" y="59.0283" width="102.191" height="70" fill="white"/><rect x="133.561" y="59.0283" width="102.191" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(138.561 59.0283)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="25.351562">getIntV</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="24.761719" y="8" textLength="41.792969">alue(idx), ...</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="24.902344">setIntV</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="24.3125" y="18" textLength="50.23828">alue(idx, v), ...</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="28" textLength="15.984375">------</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="38" textLength="56.460938">getFieldAttr(idx)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="48" textLength="68.910156">setFieldAttr(idx,obj)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="58" textLength="52.015625">getObjectAttr()</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="68" textLength="62.242188">setObjectAttr(obj)</tspan></text><rect x="133.561" y="29.0283" width="102.191" height="30" fill="white"/><rect x="133.561" y="29.0283" width="102.191" height="30" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(138.561 29.0283)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="38.242188">int[] values</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="33.789062">Object[] fi</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="33.789062" y="18" textLength="27.121094">eldAttrs</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="28" textLength="59.13672">Object objectAttr</tspan></text><rect x="133.561" y="19.0283" width="102.191" height="10" fill="white"/><rect x="133.561" y="19.0283" width="102.191" height="10" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(138.561 19.0283)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="34.536906" y="8" textLength="23.117188">Fields</tspan></text><rect x="350.285" y="163.457" width="75.3187" height="100" fill="white"/><rect x="350.285" y="163.457" width="75.3187" height="100" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="330.498" y1="193.894" x2="425.604" y2="193.894" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="387.872" y1="153.139" x2="387.872" y2="263.946" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><rect x="353.396" y="167.278" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="167.278" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="167.048" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="167.048" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.396" y="178.857" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="178.857" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="178.627" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="178.627" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_2)"><rect x="353.396" y="199.952" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="199.952" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="199.722" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="199.722" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.396" y="211.531" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="211.531" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="211.301" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="211.301" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.396" y="223.11" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="223.11" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="222.88" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="222.88" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(335.377 190.062) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="23.009766">locals</tspan></text><text transform="translate(355.071 149.616)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="26.015625">values</tspan></text><text transform="translate(393.961 149.616)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="37.019531">attributes</tspan></text><text transform="translate(335.474 236.5) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="37.529297">operands</tspan></text><text transform="translate(309.594 187.863)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="18.505371">slots</tspan></text><rect x="144.642" y="183.546" width="75.3187" height="55.3838" fill="white"/><rect x="144.642" y="183.546" width="75.3187" height="55.3838" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="182.229" y1="173.228" x2="182.229" y2="239.159" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><rect x="147.753" y="187.367" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="187.367" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="187.137" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="187.137" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="147.753" y="198.946" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="198.946" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="198.716" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="198.716" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_2)"><rect x="147.753" y="211.041" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="211.041" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="210.811" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="210.811" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="147.753" y="222.62" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="222.62" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="222.39" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="222.39" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(134.303 169.705)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">fi</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="4.5" y="9" textLength="41.02295">eld-values</tspan></text><text transform="translate(188.318 169.705)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="37.019531">attributes</tspan></text><line x1="234.498" y1="231.537" x2="322.887" y2="231.537" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="329.357" y1="206.886" x2="240.379" y2="206.886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259.457 194.858)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="43.20703">putfield</tspan></text><path d="M 428.964 210.165 L 447.019 210.165 L 447.019 228.737 L 435.664 228.737" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259.457 221.198)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="43.20703">getfield</tspan></text><text transform="translate(449.973 209.928)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="16.202637">dup</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><path d="M 428.169 168.156 L 497.385 168.156 L 497.385 237.983 L 434.869 237.983" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(500.669 202.849)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="27.004395">iload</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><path d="M 429.803 200.798 L 456.803 200.798 L 456.803 180.798 L 434.503 180.798" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(458.813 182.982)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="32.405273">istore</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><g filter="url(#Shadow_3)"><rect x="353.166" y="236.151" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.166" y="236.151" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="389.968" y="235.921" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="389.968" y="235.921" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><rect x="350.674" y="286.352" width="75.3187" height="34.5028" fill="white"/><rect x="350.674" y="286.352" width="75.3187" height="34.5028" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><rect x="353.785" y="290.173" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.785" y="290.173" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.587" y="289.943" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.587" y="289.943" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.785" y="301.752" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.785" y="301.752" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.587" y="301.522" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.587" y="301.522" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 428.734 249.545 L 489.176 249.545 L 489.176 306.698 L 434.116 306.698" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_3)"><rect x="352.936" y="248.531" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="352.936" y="248.531" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="389.738" y="248.301" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="389.738" y="248.301" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(454.692 309.299)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="70.211426">invokevirtual</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><path d="M 428.603 291.278 L 446.659 291.278 L 446.659 259.189 L 434.503 259.189" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(448.227 265.618)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="32.405273">return</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><g filter="url(#Shadow)"><rect x="214.377" y="301.379" width="54" height="34" fill="white"/><rect x="214.377" y="301.379" width="54" height="34" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(219.377 308.379)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="6" y="8" textLength="32">attribute</tspan><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="10.220703" y="18" textLength="23.558594">object</tspan></text></g><path d="M 199.193 249.815 L 199.193 318.925 L 207.97754 318.8113" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 406.74574 294.90896 L 406.242 315.583 L 272.50995 315.01889" marker-end="url(#FilledArrow_Marker_2)" marker-start="url(#FilledBall_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(118.282 316.108)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="72.01172">setAttr(i,o)</tspan></text><text transform="translate(142.52 386.429)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="60.009766">getAttr(i)</tspan></text><g filter="url(#Shadow)"><rect x="208.685" y="363.774" width="65" height="34" fill="white"/><rect x="208.685" y="363.774" width="65" height="34" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(213.685 365.774)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="0" y="8" textLength="33.34375">- listener</tspan><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="0" y="18" textLength="46.21875">- Instruction</tspan><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="0" y="28" textLength="47.128906">- native peer</tspan></text></g><path d="M 201.48924 382.13757 L 191.346 382.486 L 191.55037 253.65499" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 280.88496 380.90578 L 403.869 381.314 L 403.869 332.244" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="241.23884" y1="363.274" x2="241.30251" y2="342.57897" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(280.538 386.363)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="66.010742">get?Attr(i)</tspan></text><text transform="translate(362.525 383.486)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="78.012695">set?Attr(i,o)</tspan></text><text transform="translate(250.716 143.057)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x=".4946289" y="10" textLength="44.010742">JPF core</tspan></text><text transform="translate(123.34 347.446)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="14.221924" y="10" textLength="19.556152">JPF</tspan><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x=".45581055" y="23" textLength="47.08838">extension</tspan></text><text transform="translate(257.781 101.477)" fill="blue"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="blue" x=".25878906" y="10" textLength="38.911133">attribute </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="blue" x="38.623047" y="10" textLength="16.118164">API</tspan></text><g filter="url(#Shadow_3)"><rect x="184.386" y="157.024" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.386" y="157.024" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(140.259 155.826)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="40.016602">object-attr</tspan></text><line x1="342.24" y1="282.597" x2="342.24" y2="275.551" marker-end="url(#FilledArrow_Marker_4)" marker-start="url(#FilledBall_Marker_2)" stroke="#404040" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="363.056" y="337.39" width="77" height="16.4457" fill="white" fill-opacity=".76"/><rect x="363.056" y="337.39" width="77" height="16.4457" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(368.056 341.61285)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="12.833984" y="8" textLength="41.332031">ThreadInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="156.551" y="257.852" width="77" height="16.4457" fill="white" fill-opacity=".76"/><rect x="156.551" y="257.852" width="77" height="16.4457" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(161.551 261.07485)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="10.609375" y="8" textLength="45.78125">ElementInfo</tspan></text></g></g></g></svg>
diff --git a/docs/graphics/bc-factory.svg b/docs/graphics/bc-factory.svg
new file mode 100644 (file)
index 0000000..f69c951
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="-2 3 732 514" width="61pc" height="514pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-16 18:32:22 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="gray"><g><path d="M 6.3999996 0 L 0 0 M 0 -2.3999999 L 6.3999996 0 L 0 2.3999999" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Times New Roman" font-size="14" panose-1="2 2 5 3 5 4 5 9 3 4" units-per-em="1000" underline-position="-108.88672" underline-thickness="48.828125" slope="-1166.6423" x-height="430.17578" cap-height="662.10938" ascent="891.1133" descent="-216.3086" font-style="italic" font-weight="500"><font-face-src><font-face-name name="TimesNewRomanPS-ItalicMT"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><path d="M 487.518 259.358 L 549.518 259.358 C 558.35456 259.358 565.518 266.52144 565.518 275.358 L 565.518 341.358 C 565.518 350.19456 558.35456 357.358 549.518 357.358 L 487.518 357.358 C 478.68144 357.358 471.518 350.19456 471.518 341.358 L 471.518 275.358 C 471.518 266.52144 478.68144 259.358 487.518 259.358 Z" fill="#e6e6e6"/><path d="M 487.518 259.358 L 549.518 259.358 C 558.35456 259.358 565.518 266.52144 565.518 275.358 L 565.518 341.358 C 565.518 350.19456 558.35456 357.358 549.518 357.358 L 487.518 357.358 C 478.68144 357.358 471.518 350.19456 471.518 341.358 L 471.518 275.358 C 471.518 266.52144 478.68144 259.358 487.518 259.358 Z" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 275.368 259.358 L 337.368 259.358 C 346.20456 259.358 353.368 266.52144 353.368 275.358 L 353.368 356.407 C 353.368 365.24356 346.20456 372.407 337.368 372.407 L 275.368 372.407 C 266.53144 372.407 259.368 365.24356 259.368 356.407 L 259.368 275.358 C 259.368 266.52144 266.53144 259.358 275.368 259.358 Z" fill="#e6e6e6"/><path d="M 275.368 259.358 L 337.368 259.358 C 346.20456 259.358 353.368 266.52144 353.368 275.358 L 353.368 356.407 C 353.368 365.24356 346.20456 372.407 337.368 372.407 L 275.368 372.407 C 266.53144 372.407 259.368 365.24356 259.368 356.407 L 259.368 275.358 C 259.368 266.52144 266.53144 259.358 275.368 259.358 Z" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 26.8252 54.5645 L 26.8252 19.3645 C 26.8252 16.9357 37.5772 14.9645 50.8252 14.9645 C 64.0732 14.9645 74.8252 16.9357 74.8252 19.3645 L 74.8252 54.5645 C 74.8252 56.9933 64.0732 58.9645 50.8252 58.9645 C 37.5772 58.9645 26.8252 56.9933 26.8252 54.5645" fill="white"/><path d="M 26.8252 54.5645 L 26.8252 19.3645 C 26.8252 16.9357 37.5772 14.9645 50.8252 14.9645 C 64.0732 14.9645 74.8252 16.9357 74.8252 19.3645 L 74.8252 54.5645 C 74.8252 56.9933 64.0732 58.9645 50.8252 58.9645 C 37.5772 58.9645 26.8252 56.9933 26.8252 54.5645 M 26.8252 19.3645 C 26.8252 21.7933 37.5772 23.7645 50.8252 23.7645 C 64.0732 23.7645 74.8252 21.7933 74.8252 19.3645" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(31.8252 32.1645)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="1.328125" y="11" textLength="35.34375">*.class</tspan></text><rect x="494.553" y="61.0215" width="121.415" height="28" fill="white"/><rect x="494.553" y="61.0215" width="121.415" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(499.553 61.0215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="99.375">Instruction ifeq(tgt)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="494.553" y="35.0215" width="121.415" height="26" fill="white"/><rect x="494.553" y="35.0215" width="121.415" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(499.553 35.0215)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="30.96873" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="3.0346484" y="23" textLength="105.3457">InstructionFactory</tspan></text><rect x="639.695" y="200.846" width="61.7822" height="28" fill="white"/><rect x="639.695" y="200.846" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(644.695 207.846)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.890123" y="11" textLength="10.001953">...</tspan></text><line x1="555.26" y1="152.712" x2="555.26028" y2="102.5215" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 304.67782 189.418 L 304.67782 182.418 L 304.67782 151.623 L 308.217 151.623 L 666.902 151.623 L 669.7412 151.623 L 669.7412 193.34685 L 669.7412 200.34685" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="515.096" y1="189.418" x2="515.93555" y2="151.623" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="352.606" y="107.24" width="121.415" height="14" fill="white"/><rect x="352.606" y="107.24" width="121.415" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.606 107.24)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="108.714844">Instruction execute()</tspan></text><rect x="352.606" y="93.2401" width="121.415" height="14" fill="white"/><rect x="352.606" y="93.2401" width="121.415" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.606 93.2401)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="24.708477" y="11" textLength="61.998047">Instruction</tspan></text><g filter="url(#Shadow)"><rect x="275.683" y="314.395" width="61.7822" height="28" fill="white"/><rect x="275.683" y="314.395" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.683 321.395)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="11.8901234" y="11" textLength="28.001953">IFEQ</tspan></text></g><g filter="url(#Shadow)"><rect x="485.885" y="314.395" width="61.7822" height="28" fill="white"/><rect x="485.885" y="314.395" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(490.885 321.395)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="11.8901234" y="11" textLength="28.001953">IFEQ</tspan></text></g><g filter="url(#Shadow)"><rect x="275.427" y="270.568" width="61.7822" height="28" fill="white"/><rect x="275.427" y="270.568" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.427 277.568)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.890123" y="11" textLength="10.001953">...</tspan></text></g><g filter="url(#Shadow)"><rect x="485.885" y="270.857" width="61.7822" height="28" fill="white"/><rect x="485.885" y="270.857" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(490.885 277.857)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.890123" y="11" textLength="10.001953">...</tspan></text></g><path d="M 246.11 247.41 L 245.412 327.791 L 265.2835 327.98724" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><line x1="245.776" y1="285.8723" x2="265.02941" y2="285.4575" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 578.975 247.41 L 578.337 328.532 L 558.06717 328.4869" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><line x1="578.68897" y1="283.77946" x2="558.06563" y2="284.1384" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 414.287 327.791 L 413.53368 157.12295 C 419.03363 157.09867 418.98507 146.09878 413.48513 146.12305 L 413.43488 134.73987" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="337.9652" y1="328.21897" x2="414.287" y2="327.791" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="485.385" y1="328.21" x2="414.287" y2="327.791" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(149.162 384.451)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="79.21289">Instruction </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="79.21289" y="10" textLength="46.20752">execute</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="125.42041" y="10" textLength="39.606445"> (){..</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="151.82471">  cond = popCondition()</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="72.611816">  if (cond)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="138.62256">    return jumpTarget</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="39.606445">  else</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="75" textLength="158.42578">    return getNextInsn()</tspan></text><path d="M 329.824 76.4422 L 412.748 76.4422 L 412.87469 83.34177" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="216.085" y="82.7095" width="113.739" height="14" fill="white"/><rect x="216.085" y="82.7095" width="113.739" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.085 82.7095)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="78.708984">setCode(code)</tspan></text><rect x="216.085" y="54.7095" width="113.739" height="28" fill="white"/><rect x="216.085" y="54.7095" width="113.739" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.085 54.7095)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="36.011719">factory</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="91.38281">Instruction[] code</tspan></text><rect x="216.085" y="40.7095" width="113.739" height="14" fill="white"/><rect x="216.085" y="40.7095" width="113.739" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.085 40.7095)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.546258" y="11" textLength="64.646484">MethodInfo</tspan></text><line x1="329.824" y1="62.127" x2="484.653" y2="62.054543" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="74.8252" y1="36.9645" x2="93.35158" y2="36.74587" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="337.7092" y1="284.6111" x2="485.385" y2="284.8139" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50.7243" y1="176.837" x2="717.844" y2="176.837" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="16,9,1,9"/><text transform="translate(53.112 183.541)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".23876953" y="12" textLength="31.875977">concr</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="31.595215" y="12" textLength="132.166016">ete execution semantics</tspan></text><text transform="translate(53.612 153.212)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".130859375" y="12" textLength="161.73828">abstract execution semantics</tspan></text><text transform="translate(153.46 299.483)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".25439453" y="12" textLength="31.875977">concr</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="31.61084" y="12" textLength="50.134766">ete value</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="14.182617" y="28" textLength="53.634766">execution</tspan></text><text transform="translate(592.455 317.551)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".20849609" y="12" textLength="83.58301">symbolic value</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="15.182617" y="28" textLength="53.634766">execution</tspan></text><text transform="translate(266.575 349.18)" fill="black"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" x=".13964844" y="12" textLength="79.720703">instruction set</tspan></text><text transform="translate(414.822 364.88)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="79.21289">Instruction </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="79.21289" y="10" textLength="46.20752">execute</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="125.42041" y="10" textLength="33.005371">(){..</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="158.42578">  if (!firstStepInsn()){</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="250.84082">    setNextCG(new PCChoiceGenerator())</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="99.016113">    return this</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="19.803223">  }</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="75" textLength="224.43652">  popCondition() // not interested</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="88" textLength="211.23438">  cond = getCG().getNextChoice()</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="101" textLength="99.016113">  if (cond){...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="114" textLength="138.62256">    return jumpTarget</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="127" textLength="85.813965">  } else {...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="140" textLength="158.42578">    return getNextInsn()</tspan></text><text transform="translate(617.76 80.3873)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="7.2963867" y="12" textLength="22.16211">per </tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="29.458496" y="11.753906" textLength="3.5"> </tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="32.958496" y="12" textLength="49.745117">bytecode</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".091308594" y="28" textLength="89.817383">factory methods</tspan></text><rect x="232.381" y="215.418" width="139.537" height="28" fill="white"/><rect x="232.381" y="215.418" width="139.537" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(237.381 215.418)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="99.375">Instruction ifeq(tgt)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="232.381" y="189.418" width="139.537" height="26" fill="white"/><rect x="232.381" y="189.418" width="139.537" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(237.381 189.418)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="7.3270938" y="10" textLength="16.123047">gov</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="22.712836" y="10" textLength="99.49707">.nasa.jpf.jvm.bytecode</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.0956484" y="23" textLength="105.3457">InstructionFactory</tspan></text><rect x="429.84" y="215.418" width="174" height="28" fill="white"/><rect x="429.84" y="215.418" width="174" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(434.84 215.418)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="99.375">Instruction ifeq(tgt)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="429.84" y="189.418" width="174" height="26" fill="white"/><rect x="429.84" y="189.418" width="174" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(434.84 189.418)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="39.5708" y="10" textLength="16.123047">gov</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="54.956543" y="10" textLength="69.472656">.nasa.jpf.symbc</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.6523438" y="23" textLength="158.69531">SymbolicInstructionFactory</tspan></text><text transform="translate(12.40741 223.195)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="79.21289">Instruction </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="79.21289" y="10" textLength="26.404297">ifeq</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="105.61719" y="10" textLength="112.21826">(int jumpTarget){</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="191.43115">  return new IFEQ(jumpTarget)</tspan></text><rect x="101.651" y="55.837" width="84.557" height="14" fill="white"/><rect x="101.651" y="55.837" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(106.651 55.837)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="10.2726406" y="11" textLength="54.01172">ClassInfo</tspan></text><rect x="101.651" y="29.149" width="84.557" height="14" fill="white"/><rect x="101.651" y="29.149" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(106.651 29.149)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="10.93182" y="11" textLength="52.69336">ClassFile</tspan></text><rect x="101.651" y="83.6054" width="84.557" height="14" fill="white"/><rect x="101.651" y="83.6054" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(106.651 83.6054)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="1.6095547" y="11" textLength="71.33789">CodeBuilder</tspan></text><line x1="215.602" y1="62.1806" x2="194.508" y2="62.1806" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="186.208" y1="90.6054" x2="207.785" y2="90.6054" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.01023" y1="43.149" x2="144.06628" y2="48.008652" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="143.92952" y1="69.837" x2="143.92953" y2="75.3054" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="345.178" y="20.3772" width="84.557" height="14" fill="white"/><rect x="345.178" y="20.3772" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(350.178 20.3772)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="18.285336" y="11" textLength="30.65625">Confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="48.941586" y="11" textLength="7.330078">g</tspan></text><path d="M 387.45665 34.3772 L 387.457 51.2746 L 338.124 51.2746" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(435.518 12.0618)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="165.02686">vm.insn_factory.class=...</tspan></text></g></g></svg>
diff --git a/docs/graphics/cg-impl.svg b/docs/graphics/cg-impl.svg
new file mode 100644 (file)
index 0000000..07a14cb
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="5 12 774 590" width="774pt" height="590pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 07:14:49 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="1176.0376"/><g><title>Layer 1</title><path d="M 624 341 L 640 341 L 640 441.1" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(42.3333 21.6667)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="129.62109">initNextTransition</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="129.62109" y="11" textLength="43.20703">(){...</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="115.21875">  curCg = nextCg</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="108.01758">  nextCg = null</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="122.41992">  curCg.advance()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="144.02344">   ..setExecThread()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="36.00586">  ...</tspan></text><text transform="translate(19.7895 260)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="122.41992">executeTransition</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="122.41992" y="11" textLength="36.00586">(){..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="172.82812">  isFirstStepInsn = true</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="158.42578">  while (pc != null) {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="237.63867">    nextPc = executeInstruction()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="208.83398">    if (ss.breakTransition())</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="79.21289">      break</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="95" textLength="57.609375">    else</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="109" textLength="122.41992">      pc = nextPc</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="123" textLength="194.43164">    isFirstStepInsn = false</tspan></text><text transform="translate(252.667 349.409)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="64.810547">execute()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="64.810547" y="11" textLength="21.603516">{..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="180.0293">  if (!ti.isFirstStepInsn</tspan><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="180.0293" y="25" textLength="14.402344">()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="194.43164" y="25" textLength="21.603516">) {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="180.0293">    ChoiceGenerator cg = </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="259.24219">          ..createMonitorEnterCG(..)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="144.02344">    if (cg != null){</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="252.04102">      ss.setNextChoiceGenerator(cg)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="95" textLength="194.43164">      return this // repeat</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="109" textLength="21.603516">  }</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="137" textLength="93.615234">  ei.lock(ti)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="151" textLength="165.62695">  return getNextPc(ti);</tspan></text><rect x="458.041" y="280.5" width="90" height="14" fill="white"/><rect x="458.041" y="280.5" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(463.041 280.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="50.021484">execute()</tspan></text><rect x="458.041" y="266.5" width="90" height="14" fill="white"/><rect x="458.041" y="266.5" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(463.041 266.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.0009766" y="11" textLength="61.998047">Instruction</tspan></text><rect x="254" y="65" width="152" height="42" fill="white"/><rect x="254" y="65" width="152" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259 65)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="47.34375">initNextT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="46.904297" y="11" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="37.347656">breakT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="36.908203" y="25" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="140.05664">setNextChoiceGenerator()</tspan></text><rect x="254" y="37" width="152" height="28" fill="white"/><rect x="254" y="37" width="152" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259 37)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="38.021484">nextCg</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="32.009766">curCg</tspan></text><rect x="254" y="23" width="152" height="14" fill="white"/><rect x="254" y="23" width="152" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259 23)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="34.982422" y="11" textLength="72.035156">SystemState</tspan></text><rect x="547.541" y="60" width="113.459" height="28" fill="white"/><rect x="547.541" y="60" width="113.459" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(552.541 60)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="98.033203">hasMoreChoices()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="53.361328">advance()</tspan></text><rect x="547.541" y="46" width="113.459" height="14" fill="white"/><rect x="547.541" y="46" width="113.459" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(552.541 46)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="3.0498125" y="11" textLength="97.359375">ChoiceGenerator</tspan></text><rect x="472" y="153" width="101" height="14" fill="white"/><rect x="472" y="153" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(477 153)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="86.70117">getNextChoice()</tspan></text><rect x="472" y="139" width="101" height="14" fill="white"/><rect x="472" y="139" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(477 139)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="52.03711">threadSet</tspan></text><rect x="472" y="125" width="101" height="14" fill="white"/><rect x="472" y="125" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(477 125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.496094" y="11" textLength="58.007812">ThreadCG</tspan></text><rect x="596" y="153" width="101" height="14" fill="white"/><rect x="596" y="153" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 153)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="86.70117">getNextChoice()</tspan></text><rect x="596" y="139" width="101" height="14" fill="white"/><rect x="596" y="139" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 139)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="54.046875">doubleSet</tspan></text><rect x="596" y="125" width="101" height="14" fill="white"/><rect x="596" y="125" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.167969" y="11" textLength="58.664062">DoubleCG</tspan></text><rect x="713.438" y="125" width="54" height="18" fill="white"/><rect x="713.438" y="125" width="54" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(718.438 127)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.999023" y="11" textLength="10.001953">...</tspan></text><rect x="495" y="190" width="54" height="18" fill="white"/><rect x="495" y="190" width="54" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(500 192)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.999023" y="11" textLength="10.001953">...</tspan></text><rect x="85.4035" y="207" width="118" height="42" fill="white"/><rect x="85.4035" y="207" width="118" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(90.4035 207)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="49.359375">executeT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="48.919922" y="11" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="105.38086">executeInstruction()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="87.35156">isFirstStepInsn()</tspan></text><rect x="85.4035" y="193" width="118" height="14" fill="white"/><rect x="85.4035" y="193" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(90.4035 193)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="64.04297">{pc, nextPc}</tspan></text><rect x="85.4035" y="179" width="118" height="14" fill="white"/><rect x="85.4035" y="179" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(90.4035 179)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="23.000977" y="11" textLength="61.998047">ThreadInfo</tspan></text><line x1="609.041" y1="112" x2="609.041" y2="101.5" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 521.57353 125 L 521 112 L 740.403 112 L 740.438 125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="646.4202" y1="125" x2="646.3708" y2="112" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="522" y1="190.257" x2="522" y2="179.757" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="366.5" y="327.5" width="90" height="18" fill="white"/><rect x="366.5" y="327.5" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(371.5 329.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.6699219" y="11" textLength="74.660156">MonitorEnter</tspan></text><rect x="553.5" y="327.5" width="68" height="18" fill="white"/><rect x="553.5" y="327.5" width="68" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(558.5 329.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="6.658203" y="11" textLength="44.683594">Invoke..</tspan></text><rect x="476.703" y="327.5" width="54" height="18" fill="white"/><rect x="476.703" y="327.5" width="54" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(481.703 329.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.999023" y="11" textLength="10.001953">...</tspan></text><line x1="503.5" y1="318.5" x2="503.5" y2="308" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 411.5 327.5 L 411.5 318.5 L 587.458 318.5 L 587.5 327.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="503.703" y1="327.5" x2="503.87076" y2="318.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="573.5" y="363.833" width="83" height="18" fill="white"/><rect x="573.5" y="363.833" width="83" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(578.5 365.833)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="4.1767578" y="11" textLength="64.646484">MethodInfo</tspan></text><rect x="591.5" y="399.833" width="83" height="18" fill="white"/><rect x="591.5" y="399.833" width="83" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(596.5 401.833)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="5.4804688" y="11" textLength="62.039062">NativePeer</tspan></text><text transform="translate(463.041 446)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="160.0957">e.g. JPF_gov_nasa_jpf_vm_V</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="159.43945" y="11" textLength="22.669922">erify</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="181.22461" y="11" textLength="91.39453">.getBoolean(env)</tspan></text><line x1="210" y1="469.665" x2="362" y2="469.665" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><text transform="translate(35 434.665)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="bold" fill="red" x="0" y="11" textLength="43.32422">top half</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="43.32422" y="11" textLength="81.38672">: executed on fi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="124.71094" y="11" textLength="70.69922">rst invocation</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="208.78125">optionally sets next CG and reexecutes</tspan></text><text transform="translate(35 475.665)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="bold" fill="red" x="0" y="11" textLength="65.320312">bottom half</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="65.320312" y="11" textLength="124.722656">: executed on revisit (or</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="187.42969">if no CG created because of policy)</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="39" textLength="165.43945">does semantic action based on</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="53" textLength="102.703125">current CGs choice</tspan></text><line x1="585" y1="131" x2="586" y2="246" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><text transform="translate(468 224)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="101.396484">scheduling choices</tspan></text><text transform="translate(601.5 224)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="127.41211">data acquisition choices</tspan></text><path d="M 700 163 L 747 163 L 747 546.1" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="406" y1="71" x2="537.641" y2="71" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 194 249 C 222 278.6667 258.6663 285.99975 307.333 289.333 C 352.12157 292.40069 408.50888 290.38684 448.14126 290.04641" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><circle cx="263.333" cy="171" r="8.000013" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(261.933 164)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">1</tspan></text><circle cx="314.667" cy="277.333" r="8.000013" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(313.267 270.333)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">2</tspan></text><circle cx="374.5" cy="207.333" r="8.000013" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(373.1 200.333)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">3</tspan></text><line x1="426.041" y1="531.45" x2="585" y2="531.45" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><text transform="translate(424.333 511.333)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="39.363281">top half</tspan></text><text transform="translate(423.667 536.333)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="36.685547">bottom</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="19.347656">half</tspan></text><text transform="translate(465 466.95)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="194.43164">if (!ti.isFirstStepInsn()){</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="158.42578">  cg = new BooleanCG()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="223.23633">  ss.setNextChoiceGenerator(cg)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="194.43164">  env.repeatInvocation() ..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="57.609375">} else {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="95" textLength="216.03516">  cg = ss.getChoiceGenerator()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="109" textLength="288.04688">  return ((BooleanCG)cg).getNextChoice()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="123" textLength="7.201172">}</tspan></text><text transform="translate(56 126.333)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="108.01758">breakTransition</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="108.01758" y="11" textLength="43.20703">(){...</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="165.62695">  return nextCg != null</tspan></text><path d="M 301.333 106 C 299.99966 155.3333 295.3337 164.6667 280.667 179 C 267.09314 192.2653 251.8064 204.10311 213.1948 210.54982" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 458.041 277.333 C 382.6786 281.99966 361.33353 214.0001 353 187.667 C 345.40257 163.6599 344.73164 148.240585 344.60825 115.9" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/></g></g></svg>
diff --git a/docs/graphics/cg-motivation.svg b/docs/graphics/cg-motivation.svg
new file mode 100644 (file)
index 0000000..e8c750c
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="36 72 668 428" width="668pt" height="428pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2010-02-22 05:27:10 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 0 M 0 3 L -8 0 L 0 -3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="12" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Lucida Grande" font-size="14" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><line x1="401.4" y1="354" x2="449.6" y2="354" marker-end="url(#StickArrow_Marker)" marker-start="url(#StickArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="425.5" y1="331" x2="425.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="440.5" y1="338" x2="440.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="410.5" y1="338" x2="410.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(412 316)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".38085938" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.5" y="12" textLength="9.919922"> ±</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="17.419922" y="12" textLength="12.199219"> Δ</tspan></text><circle cx="425.5" cy="354" r="3.0000048" fill="white"/><circle cx="425.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="440.5" cy="354" r="3.0000048" fill="white"/><circle cx="440.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="410.5" cy="354" r="3.0000048" fill="white"/><circle cx="410.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250.5215 365.55046)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="21.603516">.. </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="295.24805">double v = Verify.getDouble(&quot;velocity&quot;); </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="14.402344">..</tspan></text><text transform="translate(220.02 434.55)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="468.07617">velocity.class = gov.nasa.jpf.jvm.choice.DoubleThresholdGenerator</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="187.23047">velocity.threshold = 13250</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="144.02344">velocity.delta = 500</tspan></text><text transform="translate(132.175 372.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".020996094" y="13" textLength="93.95801">application code</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="14.13501" y="29" textLength="65.72998">(test driver)</tspan></text><text transform="translate(50 436)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="32.280518" y="13" textLength="27.459961">confi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="59.74048" y="13" textLength="50.59082">guration </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".49780273" y="29" textLength="123.55713">(e.g. mode property fi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="124.05493" y="29" textLength="14.447266">le)</tspan></text><path d="M 474.5 396 C 475.1666 401.49945 481.8328 409.25033 476.5 412.5 C 471.1672 415.74967 475.91332 414.91673 442.5 415.5 C 409.08668 416.08327 308.41342 414.83345 276 416 C 243.58658 417.16655 250.58307 418.91703 248 422.5 C 246.49657 424.5854 249.56637 427.63104 253.21663 430.79843" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(476.5 345.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".32714844" y="12" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.799805" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="36.473633" y="12" textLength="3.9960938">-</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="40.469727" y="12" textLength="68.203125">Δ, T, T+ Δ }</tspan></text><text transform="translate(77.73514 82.637407)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="136.822266">Verify.getBoolean()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="129.62109">Verify.getInt(0,4)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="180.0293">Verify.getDouble(1.0,1.5)</tspan></text><text transform="translate(267.733 84)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="82.376953">C = { true, false</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="82.376953" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(267.233 111)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="89.72461">C = { 0, 1, 2, 3, 4</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="89.72461" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(373.733 83.6349)" fill="red"><tspan font-family="Lucida Grande" font-size="14" font-weight="500" fill="red" x="0" y="14" textLength="10.698242">✓</tspan></text><text transform="translate(374.733 108.635)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x="0" y="14" textLength="8.551758">?</tspan></text><text transform="translate(404.733 111)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="279.48633">potentially large sets with lots of uninteresting values</tspan></text><text transform="translate(374.733 135.635)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x="0" y="14" textLength="17.103516">??</tspan></text><text transform="translate(404.733 138)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="22.68164">no fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="22.68164" y="11" textLength="166.08398">nite value set without heuristics</tspan></text><text transform="translate(267.233 138)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="13" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="29.683594" y="13" textLength="9.267578">∞</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="38.951172" y="13" textLength="7.6992188"> }</tspan></text><text transform="translate(214.675 327.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".3239746" y="13" textLength="144.35205">e.g. &quot;Threshold&quot; heuristic</tspan></text><path d="M 327 180.284 L 327 211.409 L 320 211.409 L 334 221.784 L 348 211.409 L 341 211.409 L 341 180.284 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202 247.12)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="63.86914" y="14" textLength="125.26172">Choice Generators</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="122.41211" y="31" textLength="8.1757812">+</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x=".09326172" y="48" textLength="35.765625">Confi</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="35.858887" y="48" textLength="217.04785">gurable Heuristic Choice Models</tspan></text><text transform="translate(411 238)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="169.42383">JPF internal object to store and </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="144.08203">enumerate a set of choices</tspan></text><text transform="translate(468 283)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="25.347656" y="11" textLength="96.720703">gurable classes to</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="182.09766">create ChoiceGenerator instances</tspan></text><rect x="107" y="225.12" width="140" height="43" fill="white"/><rect x="107" y="225.12" width="140" height="43" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 225.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="98.033203">hasMoreChoices()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="53.361328">advance()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="40" textLength="90.035156">getNextChoice() </tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="90.035156" y="40" textLength="12">→</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="102.035156" y="40" textLength="9.3339844"> x</tspan></text><rect x="107" y="211.12" width="140" height="14" fill="white"/><rect x="107" y="211.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 211.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="73.382812">choiceSet: {x}</tspan></text><rect x="107" y="197.12" width="140" height="14" fill="white"/><rect x="107" y="197.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 197.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.9833984" y="11" textLength="104.033203">xChoiceGenerator</tspan></text></g></g></svg>
diff --git a/docs/graphics/cg-ontology.svg b/docs/graphics/cg-ontology.svg
new file mode 100644 (file)
index 0000000..fab55e3
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="131 133 625 388" width="625pt" height="388pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2010-02-22 02:58:46 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".48301078"/><feOffset in="blur" result="offset" dx="1" dy="1"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Courier" font-size="13" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id139_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id140_Graphic" filter="url(#Shadow)"/></g><path d="M 284.70481 177.8364 L 284.70481 177.8364 C 294.09105 185.10919 295.80434 198.61399 288.53156 208.00022 C 288.53156 208.00022 288.53156 208.00022 288.53156 208.00022 L 231.091 282.13285 C 223.81822 291.51909 210.31342 293.23238 200.92719 285.9596 L 200.92719 285.9596 C 191.54095 278.68681 189.82766 265.18201 197.10044 255.79578 L 254.541 181.66315 C 261.81378 172.27691 275.31858 170.56362 284.70481 177.8364 C 284.70481 177.8364 284.70481 177.8364 284.70481 177.8364 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 284.70481 177.8364 L 284.70481 177.8364 C 294.09105 185.10919 295.80434 198.61399 288.53156 208.00022 C 288.53156 208.00022 288.53156 208.00022 288.53156 208.00022 L 231.091 282.13285 C 223.81822 291.51909 210.31342 293.23238 200.92719 285.9596 L 200.92719 285.9596 C 191.54095 278.68681 189.82766 265.18201 197.10044 255.79578 L 254.541 181.66315 C 261.81378 172.27691 275.31858 170.56362 284.70481 177.8364 C 284.70481 177.8364 284.70481 177.8364 284.70481 177.8364 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id139_Graphic"><circle cx="269.28125" cy="195.78125" r="18.281279" fill="white"/><circle cx="269.28125" cy="195.78125" r="18.281279" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id140_Graphic"><circle cx="215.5" cy="267.5" r="15.500025" fill="white"/><circle cx="215.5" cy="267.5" r="15.500025" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="258.01217" y1="210.80888" x2="225.10027" y2="254.69777" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(145.432 221)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".19897461" y="13" textLength="7.940918">T</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="7.6638184" y="13" textLength="49.137207">ransition</tspan></text><rect x="231" y="217" width="75" height="11" fill="blue" fill-opacity=".14"/><rect x="231" y="217" width="75" height="11" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(253.562 187)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".3227539" y="13" textLength="30.354492">State</tspan></text><text transform="translate(312.5 213)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".21044922" y="14" textLength="43.579102">Choice</tspan></text><line x1="267" y1="144" x2="268.45463" y2="177.01808" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 205.51021 279.9999 L 183.932 307 L 183.932 307 L 183.932 307" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="224.25289" y1="280.89727" x2="240" y2="305" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="276.61163" y1="213.07815" x2="294.378" y2="255" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(360.562 248)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="116.74414">Scheduling Choice</tspan></text><text transform="translate(360.562 343)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="77.041016">Data Choice</tspan></text><text transform="translate(405.562 361)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="13" textLength="249.64062">boolean b = Verify.getBoolean();</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="29" textLength="335.45459">double d = Verify.getDouble(&quot;MyHeuristic&quot;);</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="45" textLength="15.602539">..</tspan></text><text transform="translate(405.562 268)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="13" textLength="171.62793">synchronized (..) {..}</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="29" textLength="70.211426">wait (..)</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="45" textLength="140.42285">x = mySharedObject</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="61" textLength="15.602539">..</tspan></text><text transform="translate(360.562 424)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="92.59961">Control Choice</tspan></text><text transform="translate(405.562 448)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="13" textLength="109.217773">if (&lt;cond&gt;) ..</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="29" textLength="210.63428">INVOKECG.setInvocations(..)</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="45" textLength="15.602539">..</tspan></text><path d="M 332.571 233.32 L 332.571 433.328 L 355.562 433.328" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="333.347" y1="256.576" x2="355.562" y2="256.576" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="332.571" y1="351.929" x2="354.787" y2="351.929" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/cg-sequence.svg b/docs/graphics/cg-sequence.svg
new file mode 100644 (file)
index 0000000..5e0ff92
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="133 132 503 243" width="503pt" height="243pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2006-05-05 17:02:45 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".48301078"/><feOffset in="blur" result="offset" dx="1" dy="1"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="black"><g><path d="M 5.6000004 0 L 0 -2.1000001 L 0 2.1000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id4_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id5_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id22_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id7_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id17_Graphic" filter="url(#Shadow)"/></g><path d="M 237.89106 230.97335 L 237.89106 230.97335 C 243.97415 235.39297 245.32265 243.9071 240.90303 249.99018 C 240.90303 249.99018 240.90303 249.99018 240.90303 249.99018 L 213.52887 287.66748 C 209.10925 293.75057 200.59513 295.09907 194.51204 290.67945 L 194.51204 290.67945 C 188.42895 286.25983 187.08045 277.7457 191.50007 271.66262 L 218.87423 233.98532 C 223.29385 227.90223 231.80797 226.55373 237.89106 230.97335 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 237.89106 230.97335 L 237.89106 230.97335 C 243.97415 235.39297 245.32265 243.9071 240.90303 249.99018 C 240.90303 249.99018 240.90303 249.99018 240.90303 249.99018 L 213.52887 287.66748 C 209.10925 293.75057 200.59513 295.09907 194.51204 290.67945 L 194.51204 290.67945 C 188.42895 286.25983 187.08045 277.7457 191.50007 271.66262 L 218.87423 233.98532 C 223.29385 227.90223 231.80797 226.55373 237.89106 230.97335 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 197.99853 196.87463 L 197.99853 196.87463 C 203.38779 192.9742 210.91857 194.18114 214.819 199.5704 C 214.819 199.5704 214.819 199.5704 214.819 199.5704 L 240.80254 235.4721 C 244.70297 240.86136 243.49603 248.39214 238.10677 252.29257 L 238.10677 252.29257 C 232.71751 256.193 225.18673 254.98606 221.2863 249.5968 C 221.2863 249.5968 221.2863 249.5968 221.2863 249.5968 L 195.30276 213.6951 C 191.40233 208.30584 192.60927 200.77506 197.99853 196.87463 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 197.99853 196.87463 L 197.99853 196.87463 C 203.38779 192.9742 210.91857 194.18114 214.819 199.5704 C 214.819 199.5704 214.819 199.5704 214.819 199.5704 L 240.80254 235.4721 C 244.70297 240.86136 243.49603 248.39214 238.10677 252.29257 L 238.10677 252.29257 C 232.71751 256.193 225.18673 254.98606 221.2863 249.5968 C 221.2863 249.5968 221.2863 249.5968 221.2863 249.5968 L 195.30276 213.6951 C 191.40233 208.30584 192.60927 200.77506 197.99853 196.87463 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id4_Graphic"><circle cx="205.5" cy="207.5" r="10.500017" fill="white"/><circle cx="205.5" cy="207.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id5_Graphic"><circle cx="176.5" cy="241.5" r="10.500017" fill="white"/><circle cx="176.5" cy="241.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id22_Graphic"><circle cx="156.5" cy="280.5" r="10.500017" fill="white"/><circle cx="156.5" cy="280.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id7_Graphic"><circle cx="229.5" cy="240.5" r="10.500017" fill="white"/><circle cx="229.5" cy="240.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="198.36125" y1="215.86957" x2="183.63874" y2="233.13042" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="211.97076" y1="216.39733" x2="223.02918" y2="231.60271" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="171.47923" y1="251.2905" x2="161.52077" y2="270.7095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id17_Graphic"><circle cx="201.5" cy="280.5" r="10.500017" fill="white"/><circle cx="201.5" cy="280.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="182.43751" y1="250.76253" x2="195.56247" y2="271.23748" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="223.19091" y1="249.51298" x2="207.80908" y2="271.48702" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="233.83421" y1="250.61316" x2="246" y2="279" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(255 275)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><line x1="197.32751" y1="290.68088" x2="189" y2="311" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="237.95824" y1="247.5337" x2="277" y2="280" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.49625" y1="290.75125" x2="213" y2="310" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(195 307)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(330 250)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="29.355469">get_fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.355469" y="11" textLength="16.013672">eld</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="74.039062">monitor_enter</tspan></text><text transform="translate(330 197)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="10.001953">...</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="29.355469">get_fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.355469" y="25" textLength="16.013672">eld</tspan></text><text transform="translate(330 316)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="74.039062">monitor_enter</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><path d="M 312 246 L 397 246 C 404.73199 246 411 252.26801 411 260 L 411 282 C 411 289.73199 404.73199 296 397 296 L 312 296 C 304.26801 296 298 289.73199 298 282 L 298 260 C 298 252.26801 304.26801 246 312 246 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 312 246 L 397 246 C 404.73199 246 411 252.26801 411 260 L 411 282 C 411 289.73199 404.73199 296 397 296 L 312 296 C 304.26801 296 298 289.73199 298 282 L 298 260 C 298 252.26801 304.26801 246 312 246 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 312 179 L 397 179 C 404.73199 179 411 185.26801 411 193 L 411 215 C 411 222.73199 404.73199 229 397 229 L 312 229 C 304.26801 229 298 222.73199 298 215 L 298 193 C 298 185.26801 304.26801 179 312 179 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 312 179 L 397 179 C 404.73199 179 411 185.26801 411 193 L 411 215 C 411 222.73199 404.73199 229 397 229 L 312 229 C 304.26801 229 298 222.73199 298 215 L 298 193 C 298 185.26801 304.26801 179 312 179 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 312 314 L 397 314 C 404.73199 314 411 320.26801 411 328 L 411 350 C 411 357.73199 404.73199 364 397 364 L 312 364 C 304.26801 364 298 357.73199 298 350 L 298 328 C 298 320.26801 304.26801 314 312 314 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 312 314 L 397 314 C 404.73199 314 411 320.26801 411 328 L 411 350 C 411 357.73199 404.73199 364 397 364 L 312 364 C 304.26801 364 298 357.73199 298 350 L 298 328 C 298 320.26801 304.26801 314 312 314 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(460.266 141)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="106.61328">ChoiceGenerator</tspan></text><path d="M 386 218 L 456 218 L 456 224.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 456 246 L 456 255 L 387.7 255" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(301 193.5)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".2241211" y="14" textLength="8.551758">T</tspan></text><text transform="translate(310 201.5)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".27807617" y="10" textLength="2.4438477">j</tspan></text><text transform="translate(301 259.178)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".2241211" y="14" textLength="8.551758">T</tspan></text><text transform="translate(309 267.178)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="14.985352">j+1</tspan></text><text transform="translate(300 327.178)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".2241211" y="14" textLength="8.551758">T</tspan></text><text transform="translate(308 335.178)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="14.985352">j+2</tspan></text><path d="M 406 287 L 455 287 L 455 293.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 455 315 L 455 324 L 412.7 324" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(452 228)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="21">CG</tspan></text><text transform="translate(475.15 236)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="5.5">k</tspan></text><text transform="translate(452 297)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="21">CG</tspan></text><text transform="translate(475.15 305)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="2.4438477">l</tspan></text><text transform="translate(431 200)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="58.68164">setNextCG</tspan></text><text transform="translate(431 256)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="78.708984">getNextChoice</tspan></text><text transform="translate(323.5 141)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="8.551758">T</tspan><tspan font-family="Helvetica" font-size="14" font-weight="500" x="8.0390625" y="14" textLength="52.916992">ransition</tspan></text><text transform="translate(198.707 241.273)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(203.818 238.508)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">1</tspan></text><text transform="translate(205.471 248.397)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(225.2 255.48)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(231.407 251.619)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">2</tspan></text><text transform="translate(231.69 262.33)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(248.814 242.537)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(255.295 238.95)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">3</tspan></text><text transform="translate(255.578 249.661)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(223.631 231.98)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49804688" y="11" textLength="8.0039062">S</tspan></text><text transform="translate(231.712 236.938)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(513.826 231.676)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(518.798 228.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">1</tspan></text><text transform="translate(520.589 238.389)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(529.688 231.676)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(535.248 228.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">2</tspan></text><text transform="translate(536.451 238.389)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(506.378 228.326)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">{</tspan></text><text transform="translate(506.378 296.609)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">{</tspan></text><text transform="translate(559.536 228.326)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">}</tspan></text><text transform="translate(544.246 296.609)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">}</tspan></text><text transform="translate(526.246 232.672)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".33300781" y="11" textLength="3.3339844">,</tspan></text><text transform="translate(495.88 228.328)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".20410156" y="13" textLength="7.591797">=</tspan></text><text transform="translate(495.882 296.807)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".20410156" y="13" textLength="7.591797">=</tspan></text><text transform="translate(181.122 141)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="32.689453">State</tspan></text><path d="M 595.073 343 L 595.073 238.537 L 583.773 238.537" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(569.537 344.5)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="51.351562">backtrack</tspan></text><text transform="translate(570.537 218.5)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="45.36914">advance</tspan></text><text transform="translate(546.227 231.545)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(551.787 228.369)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">2</tspan></text><text transform="translate(552.99 238.258)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(542.785 232.541)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".33300781" y="11" textLength="3.3339844">,</tspan></text><text transform="translate(513.076 299.926)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(518.048 296.75)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">1</tspan></text><text transform="translate(519.839 306.639)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="1.9995117">l</tspan></text><text transform="translate(527.938 299.926)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(525.496 300.922)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".33300781" y="11" textLength="3.3339844">,</tspan></text><text transform="translate(417.5 185.5)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="42.029297">execute</tspan></text><text transform="translate(340.5 159)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="63.375">{Instruction}</tspan></text><text transform="translate(195.631 272.98)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49804688" y="11" textLength="8.0039062">S</tspan></text><text transform="translate(204.712 277.938)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="1.9995117">l</tspan></text></g></g></svg>
diff --git a/docs/graphics/choicegen-example.svg b/docs/graphics/choicegen-example.svg
new file mode 100644 (file)
index 0000000..675ec8d
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="36 72 663 436" width="663pt" height="436pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2006-05-03 17:51:17 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 0 M 0 3 L -8 0 L 0 -3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="12" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Lucida Grande" font-size="14" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><line x1="401.4" y1="354" x2="449.6" y2="354" marker-end="url(#StickArrow_Marker)" marker-start="url(#StickArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="425.5" y1="331" x2="425.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="440.5" y1="338" x2="440.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="410.5" y1="338" x2="410.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(412 316)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".38085938" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.5" y="12" textLength="9.919922"> ±</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="17.419922" y="12" textLength="12.199219"> Δ</tspan></text><circle cx="425.5" cy="354" r="3.0000048" fill="white"/><circle cx="425.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="440.5" cy="354" r="3.0000048" fill="white"/><circle cx="440.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="410.5" cy="354" r="3.0000048" fill="white"/><circle cx="410.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250.5215 365.55046)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="21.603516">.. </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="295.24805">double v = Verify.getDouble(&quot;velocity&quot;); </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="14.402344">..</tspan></text><text transform="translate(220.01942 434.54995)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="230.4375">velocity.class = DoubleThreshold</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="187.23047">velocity.threshold = 13250</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="144.02344">velocity.delta = 500</tspan></text><text transform="translate(132.175 372.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".020996094" y="13" textLength="93.95801">application code</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="14.13501" y="29" textLength="65.72998">(test driver)</tspan></text><text transform="translate(50 436)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="32.280518" y="13" textLength="27.459961">confi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="59.74048" y="13" textLength="50.59082">guration </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".49780273" y="29" textLength="123.55713">(e.g. mode property fi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="124.05493" y="29" textLength="14.447266">le)</tspan></text><path d="M 474.5 396 C 475.1666 401.49945 481.8328 409.25033 476.5 412.5 C 471.1672 415.74967 475.91332 414.91673 442.5 415.5 C 409.08668 416.08327 308.41342 414.83345 276 416 C 243.58658 417.16655 250.58307 418.91703 248 422.5 C 246.49657 424.5854 249.56637 427.63104 253.21663 430.79843" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(476.5 345.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".32714844" y="12" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.799805" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="36.473633" y="12" textLength="3.9960938">-</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="40.469727" y="12" textLength="68.203125">Δ, T, T+ Δ }</tspan></text><text transform="translate(77.73514 82.637407)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="136.822266">Verify.getBoolean()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="129.62109">Verify.getInt(0,4)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="180.0293">Verify.getDouble(1.0,1.5)</tspan></text><text transform="translate(267.733 84)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="82.376953">C = { true, false</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="82.376953" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(267.233 111)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="89.72461">C = { 0, 1, 2, 3, 4</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="89.72461" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(373.733 83.6349)" fill="black"><tspan font-family="Lucida Grande" font-size="14" font-weight="500" x="0" y="14" textLength="10.698242">✓</tspan></text><text transform="translate(374.733 108.635)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="0" y="14" textLength="8.551758">?</tspan></text><text transform="translate(404.733 111)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="279.48633">potentially large sets with lots of uninteresting values</tspan></text><text transform="translate(374.733 135.635)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="0" y="14" textLength="17.103516">??</tspan></text><text transform="translate(404.733 138)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="22.68164">no fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="22.68164" y="11" textLength="166.08398">nite value set without heuristics</tspan></text><text transform="translate(267.233 138)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="13" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="29.683594" y="13" textLength="9.267578">∞</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="38.951172" y="13" textLength="7.6992188"> }</tspan></text><text transform="translate(200.175 327.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".0021972656" y="13" textLength="173.99561">e.g. &quot;DoubleThresholdChoice&quot;</tspan></text><path d="M 327 180.284 L 327 211.409 L 320 211.409 L 334 221.784 L 348 211.409 L 341 211.409 L 341 180.284 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202 247.12)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="63.86914" y="14" textLength="125.26172">Choice Generators</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="122.41211" y="31" textLength="8.1757812">+</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x=".09326172" y="48" textLength="35.765625">Confi</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="35.858887" y="48" textLength="217.04785">gurable Heuristic Choice Models</tspan></text><text transform="translate(411 238)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="169.42383">JPF internal object to store and </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="144.08203">enumerate a set of choices</tspan></text><text transform="translate(468 283)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="25.347656" y="11" textLength="96.720703">gurable classes to</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="182.09766">create ChoiceGenerator instances</tspan></text><rect x="107" y="225.12" width="140" height="43" fill="white"/><rect x="107" y="225.12" width="140" height="43" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 225.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="98.033203">hasMoreChoices()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="53.361328">advance()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="40" textLength="90.035156">getNextChoice() </tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="90.035156" y="40" textLength="12">→</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="102.035156" y="40" textLength="9.3339844"> x</tspan></text><rect x="107" y="211.12" width="140" height="14" fill="white"/><rect x="107" y="211.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 211.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="73.382812">choiceSet: {x}</tspan></text><rect x="107" y="197.12" width="140" height="14" fill="white"/><rect x="107" y="197.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 197.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.9833984" y="11" textLength="104.033203">xChoiceGenerator</tspan></text></g></g></svg>
diff --git a/docs/graphics/genpeer.svg b/docs/graphics/genpeer.svg
new file mode 100644 (file)
index 0000000..6887428
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="65 35 468 408" width="39pc" height="34pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-04 01:29:55 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576" height="734"/><g><title>Layer 1</title><g><xl:use xl:href="#id1_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id6_Graphic" filter="url(#Shadow)"/></g><g id="id1_Graphic"><path d="M 266.75 164 L 266.75 231.5 L 262 231.5 L 271.5 254 L 281 231.5 L 276.25 231.5 L 276.25 164 Z" fill="white"/><path d="M 266.75 164 L 266.75 231.5 L 262 231.5 L 271.5 254 L 281 231.5 L 276.25 231.5 L 276.25 164 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id6_Graphic"><ellipse cx="271.5" cy="202.5" rx="46.500074" ry="19.500031" fill="white"/><ellipse cx="271.5" cy="202.5" rx="46.500074" ry="19.500031" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(239.3 194)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="4.1829102" y="14" textLength="56.03418">GenPeer</tspan></text></g><text transform="translate(133 44.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="100.816406">package x.y.z;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="108.01758">class MyClass {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="36.00586">  ...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="273.64453">  native String foo (int i, String s);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="7.201172">}</tspan></text><text transform="translate(79 257.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="180.0293">class JPF_x_y_z_MyClass {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="36.00586">  ...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="43.20703">  @MJI</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="108.01758">  public static</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="439.27148">      int foo__ILjava_lang_String__2 (MJIEnv env, int objRef,</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="92" textLength="403.26562">                                      int i, int sRef) {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="108" textLength="187.23047">    int ref = MJIEnv.NULL;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="124" textLength="180.0293">    // &lt;2do&gt; fill in body</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="140" textLength="108.01758">    return ref;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="156" textLength="21.603516">  }</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="172" textLength="7.201172">}</tspan></text><text transform="translate(93.5 147.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x=".21777344" y="11" textLength="48.955078">&quot;java gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="48.288086" y="11" textLength="115.39453">.nasa.jpf.GenPeer x.y</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="162.79785" y="11" textLength="213.98438">.z.MyClass &gt; JPF_x_y_z_MyClass.java&quot;</tspan></text></g></g></svg>
diff --git a/docs/graphics/interleavings.svg b/docs/graphics/interleavings.svg
new file mode 100644 (file)
index 0000000..4dfa19e
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="7 283 477 166" width="477pt" height="166pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-19 20:18:08 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Hoefler Text" font-size="14" panose-1="2 3 6 2 5 5 6 2 2 3" units-per-em="1000" underline-position="0" underline-thickness="67.471858" slope="0" x-height="425" cap-height="689.5" ascent="720.99304" descent="-279.00696" font-weight="500"><font-face-src><font-face-name name="HoeflerText-Regular"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="8" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="116" y="335.875" width="9" height="17" fill="#ceccff"/><rect x="116" y="335.875" width="9" height="17" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="116" y="355.875" width="9" height="21.5" fill="#ceccff"/><rect x="116" y="355.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="116" y="388.375" width="9" height="33" fill="#ceccff"/><rect x="116" y="388.375" width="9" height="33" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="148.5" y="335.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="148.5" y="335.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="148.5" y="360.375" width="9" height="21.5" fill="#ffd1d7"/><rect x="148.5" y="360.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="148.5" y="393.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="148.5" y="393.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="184" y="336.375" width="9" height="26.5" fill="#d6ffc8"/><rect x="184" y="336.375" width="9" height="26.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="184" y="365.875" width="9" height="14" fill="#d6ffc8"/><rect x="184" y="365.875" width="9" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="184" y="394.375" width="9" height="21.5" fill="#d6ffc8"/><rect x="184" y="394.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(183.5 376)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(148 376.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(115.5 372.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(101 337)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">1</tspan></text><text transform="translate(100.5 361)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">2</tspan></text><text transform="translate(115.5 309.5)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".33105469" y="14" textLength="9.3378906">P</tspan></text><text transform="translate(119.5 318)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">1</tspan></text><text transform="translate(148.5 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".33105469" y="14" textLength="9.3378906">P</tspan></text><text transform="translate(152.5 318.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">2</tspan></text><text transform="translate(183.5 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".33105469" y="14" textLength="9.3378906">P</tspan></text><text transform="translate(187.5 318.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".75024414" y="9" textLength="6.4995117">N</tspan></text><text transform="translate(101.5 394.375)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".4411621" y="10" textLength="6.1176758">n</tspan></text><text transform="translate(106.5 400.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">1</tspan></text><text transform="translate(135.5 397.375)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".4411621" y="10" textLength="6.1176758">n</tspan></text><text transform="translate(140.5 403.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">2</tspan></text><rect x="254" y="355.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="254" y="355.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="254" y="380.375" width="9" height="26.5" fill="#d6ffc8"/><rect x="254" y="380.375" width="9" height="26.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(253.5 402)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(21.5 367.375)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="14.499" y="13" textLength="10.276">A</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="24.075" y="13" textLength="5.166">t</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="29.031" y="13" textLength="29.47">omic</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x=".121" y="30" textLength="6.188">I</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="5.735" y="30" textLength="23.394">nstr</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="29.479" y="30" textLength="43.4">uctions</tspan></text><text transform="translate(128 292.5)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x=".175" y="13" textLength="48.65">Threads</tspan></text><rect x="254.5" y="416.375" width="9" height="21.5" fill="#d6ffc8"/><rect x="254.5" y="416.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(240 339.5)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">1</tspan></text><text transform="translate(239.5 359)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">2</tspan></text><text transform="translate(257 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".05517578" y="14" textLength="3.8896484">I</tspan></text><text transform="translate(260 317.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">1</tspan></text><text transform="translate(230.5 418.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".38574219" y="11" textLength="15.228516">∑n</tspan></text><text transform="translate(244.5 426.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.0002441" y="9" textLength="1.9995117">i</tspan></text><text transform="translate(296.5 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".05517578" y="14" textLength="3.8896484">I</tspan></text><text transform="translate(299.5 317.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".25146484" y="9" textLength="7.4970703">M</tspan></text><text transform="translate(276.5 310.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(166.5 310.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(170.5 397.375)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".4411621" y="10" textLength="6.1176758">n</tspan></text><text transform="translate(175.5 403.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".75024414" y="9" textLength="6.4995117">N</tspan></text><rect x="297.5" y="336.375" width="9" height="26.5" fill="#d6ffc8"/><rect x="297.5" y="336.375" width="9" height="26.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="297.5" y="365.375" width="9" height="17" fill="#ceccff"/><rect x="297.5" y="365.375" width="9" height="17" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="254" y="335.875" width="9" height="17" fill="#ceccff"/><rect x="254" y="335.875" width="9" height="17" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="297.5" y="384.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="297.5" y="384.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(297 402)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><rect x="298" y="416.375" width="9" height="21.5" fill="#ffd1d7"/><rect x="298" y="416.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(276.5 364.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(166.5 355.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(239.5 292.5)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x=".224" y="13" textLength="6.188">I</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="5.838" y="13" textLength="12.838">nt</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="18.466" y="13" textLength="28.182">erlea</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="46.858" y="13" textLength="29.918">vings</tspan></text><path d="M 210.5 369.125 L 224 369.125 L 224 366.375 L 228.5 371.875 L 224 377.375 L 224 374.625 L 210.5 374.625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(394 355.375)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="0" y="13" textLength="46.102">(∑    n )!</tspan></text><text transform="translate(397 382.375)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="0" y="13" textLength="44.674">∏   (n !)</tspan></text><text transform="translate(408 351.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="1.1113281" y="8" textLength="5.7773438">N</tspan></text><text transform="translate(406 365.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.0507812" y="8" textLength="10.8984375">i=1</tspan></text><text transform="translate(426 365.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.1113281" y="8" textLength="1.7773438">i</tspan></text><text transform="translate(408 379.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="1.1113281" y="8" textLength="5.7773438">N</tspan></text><text transform="translate(406 392.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.0507812" y="8" textLength="10.8984375">i=1</tspan></text><text transform="translate(428 392.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.1113281" y="8" textLength="1.7773438">i</tspan></text><line x1="380.5" y1="378.375" x2="457" y2="378.375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(345 368.5)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="8.394" y="13" textLength="26.712">M = </tspan></text><rect x="342.5" y="346.375" width="130" height="61.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/jpf-abstractions.svg b/docs/graphics/jpf-abstractions.svg
new file mode 100644 (file)
index 0000000..b636c6f
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="5 32 709 537" width="709pt" height="537pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-26 21:24:31 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker_2" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="gray"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Monaco" font-size="10" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="blue"><g><path d="M 6.3999996 0 L 0 0 M 0 -2.3999999 L 6.3999996 0 L 0 2.3999999" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Ball_Marker" viewBox="-6 -4 7 8" markerWidth="7" markerHeight="8" color="blue"><g><circle cx="-2.3999988" cy="0" r="2.3999977" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="67.3713" y="354" width="232.664" height="103.055" fill="#dee4ff"/><rect x="67.3713" y="354" width="232.664" height="103.055" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="251.917" y="60.5674" width="137.5" height="101.779" fill="#fff9ab"/><rect x="251.917" y="60.5674" width="137.5" height="101.779" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="45" y="191.359" width="261" height="127.641" fill="#aebcff"/><rect x="45" y="191.359" width="261" height="127.641" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="336" y="193" width="367" height="236.266" fill="#a7ffb4"/><rect x="336" y="193" width="367" height="236.266" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="126.92008" y="233.5" width="105.75" height="14" fill="white"/><rect x="126.92008" y="233.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(131.92008 233.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="126.92008" y="219.5" width="105.75" height="14" fill="white"/><rect x="126.92008" y="219.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(131.92008 219.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="37.330078">VM vm</tspan></text></g><g filter="url(#Shadow)"><rect x="126.92008" y="205.5" width="105.75" height="14" fill="white"/><rect x="126.92008" y="205.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(131.92008 205.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x="27.862305" y="11" textLength="40.02539">Search</tspan></text></g><line x1="179.49" y1="268.089" x2="179.59506" y2="260.99852" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="353.25" y="219.5" width="105.75" height="42" fill="white"/><rect x="353.25" y="219.5" width="105.75" height="42" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(358.25 219.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="51.339844">forward ()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="25" textLength="62.677734">backtrack ()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="39" textLength="76.69336">restoreState ()</tspan></text></g><g filter="url(#Shadow)"><rect x="353.25" y="205.5" width="105.75" height="14" fill="white"/><rect x="353.25" y="205.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(358.25 205.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x="38.875" y="11" textLength="18">VM</tspan></text></g><g filter="url(#Shadow)"><rect x="60.625" y="289" width="105.75" height="14" fill="white"/><rect x="60.625" y="289" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(65.625 289)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="60.625" y="275" width="105.75" height="14" fill="white"/><rect x="60.625" y="275" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(65.625 275)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.864258" y="11" textLength="56.021484">DFSearch</tspan></text></g><g filter="url(#Shadow)"><rect x="263.917" y="105.328" width="114" height="14" fill="white"/><rect x="263.917" y="105.328" width="114" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(268.917 105.328)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="28.669922">run ()</tspan></text></g><g filter="url(#Shadow)"><rect x="263.917" y="91.3279" width="114" height="14" fill="white"/><rect x="263.917" y="91.3279" width="114" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(268.917 91.3279)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="90.697266">search, vm, confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="90.697266" y="11" textLength="6.673828">g</tspan></text></g><g filter="url(#Shadow)"><rect x="263.917" y="77.3279" width="114" height="14" fill="white"/><rect x="263.917" y="77.3279" width="114" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(268.917 77.3279)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x="40.996094" y="11" textLength="22.007812">JPF</tspan></text></g><path d="M 263.917 113.349 L 31.6528 111.887 L 31 284 L 43.1 284" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 377.917 111.887 L 483.589 111.925 L 483.312 205.5 L 468.9 205.5" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="232.67008" y1="226.5" x2="343.35009" y2="226.04105" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="371.194" y="340.3" width="122" height="28" fill="white"/><rect x="371.194" y="340.3" width="122" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(376.194 340.3)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="49.359375">executeT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="48.919922" y="11" textLength="56.683594">ransition ()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="25" textLength="108.714844">executeInstruction ()</tspan></text></g><g filter="url(#Shadow)"><rect x="371.194" y="326.3" width="122" height="14" fill="white"/><rect x="371.194" y="326.3" width="122" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(376.194 326.3)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="25.000977" y="11" textLength="61.998047">ThreadInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="341.325" y="292.463" width="145" height="28" fill="white"/><rect x="341.325" y="292.463" width="145" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(346.325 292.463)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="74.689453">initializeNextT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="74.25" y="11" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="25" textLength="74.033203">executeNextT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="73.59375" y="25" textLength="53.34961">ransition()</tspan></text></g><g filter="url(#Shadow)"><rect x="341.325" y="278.463" width="145" height="14" fill="white"/><rect x="341.325" y="278.463" width="145" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(346.325 278.463)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="31.482422" y="11" textLength="72.035156">SystemState</tspan></text></g><g filter="url(#Shadow)"><rect x="591.25" y="232.411" width="82.375" height="20.589" fill="white"/><rect x="591.25" y="232.411" width="82.375" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(596.25 235.7055)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.1816406" y="11" textLength="54.01172">ClassInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="605.438" y="258.411" width="82.375" height="20.589" fill="white"/><rect x="605.438" y="258.411" width="82.375" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(610.438 261.7055)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="3.8642578" y="11" textLength="64.646484">MethodInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="606.25" y="284.411" width="82.375" height="20.589" fill="white"/><rect x="606.25" y="284.411" width="82.375" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(611.25 287.7055)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.191406" y="11" textLength="49.992188">FieldInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="500.625" y="279.161" width="82.375" height="20.589" fill="white"/><rect x="500.625" y="279.161" width="82.375" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(505.625 282.4555)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="1.8515625" y="11" textLength="68.671875">ElementInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="515.594" y="305.161" width="67.0625" height="20.589" fill="white"/><rect x="515.594" y="305.161" width="67.0625" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(520.594 308.4555)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="11.1933594" y="11" textLength="34.675781">Fields</tspan></text></g><g filter="url(#Shadow)"><rect x="515.938" y="330.161" width="67.0625" height="20.589" fill="white"/><rect x="515.938" y="330.161" width="67.0625" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(520.938 333.4555)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="6.538086" y="11" textLength="43.986328">Monitor</tspan></text></g><g filter="url(#Shadow)"><rect x="485.938" y="251.456" width="82.375" height="20.589" fill="white"/><rect x="485.938" y="251.456" width="82.375" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(490.938 254.7505)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="16.511719" y="11" textLength="39.351562">Statics</tspan></text></g><text transform="translate(374.731 408.79)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".12988281" y="11" textLength="106.740234">bytecode  execution</tspan></text><text transform="translate(611.5 312.411)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".31054688" y="11" textLength="62.378906">type + code</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="18.161133" y="25" textLength="26.677734">mgnt</tspan></text><text transform="translate(536.5 357.572)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".4892578" y="11" textLength="32.021484">object</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".158203125" y="25" textLength="32.683594">model</tspan></text><rect x="251.917" y="43.7905" width="78" height="17.1216" fill="#fff9ab"/><rect x="251.917" y="43.7905" width="78" height="17.1216" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.917 45.3513)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.0869141" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.549805" y="11" textLength="45.36328">.nasa.jpf</tspan></text><rect x="45" y="173" width="114" height="18" fill="#aebcff"/><rect x="45" y="173" width="114" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(50 175)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".41113281" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="18.874023" y="11" textLength="84.714844">.nasa.jpf.search</tspan></text><g filter="url(#Shadow)"><rect x="183.625" y="377.236" width="105.75" height="14" fill="white"/><rect x="183.625" y="377.236" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.625 377.236)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="183.625" y="363.236" width="105.75" height="14" fill="white"/><rect x="183.625" y="363.236" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.625 363.236)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.1865234" y="11" textLength="91.376953">HeuristicSearch</tspan></text></g><path d="M 113.5 275 L 113.5 268 L 236.5 268 L 236.5 356.236 L 236.5 363.236" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="336" y="175" width="97.375" height="18" fill="#a7ffb4"/><rect x="336" y="175" width="97.375" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(341 177)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.109375" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.572266" y="11" textLength="64.69336">.nasa.jpf.vm</tspan></text><rect x="67.3713" y="336" width="162" height="18" fill="#dee4ff"/><rect x="67.3713" y="336" width="162" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(72.3713 338)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".40234375" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="18.865234" y="11" textLength="132.73242">.nasa.jpf.search.heuristic</tspan></text><line x1="236.275" y1="419.43" x2="236.39227" y2="404.73557" marker-end="url(#UMLInheritance_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="396" y="467.057" width="166.625" height="90" fill="#deffe8"/><rect x="396" y="467.057" width="166.625" height="90" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="396" y="449.057" width="162" height="18" fill="#deffe8"/><rect x="396" y="449.057" width="162" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(401 451.057)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="8.4033203" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="26.866211" y="11" textLength="116.73047">.nasa.jpf.vm.bytecode</tspan></text><g filter="url(#Shadow)"><rect x="416.125" y="485.057" width="122" height="14" fill="white"/><rect x="416.125" y="485.057" width="122" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(421.125 485.057)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="53.35547">execute ()</tspan></text></g><g filter="url(#Shadow)"><rect x="416.125" y="471.057" width="122" height="14" fill="white"/><rect x="416.125" y="471.057" width="122" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(421.125 471.057)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="25.000977" y="11" textLength="61.998047">Instruction</tspan></text></g><line x1="476.365" y1="520.646" x2="476.3219" y2="512.5568" marker-end="url(#UMLInheritance_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="459.25" y="525.351" width="43" height="18" fill="white"/><rect x="459.25" y="525.351" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(464.25 527.351)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text></g><rect x="455.25" y="521.351" width="43" height="18" fill="white"/><rect x="455.25" y="521.351" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(460.25 523.351)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text><path d="M 371.194 347.3 L 353.25 347.55 L 353.25 485.057 L 406.225 485.057" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="251.917" y="274.824" width="43" height="18" fill="white"/><rect x="251.917" y="274.824" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.917 276.824)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text></g><path d="M 235.68224 268 L 272.978 268 L 273.417 274.824" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="183.4" y="433.43" width="105.75" height="14" fill="white"/><rect x="183.4" y="433.43" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.4 433.43)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="183.4" y="419.43" width="105.75" height="14" fill="white"/><rect x="183.4" y="419.43" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.4 419.43)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="10.199219" y="11" textLength="75.351562">BFSHeuristic</tspan></text></g><g filter="url(#Shadow)"><rect x="108" y="419.253" width="43" height="18" fill="white"/><rect x="108" y="419.253" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(113 421.253)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text></g><path d="M 235.682 410.984 L 129.425 410.984 L 129.5 419.253" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(31 471.057)" fill="blue"><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="10" textLength="102.0166">while (notDone) {</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="24" textLength="96.015625"> ..vm.forward();</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="38" textLength="108.01758"> ..vm.backtrack();</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="52" textLength="156.02539"> if (!properties.check()){</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="66" textLength="168.02734">   reportError(); break; ...</tspan></text><path d="M 48.938554 304.05756 C 43.085163 312.15881 30.529805 331.16365 22.8773 354.647 C 12.6393 386.0645 17.02699 410.2525 22.8773 427.469 C 26.786267 438.97245 34.286499 452.55632 39.54308 460.30485" marker-end="url(#StickArrow_Marker)" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(142.526 127.115)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="0" y="13" textLength="90.67627">search.class=...</tspan></text><text transform="translate(405.865 127)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="0" y="13" textLength="68.98633">vm.class=...</tspan></text><g filter="url(#Shadow)"><rect x="396.381" y="390.67" width="105.75" height="14" fill="white"/><rect x="396.381" y="390.67" width="105.75" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(401.381 390.67)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="85.365234">push (), pop() ...</tspan></text></g><g filter="url(#Shadow)"><rect x="396.381" y="376.67" width="105.75" height="14" fill="white"/><rect x="396.381" y="376.67" width="105.75" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(401.381 377.67)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="13.855469" y="11" textLength="68.039062">StackFrame</tspan></text></g><g filter="url(#Shadow)"><rect x="292.164" y="131.276" width="82.375" height="20.589" fill="white"/><rect x="292.164" y="131.276" width="82.375" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(297.164 134.5705)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="17.194336" y="11" textLength="30.65625">Confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="47.850586" y="11" textLength="7.330078">g</tspan></text></g><g filter="url(#Shadow)"><rect x="488.713" y="222.411" width="67.0625" height="20.589" fill="white"/><rect x="488.713" y="222.411" width="67.0625" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(493.713 225.7055)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="13.859375" y="11" textLength="29.34375">Heap</tspan></text></g></g></g></svg>
diff --git a/docs/graphics/jpf-basic.svg b/docs/graphics/jpf-basic.svg
new file mode 100644 (file)
index 0000000..fdfae11
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="162 106 384 214" width="32pc" height="214pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-19 18:37:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="18" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="299.965" y="117" width="99.4872" height="56.0076" fill="#fffab4"/><rect x="299.965" y="117" width="99.4872" height="56.0076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(304.965 134.0038)" fill="black"><tspan font-family="Helvetica" font-size="18" font-weight="bold" x="28.23774" y="18" textLength="33.011719">JPF</tspan></text><path d="M 206.06 166.232 L 206.06 123.032 C 206.06 120.0512 218.156 117.632 233.06 117.632 C 247.964 117.632 260.06 120.0512 260.06 123.032 L 260.06 166.232 C 260.06 169.2128 247.964 171.632 233.06 171.632 C 218.156 171.632 206.06 169.2128 206.06 166.232" fill="#dfdbff"/><path d="M 206.06 166.232 L 206.06 123.032 C 206.06 120.0512 218.156 117.632 233.06 117.632 C 247.964 117.632 260.06 120.0512 260.06 123.032 L 260.06 166.232 C 260.06 169.2128 247.964 171.632 233.06 171.632 C 218.156 171.632 206.06 169.2128 206.06 166.232 M 206.06 123.032 C 206.06 126.0128 218.156 128.432 233.06 128.432 C 247.964 128.432 260.06 126.0128 260.06 123.032" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(211.06 139.332)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="2.8554688" y="13" textLength="38.289062">*.class</tspan></text><path d="M 438.51 119.263 L 510.51 119.263 L 510.51 162.463 C 488.91 157.063 460.11 178.663 438.51 167.863 Z" fill="#ffcac7"/><path d="M 438.51 119.263 L 510.51 119.263 L 510.51 162.463 C 488.91 157.063 460.11 178.663 438.51 167.863 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(443.51 135.563)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="14.0200195" y="13" textLength="33.95996">report</tspan></text><path d="M 322.497 264.402 L 322.497 221.202 C 322.497 218.2212 334.593 215.802 349.497 215.802 C 364.401 215.802 376.497 218.2212 376.497 221.202 L 376.497 264.402 C 376.497 267.3828 364.401 269.802 349.497 269.802 C 334.593 269.802 322.497 267.3828 322.497 264.402" fill="#dfdbff"/><path d="M 322.497 264.402 L 322.497 221.202 C 322.497 218.2212 334.593 215.802 349.497 215.802 C 364.401 215.802 376.497 218.2212 376.497 221.202 L 376.497 264.402 C 376.497 267.3828 364.401 269.802 349.497 269.802 C 334.593 269.802 322.497 267.3828 322.497 264.402 M 322.497 221.202 C 322.497 224.1828 334.593 226.602 349.497 226.602 C 364.401 226.602 376.497 224.1828 376.497 221.202" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(327.497 237.502)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="10.7995605" y="13" textLength="22.400879">*.jpf</tspan></text><text transform="translate(176 185.642)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".154296875" y="14" textLength="90.26172">System under </tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="90.16992" y="14" textLength="8.551758">T</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="97.16992" y="14" textLength="18.675781">est</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="8.1967773" y="31" textLength="99.606445">(Java bytecode)</tspan></text><text transform="translate(418.768 185.485)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".46923828" y="14" textLength="9.3378906">V</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="9.041504" y="14" textLength="22.558594">erifi</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="31.600098" y="14" textLength="80.930664">cation Result</tspan></text><text transform="translate(290.911 276.286)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="3.4726562" y="14" textLength="61.461914">JPF Confi</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="64.93457" y="14" textLength="50.592773">guration</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".35888672" y="31" textLength="92.59961">Properties to V</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="92.19287" y="31" textLength="26.448242">erify</tspan></text><path d="M 266.46 140.155075 L 288.70305 140.155075 L 288.70305 134.628 L 296.1174 145.68215 L 288.70305 156.7363 L 288.70305 151.209225 L 266.46 151.209225 Z" fill="white"/><path d="M 266.46 140.155075 L 288.70305 140.155075 L 288.70305 134.628 L 296.1174 145.68215 L 288.70305 156.7363 L 288.70305 151.209225 L 266.46 151.209225 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 404.611 140.078075 L 426.85405 140.078075 L 426.85405 134.551 L 434.2684 145.60515 L 426.85405 156.6593 L 426.85405 151.132225 L 404.611 151.132225 Z" fill="white"/><path d="M 404.611 140.078075 L 426.85405 140.078075 L 426.85405 134.551 L 434.2684 145.60515 L 426.85405 156.6593 L 426.85405 151.132225 L 404.611 151.132225 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 344.23062 209.36985 L 344.23062 187.1268 L 338.70355 187.1268 L 349.7577 179.71245 L 360.81185 187.1268 L 355.28478 187.1268 L 355.28478 209.36985 Z" fill="white"/><path d="M 344.23062 209.36985 L 344.23062 187.1268 L 338.70355 187.1268 L 349.7577 179.71245 L 360.81185 187.1268 L 355.28478 187.1268 L 355.28478 209.36985 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/jpf-intro-new.svg b/docs/graphics/jpf-intro-new.svg
new file mode 100644 (file)
index 0000000..56fc211
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="3 18 771 561" width="771pt" height="561pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2009-04-10 01:07:23 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="blue"><g><path d="M 5.6000004 0 L 0 -2.1000001 L 0 2.1000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-7 -4 8 8" markerWidth="8" markerHeight="8" color="blue"><g><path d="M -5.6000004 0 L 0 2.1000001 L 0 -2.1000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-8 -4 9 8" markerWidth="9" markerHeight="8" color="black"><g><path d="M -6.3999996 0 L 0 2.3999999 L 0 -2.3999999 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-923.0769" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="15" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="blue"><g><path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_5" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="#ff8987"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_6" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id267_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id10_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id312_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id320_Graphic" filter="url(#Shadow)"/></g><line x1="437.4379" y1="41.027123" x2="519.2401" y2="40.616177" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="145.336" y1="40.4099" x2="424.873" y2="40.4099" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 135.678 89.1207 L 493.624 89.1207 C 500.25142 89.1207 505.624 94.493283 505.624 101.1207 L 505.624 477.0257 C 505.624 483.65312 500.25142 489.0257 493.624 489.0257 L 135.678 489.0257 C 129.05058 489.0257 123.678 483.65312 123.678 477.0257 L 123.678 101.1207 C 123.678 94.493283 129.05058 89.1207 135.678 89.1207 Z" fill="white"/><path d="M 135.678 89.1207 L 493.624 89.1207 C 500.25142 89.1207 505.624 94.493283 505.624 101.1207 L 505.624 477.0257 C 505.624 483.65312 500.25142 489.0257 493.624 489.0257 L 135.678 489.0257 C 129.05058 489.0257 123.678 483.65312 123.678 477.0257 L 123.678 101.1207 C 123.678 94.493283 129.05058 89.1207 135.678 89.1207 Z" stroke="#999" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 530.289 141.229 L 734.049 141.229 L 734.049 281.1298 C 672.921 263.6422 591.417 333.5926 530.289 298.6174 Z" fill="white"/><path d="M 530.289 141.229 L 734.049 141.229 L 734.049 281.1298 C 672.921 263.6422 591.417 333.5926 530.289 298.6174 Z" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(538.789 143.229)" fill="#7e7e7e"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="9" textLength="149.41406">------------------------------------ error path</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="20" textLength="5.0009766">..</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="31" textLength="38.53125">Step #14 </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="38.373047" y="31" textLength="41.027344">Thread #1</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="42" textLength="193.5791">  oldclassic.java:95           event2.waitForEvent();</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="53" textLength="122.541504">  oldclassic.java:37         wait();</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="75" textLength="163.92041">------------------------------------ thread stacks</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="86" textLength="33.51709">Thread: </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="33.358887" y="86" textLength="36.518555">Thread-0</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="97" textLength="181.58643">        at java.lang.Object.wait(Object.java:429)</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="108" textLength="184.57471">        at Event.waitForEvent(oldclassic.java:37)</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="119" textLength="27.505371">         ..</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="130" textLength="126.140625">========================</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#7e7e7e" x="0" y="142" textLength="114.49707">  1 Error Found: Deadlock</tspan></text><g filter="url(#Shadow_2)"><path d="M 30.1245 156.971 L 226.4705 156.971 C 233.09792 156.971 238.4705 162.34358 238.4705 168.971 L 238.4705 349.105 C 238.4705 355.73242 233.09792 361.105 226.4705 361.105 L 30.1245 361.105 C 23.497083 361.105 18.1245 355.73242 18.1245 349.105 L 18.1245 168.971 C 18.1245 162.34358 23.497083 156.971 30.1245 156.971 Z" fill="#ffd3db"/><path d="M 30.1245 156.971 L 226.4705 156.971 C 233.09792 156.971 238.4705 162.34358 238.4705 168.971 L 238.4705 349.105 C 238.4705 355.73242 233.09792 361.105 226.4705 361.105 L 30.1245 361.105 C 23.497083 361.105 18.1245 355.73242 18.1245 349.105 L 18.1245 168.971 C 18.1245 162.34358 23.497083 156.971 30.1245 156.971 Z" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 146.022 97.9336 L 482.417 97.9336 C 489.04442 97.9336 494.417 103.30618 494.417 109.9336 L 494.417 422.0106 C 494.417 428.63802 489.04442 434.0106 482.417 434.0106 L 146.022 434.0106 C 139.39458 434.0106 134.022 428.63802 134.022 422.0106 L 134.022 109.9336 C 134.022 103.30618 139.39458 97.9336 146.022 97.9336 Z" fill="#fffbbf" fill-opacity=".57"/><path d="M 146.022 97.9336 L 482.417 97.9336 C 489.04442 97.9336 494.417 103.30618 494.417 109.9336 L 494.417 422.0106 C 494.417 428.63802 489.04442 434.0106 482.417 434.0106 L 146.022 434.0106 C 139.39458 434.0106 134.022 428.63802 134.022 422.0106 L 134.022 109.9336 C 134.022 103.30618 139.39458 97.9336 146.022 97.9336 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><path d="M 271.936 111.498 L 305.1668 111.498 C 311.79422 111.498 317.1668 116.87058 317.1668 123.498 L 317.1668 396.268 C 317.1668 402.89542 311.79422 408.268 305.1668 408.268 L 271.936 408.268 C 265.30858 408.268 259.936 402.89542 259.936 396.268 L 259.936 123.498 C 259.936 116.87058 265.30858 111.498 271.936 111.498 Z" fill="white"/><path d="M 271.936 111.498 L 305.1668 111.498 C 311.79422 111.498 317.1668 116.87058 317.1668 123.498 L 317.1668 396.268 C 317.1668 402.89542 311.79422 408.268 305.1668 408.268 L 271.936 408.268 C 265.30858 408.268 259.936 402.89542 259.936 396.268 L 259.936 123.498 C 259.936 116.87058 265.30858 111.498 271.936 111.498 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(264.936 242.883)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="10.7775094" y="14" textLength="25.675781">JPF</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="7.667158" y="31" textLength="31.896484">Core</tspan></text></g><path d="M 346.726 196.737 L 410.101 196.737 C 414.976 196.737 414.976 196.737 414.976 198.91808 L 414.976 197.82754 C 417.4135 197.82754 417.4135 197.82754 417.4135 200.00862 L 417.4135 198.91808 C 419.851 198.91808 419.851 198.91808 419.851 201.09916 L 419.851 229.45322 C 419.851 231.6343 419.851 231.6343 414.976 231.6343 L 351.601 231.6343 C 346.726 231.6343 346.726 231.6343 346.726 230.54376 C 344.2885 230.54376 344.2885 230.54376 344.2885 229.45322 C 341.851 229.45322 341.851 229.45322 341.851 227.27214 L 341.851 198.91808 C 341.851 196.737 341.851 196.737 346.726 196.737 Z" fill="#fefff6"/><path d="M 346.726 196.737 L 410.101 196.737 C 414.976 196.737 414.976 196.737 414.976 198.91808 L 414.976 227.27214 C 414.976 229.45322 414.976 229.45322 410.101 229.45322 L 346.726 229.45322 C 341.851 229.45322 341.851 229.45322 341.851 227.27214 L 341.851 198.91808 C 341.851 196.737 341.851 196.737 346.726 196.737 M 414.976 197.82754 C 417.4135 197.82754 417.4135 197.82754 417.4135 200.00862 L 417.4135 229.45322 C 417.4135 230.54376 417.4135 230.54376 412.5385 230.54376 L 349.1635 230.54376 C 344.2885 230.54376 344.2885 230.54376 344.2885 229.45322 M 417.4135 198.91808 C 419.851 198.91808 419.851 198.91808 419.851 201.09916 L 419.851 229.45322 C 419.851 231.6343 419.851 231.6343 414.976 231.6343 L 351.601 231.6343 C 346.726 231.6343 346.726 231.6343 346.726 230.54376" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 198.35354)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="3.9934375" y="11" textLength="48.703125">bytecode</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.341094" y="25" textLength="16.0078125">set</tspan></text><path d="M 346.726 284.892 L 410.101 284.892 C 414.976 284.892 414.976 284.892 414.976 287.07308 L 414.976 285.98254 C 417.4135 285.98254 417.4135 285.98254 417.4135 288.16362 L 417.4135 287.07308 C 419.851 287.07308 419.851 287.07308 419.851 289.25416 L 419.851 317.60822 C 419.851 319.7893 419.851 319.7893 414.976 319.7893 L 351.601 319.7893 C 346.726 319.7893 346.726 319.7893 346.726 318.69876 C 344.2885 318.69876 344.2885 318.69876 344.2885 317.60822 C 341.851 317.60822 341.851 317.60822 341.851 315.42714 L 341.851 287.07308 C 341.851 284.892 341.851 284.892 346.726 284.892 Z" fill="#fefff6"/><path d="M 346.726 284.892 L 410.101 284.892 C 414.976 284.892 414.976 284.892 414.976 287.07308 L 414.976 315.42714 C 414.976 317.60822 414.976 317.60822 410.101 317.60822 L 346.726 317.60822 C 341.851 317.60822 341.851 317.60822 341.851 315.42714 L 341.851 287.07308 C 341.851 284.892 341.851 284.892 346.726 284.892 M 414.976 285.98254 C 417.4135 285.98254 417.4135 285.98254 417.4135 288.16362 L 417.4135 317.60822 C 417.4135 318.69876 417.4135 318.69876 412.5385 318.69876 L 349.1635 318.69876 C 344.2885 318.69876 344.2885 318.69876 344.2885 317.60822 M 417.4135 287.07308 C 419.851 287.07308 419.851 287.07308 419.851 289.25416 L 419.851 317.60822 C 419.851 319.7893 419.851 319.7893 414.976 319.7893 L 351.601 319.7893 C 346.726 319.7893 346.726 319.7893 346.726 318.69876" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 286.50854)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.336211" y="11" textLength="42.017578">listener/</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.334258" y="25" textLength="44.021484">property</tspan></text><path d="M 346.726 240.755 L 410.101 240.755 C 414.976 240.755 414.976 240.755 414.976 242.93608 L 414.976 241.84554 C 417.4135 241.84554 417.4135 241.84554 417.4135 244.02662 L 417.4135 242.93608 C 419.851 242.93608 419.851 242.93608 419.851 245.11716 L 419.851 273.47122 C 419.851 275.6523 419.851 275.6523 414.976 275.6523 L 351.601 275.6523 C 346.726 275.6523 346.726 275.6523 346.726 274.56176 C 344.2885 274.56176 344.2885 274.56176 344.2885 273.47122 C 341.851 273.47122 341.851 273.47122 341.851 271.29014 L 341.851 242.93608 C 341.851 240.755 341.851 240.755 346.726 240.755 Z" fill="#fefff6"/><path d="M 346.726 240.755 L 410.101 240.755 C 414.976 240.755 414.976 240.755 414.976 242.93608 L 414.976 271.29014 C 414.976 273.47122 414.976 273.47122 410.101 273.47122 L 346.726 273.47122 C 341.851 273.47122 341.851 273.47122 341.851 271.29014 L 341.851 242.93608 C 341.851 240.755 341.851 240.755 346.726 240.755 M 414.976 241.84554 C 417.4135 241.84554 417.4135 241.84554 417.4135 244.02662 L 417.4135 273.47122 C 417.4135 274.56176 417.4135 274.56176 412.5385 274.56176 L 349.1635 274.56176 C 344.2885 274.56176 344.2885 274.56176 344.2885 273.47122 M 417.4135 242.93608 C 419.851 242.93608 419.851 242.93608 419.851 245.11716 L 419.851 273.47122 C 419.851 275.6523 419.851 275.6523 414.976 275.6523 L 351.601 275.6523 C 346.726 275.6523 346.726 275.6523 346.726 274.56176" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 242.37154)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.329375" y="11" textLength="55.365234">publisher/ </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="18.343047" y="25" textLength="20.003906">-ext</tspan></text><path d="M 346.726 110.242 L 410.101 110.242 C 414.976 110.242 414.976 110.242 414.976 112.42308 L 414.976 111.33254 C 417.4135 111.33254 417.4135 111.33254 417.4135 113.51362 L 417.4135 112.42308 C 419.851 112.42308 419.851 112.42308 419.851 114.60416 L 419.851 142.95822 C 419.851 145.1393 419.851 145.1393 414.976 145.1393 L 351.601 145.1393 C 346.726 145.1393 346.726 145.1393 346.726 144.04876 C 344.2885 144.04876 344.2885 144.04876 344.2885 142.95822 C 341.851 142.95822 341.851 142.95822 341.851 140.77714 L 341.851 112.42308 C 341.851 110.242 341.851 110.242 346.726 110.242 Z" fill="#fefff6"/><path d="M 346.726 110.242 L 410.101 110.242 C 414.976 110.242 414.976 110.242 414.976 112.42308 L 414.976 140.77714 C 414.976 142.95822 414.976 142.95822 410.101 142.95822 L 346.726 142.95822 C 341.851 142.95822 341.851 142.95822 341.851 140.77714 L 341.851 112.42308 C 341.851 110.242 341.851 110.242 346.726 110.242 M 414.976 111.33254 C 417.4135 111.33254 417.4135 111.33254 417.4135 113.51362 L 417.4135 142.95822 C 417.4135 144.04876 417.4135 144.04876 412.5385 144.04876 L 349.1635 144.04876 C 344.2885 144.04876 344.2885 144.04876 344.2885 142.95822 M 417.4135 112.42308 C 419.851 112.42308 419.851 112.42308 419.851 114.60416 L 419.851 142.95822 C 419.851 145.1393 419.851 145.1393 414.976 145.1393 L 351.601 145.1393 C 346.726 145.1393 346.726 145.1393 346.726 144.04876" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 111.85854)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="11.00125" y="11" textLength="34.6875">choice</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.6604297" y="25" textLength="51.36914">generator</tspan></text><path d="M 346.726 328.15 L 410.101 328.15 C 414.976 328.15 414.976 328.15 414.976 330.33108 L 414.976 329.24054 C 417.4135 329.24054 417.4135 329.24054 417.4135 331.42162 L 417.4135 330.33108 C 419.851 330.33108 419.851 330.33108 419.851 332.51216 L 419.851 360.86622 C 419.851 363.0473 419.851 363.0473 414.976 363.0473 L 351.601 363.0473 C 346.726 363.0473 346.726 363.0473 346.726 361.95676 C 344.2885 361.95676 344.2885 361.95676 344.2885 360.86622 C 341.851 360.86622 341.851 360.86622 341.851 358.68514 L 341.851 330.33108 C 341.851 328.15 341.851 328.15 346.726 328.15 Z" fill="#fefff6"/><path d="M 346.726 328.15 L 410.101 328.15 C 414.976 328.15 414.976 328.15 414.976 330.33108 L 414.976 358.68514 C 414.976 360.86622 414.976 360.86622 410.101 360.86622 L 346.726 360.86622 C 341.851 360.86622 341.851 360.86622 341.851 358.68514 L 341.851 330.33108 C 341.851 328.15 341.851 328.15 346.726 328.15 M 414.976 329.24054 C 417.4135 329.24054 417.4135 329.24054 417.4135 331.42162 L 417.4135 360.86622 C 417.4135 361.95676 417.4135 361.95676 412.5385 361.95676 L 349.1635 361.95676 C 344.2885 361.95676 344.2885 361.95676 344.2885 360.86622 M 417.4135 330.33108 C 419.851 330.33108 419.851 330.33108 419.851 332.51216 L 419.851 360.86622 C 419.851 363.0473 419.851 363.0473 414.976 363.0473 L 351.601 363.0473 C 346.726 363.0473 346.726 363.0473 346.726 361.95676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 329.76654)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.6721484" y="11" textLength="51.345703">serializer/</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.673125" y="25" textLength="41.34375">restorer</tspan></text><path d="M 154.52 285.36 L 217.895 285.36 C 222.77 285.36 222.77 285.36 222.77 287.54108 L 222.77 286.45054 C 225.2075 286.45054 225.2075 286.45054 225.2075 288.63162 L 225.2075 287.54108 C 227.645 287.54108 227.645 287.54108 227.645 289.72216 L 227.645 318.07622 C 227.645 320.2573 227.645 320.2573 222.77 320.2573 L 159.395 320.2573 C 154.52 320.2573 154.52 320.2573 154.52 319.16676 C 152.0825 319.16676 152.0825 319.16676 152.0825 318.07622 C 149.645 318.07622 149.645 318.07622 149.645 315.89514 L 149.645 287.54108 C 149.645 285.36 149.645 285.36 154.52 285.36 Z" fill="#fefff6"/><path d="M 154.52 285.36 L 217.895 285.36 C 222.77 285.36 222.77 285.36 222.77 287.54108 L 222.77 315.89514 C 222.77 318.07622 222.77 318.07622 217.895 318.07622 L 154.52 318.07622 C 149.645 318.07622 149.645 318.07622 149.645 315.89514 L 149.645 287.54108 C 149.645 285.36 149.645 285.36 154.52 285.36 M 222.77 286.45054 C 225.2075 286.45054 225.2075 286.45054 225.2075 288.63162 L 225.2075 318.07622 C 225.2075 319.16676 225.2075 319.16676 220.3325 319.16676 L 156.9575 319.16676 C 152.0825 319.16676 152.0825 319.16676 152.0825 318.07622 M 225.2075 287.54108 C 227.645 287.54108 227.645 287.54108 227.645 289.72216 L 227.645 318.07622 C 227.645 320.2573 227.645 320.2573 222.77 320.2573 L 159.395 320.2573 C 154.52 320.2573 154.52 320.2573 154.52 319.16676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(156.205 293.97654)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".31960937" y="11" textLength="56.05078">annotation</tspan></text><line x1="249.343" y1="60.98" x2="249.343" y2="410.723" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="10,3,2,3"/><text transform="translate(130.465 327.122)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".47558594" y="11" textLength="106.04883"> (optional) in-source</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="17.148438" y="25" textLength="72.703125">property spec</tspan></text><path d="M 155.56714 196.608 L 221.63501 196.608 C 226.71716 196.608 226.71716 196.608 226.71716 198.78908 L 226.71716 197.69854 C 229.25823 197.69854 229.25823 197.69854 229.25823 199.87962 L 229.25823 198.78908 C 231.7993 198.78908 231.7993 198.78908 231.7993 200.97016 L 231.7993 229.32422 C 231.7993 231.5053 231.7993 231.5053 226.71716 231.5053 L 160.64929 231.5053 C 155.56714 231.5053 155.56714 231.5053 155.56714 230.41476 C 153.02607 230.41476 153.02607 230.41476 153.02607 229.32422 C 150.485 229.32422 150.485 229.32422 150.485 227.14314 L 150.485 198.78908 C 150.485 196.608 150.485 196.608 155.56714 196.608 Z" fill="#fefff6"/><path d="M 155.56714 196.608 L 221.63501 196.608 C 226.71716 196.608 226.71716 196.608 226.71716 198.78908 L 226.71716 227.14314 C 226.71716 229.32422 226.71716 229.32422 221.63501 229.32422 L 155.56714 229.32422 C 150.485 229.32422 150.485 229.32422 150.485 227.14314 L 150.485 198.78908 C 150.485 196.608 150.485 196.608 155.56714 196.608 M 226.71716 197.69854 C 229.25823 197.69854 229.25823 197.69854 229.25823 199.87962 L 229.25823 229.32422 C 229.25823 230.41476 229.25823 230.41476 224.17608 230.41476 L 158.10822 230.41476 C 153.02607 230.41476 153.02607 230.41476 153.02607 229.32422 M 229.25823 198.78908 C 231.7993 198.78908 231.7993 198.78908 231.7993 200.97016 L 231.7993 229.32422 C 231.7993 231.5053 231.7993 231.5053 226.71716 231.5053 L 160.64929 231.5053 C 155.56714 231.5053 155.56714 231.5053 155.56714 230.41476" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(157.11129 198.22454)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="10.0831523" y="11" textLength="39.357422">domain</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="1.7569804" y="25" textLength="56.009766">framework</tspan></text><text transform="translate(172.599 163.656)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".158203125" y="11" textLength="32.683594">model</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".1640625" y="25" textLength="32.671875">library</tspan></text><g id="id267_Graphic"><path d="M 32.187544 235.617 L 102.98351 235.617 C 108.429356 235.617 108.429356 235.617 108.429356 238.3499 L 108.429356 236.98345 C 111.15228 236.98345 111.15228 236.98345 111.15228 239.71634 L 111.15228 238.3499 C 113.8752 238.3499 113.8752 238.3499 113.8752 241.08279 L 113.8752 276.6104 C 113.8752 279.3433 113.8752 279.3433 108.429356 279.3433 L 37.633388 279.3433 C 32.187544 279.3433 32.187544 279.3433 32.187544 277.97685 C 29.464622 277.97685 29.464622 277.97685 29.464622 276.6104 C 26.7417 276.6104 26.7417 276.6104 26.7417 273.87751 L 26.7417 238.3499 C 26.7417 235.617 26.7417 235.617 32.187544 235.617 Z" fill="white"/><path d="M 32.187544 235.617 L 102.98351 235.617 C 108.429356 235.617 108.429356 235.617 108.429356 238.3499 L 108.429356 273.87751 C 108.429356 276.6104 108.429356 276.6104 102.98351 276.6104 L 32.187544 276.6104 C 26.7417 276.6104 26.7417 276.6104 26.7417 273.87751 L 26.7417 238.3499 C 26.7417 235.617 26.7417 235.617 32.187544 235.617 M 108.429356 236.98345 C 111.15228 236.98345 111.15228 236.98345 111.15228 239.71634 L 111.15228 276.6104 C 111.15228 277.97685 111.15228 277.97685 105.706434 277.97685 L 34.910466 277.97685 C 29.464622 277.97685 29.464622 277.97685 29.464622 276.6104 M 111.15228 238.3499 C 113.8752 238.3499 113.8752 238.3499 113.8752 241.08279 L 113.8752 276.6104 C 113.8752 279.3433 113.8752 279.3433 108.429356 279.3433 L 37.633388 279.3433 C 32.187544 279.3433 32.187544 279.3433 32.187544 277.97685" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(33.48437 248.18452)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x=".57964937" y="11" textLength="63.339844">application</tspan></text></g><line x1="122.237904" y1="240.46846" x2="153.34371" y2="230.27844" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="122.17559" y1="275.74486" x2="150.254375" y2="285.63264" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.351" y1="127.69064" x2="316.791" y2="127.69" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.851" y1="170.78465" x2="316.816" y2="170.46" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.851" y1="214.18565" x2="316.816" y2="214.088" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.3511" y1="258.1939" x2="316.816" y2="257.715" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.35102" y1="302.33574" x2="316.816" y2="302.095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.35116" y1="345.5861" x2="316.816" y2="344.97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="23.7492" y1="70.7573" x2="238.504" y2="70.7573" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="132.098" y="60.4708" width="34" height="16" fill="white"/><text transform="translate(137.098 60.4708)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="23.841797">SuT</tspan></text><line x1="260.26599" y1="70.768543" x2="485.89801" y2="70.312557" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="304.843" y="53.864" width="82" height="32" fill="white"/><text transform="translate(309.843 53.864)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="55.649902">execution</tspan><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="29" textLength="71.538086">environment</tspan></text><path d="M 346.569 372.698 L 409.944 372.698 C 414.819 372.698 414.819 372.698 414.819 374.87908 L 414.819 373.78854 C 417.2565 373.78854 417.2565 373.78854 417.2565 375.96962 L 417.2565 374.87908 C 419.694 374.87908 419.694 374.87908 419.694 377.06016 L 419.694 405.41422 C 419.694 407.5953 419.694 407.5953 414.819 407.5953 L 351.444 407.5953 C 346.569 407.5953 346.569 407.5953 346.569 406.50476 C 344.1315 406.50476 344.1315 406.50476 344.1315 405.41422 C 341.694 405.41422 341.694 405.41422 341.694 403.23314 L 341.694 374.87908 C 341.694 372.698 341.694 372.698 346.569 372.698 Z" fill="#fefff6"/><path d="M 346.569 372.698 L 409.944 372.698 C 414.819 372.698 414.819 372.698 414.819 374.87908 L 414.819 403.23314 C 414.819 405.41422 414.819 405.41422 409.944 405.41422 L 346.569 405.41422 C 341.694 405.41422 341.694 405.41422 341.694 403.23314 L 341.694 374.87908 C 341.694 372.698 341.694 372.698 346.569 372.698 M 414.819 373.78854 C 417.2565 373.78854 417.2565 373.78854 417.2565 375.96962 L 417.2565 405.41422 C 417.2565 406.50476 417.2565 406.50476 412.3815 406.50476 L 349.0065 406.50476 C 344.1315 406.50476 344.1315 406.50476 344.1315 405.41422 M 417.2565 374.87908 C 419.694 374.87908 419.694 374.87908 419.694 377.06016 L 419.694 405.41422 C 419.694 407.5953 419.694 407.5953 414.819 407.5953 L 351.444 407.5953 C 346.569 407.5953 346.569 407.5953 346.569 406.50476" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.254 374.31454)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="10.336211" y="11" textLength="36.017578">search</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.0022266" y="25" textLength="42.685547">strategy</tspan></text><line x1="341.19404" y1="390.13999" x2="316.659" y2="389.813" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(265.13 289.673)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="10.326172" y="11" textLength="25.347656">Java</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="6.995117" y="25" textLength="32.009766">virtual</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".32128906" y="39" textLength="45.357422">machine</tspan></text><path d="M 118.697 248.87425 L 168.44068 248.87425 L 168.44068 239.294 L 185.0219 258.4545 L 168.44068 277.615 L 168.44068 268.03475 L 118.697 268.03475 Z" fill="#ebe8ff"/><path d="M 118.697 248.87425 L 168.44068 248.87425 L 168.44068 239.294 L 185.0219 258.4545 L 168.44068 277.615 L 168.44068 268.03475 L 118.697 268.03475 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(123.348 250.672)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".1484375" y="11" textLength="48.703125">bytecode</tspan></text><text transform="translate(484.521 250.515)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".32617188" y="11" textLength="31.347656">report</tspan></text><text transform="translate(141.086 102.486)" fill="red"><tspan font-family="Helvetica" font-size="15" font-weight="500" fill="red" x="0" y="15" textLength="26.66748">JPF</tspan></text><line x1="627.333" y1="314.722" x2="627.333" y2="320.178" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="624.70977" y1="327.42927" x2="618.59018" y2="334.78068" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="613.34386" y1="341.08335" x2="607.2231" y2="348.43661" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="604.6" y1="355.688" x2="604.6" y2="361.143" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 597.527 364.956 C 594.45664 365.32263 591.13855 366.62494 588.315 366.056 C 585.49145 365.48706 582.53897 363.92343 580.584 361.542 C 578.62903 359.16057 576.91747 355.24282 576.584 351.766 C 576.25053 348.28918 577.16148 343.96717 578.583 340.679 C 580.00452 337.39083 582.44243 334.16829 585.114 332.035 C 587.78557 329.90171 591.53098 328.46127 594.614 327.878 C 597.69702 327.29473 600.5994 327.27322 603.614 328.535 C 605.1366 329.1723 606.66708 330.34182 608.19938 331.6403" marker-end="url(#FilledArrow_Marker_4)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="631.00532" y1="326.1034" x2="651.1297" y2="336.10659" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="652.24505" y1="341.1374" x2="635.57295" y2="362.0376" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="634.06917" y1="369.20604" x2="636.22385" y2="377.31395" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 651.872 350.006 C 649.0306 353.83895 644.38623 358.33382 643.347 361.506 C 642.30777 364.67818 643.85634 367.09003 645.636 369.041 C 647.41566 370.99197 651.09246 372.4959 654.026 373.213 C 656.95954 373.9301 660.37495 373.87278 663.239 373.344 C 666.10305 372.81522 669.20403 371.84615 671.212 370.04 C 673.21997 368.23385 675.44765 365.4452 675.288 362.506 C 675.12835 359.5668 672.3428 355.48602 670.254 352.403 C 669.2545 350.92772 668.0666 349.58246 666.82558 348.27392" marker-end="url(#FilledArrow_Marker_4)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="658.56888" y1="339.55327" x2="693.57913" y2="354.62173" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="628.534" y1="402.73847" x2="634.65403" y2="410.0915" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="646.02086" y1="402.73835" x2="639.9001" y2="410.09161" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="697.2711" y1="360.34232" x2="697.0259" y2="373.76468" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="696.951" y1="381.964" x2="696.951" y2="387.418" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="694.32786" y1="394.66935" x2="688.2071" y2="402.02261" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="682.9609" y1="408.32537" x2="676.84107" y2="415.6776" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="699.57414" y1="394.66935" x2="705.6949" y2="402.02261" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="627.333" cy="310.622" r="3.6000058" fill="yellow"/><circle cx="627.333" cy="310.622" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="627.333" cy="324.278" r="3.6000058" fill="yellow"/><circle cx="627.333" cy="324.278" r="3.6000058" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="615.967" cy="337.932" r="3.6000058" fill="white"/><circle cx="615.967" cy="337.932" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="604.6" cy="351.588" r="3.6000058" fill="white"/><circle cx="604.6" cy="351.588" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="604.6" cy="365.243" r="3.6000058" fill="blue"/><circle cx="604.6" cy="365.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="654.802" cy="337.932" r="3.6000058" fill="yellow"/><circle cx="654.802" cy="337.932" r="3.6000058" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="633.016" cy="365.243" r="3.6000058" fill="blue"/><circle cx="633.016" cy="365.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="697.346" cy="356.243" r="3.6000058" fill="yellow"/><circle cx="697.346" cy="356.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="637.277" cy="381.277" r="3.6000058" fill="white"/><circle cx="637.277" cy="381.277" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="648.644" cy="399.587" r="3.6000058" fill="white"/><circle cx="648.644" cy="399.587" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="625.911" cy="399.587" r="3.6000058" fill="white"/><circle cx="625.911" cy="399.587" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="637.277" cy="413.243" r="3.6000058" fill="white"/><circle cx="637.277" cy="413.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="696.951" cy="391.518" r="3.6000058" fill="white"/><circle cx="696.951" cy="391.518" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="708.318" cy="405.174" r="3.6000058" fill="white"/><circle cx="708.318" cy="405.174" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="685.584" cy="405.174" r="3.6000058" fill="white"/><circle cx="685.584" cy="405.174" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="674.218" cy="418.829" r="3.6000058" fill="white"/><circle cx="674.218" cy="418.829" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="696.951" cy="377.864" r="3.6000058" fill="red"/><circle cx="696.951" cy="377.864" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(581.584 332.815)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="2.0389578" y="11" textLength="20.021484">end</tspan></text><text transform="translate(645.152 355.212)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="1.5648078" y="11" textLength="26.021484">seen</tspan></text><text transform="translate(698.473 307.269)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="1.88925" y="11" textLength="52.6875">error-path</tspan></text><text transform="translate(703.341 369.88)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="6.2222578" y="11" textLength="47.35547">property </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="6.219328" y="25" textLength="44.027344">violation</tspan></text><path d="M 680.049 343.105 C 688.4935 338.63578 694.70723 336.80062 705.385 329.696 C 716.06277 322.59138 737.21352 311.11894 744.122 300.473 C 751.03048 289.82706 751.51837 281.20713 746.84 265.814 C 742.84603 252.67272 730.70992 233.928 720.8592 216.75722" marker-end="url(#FilledArrow_Marker_5)" stroke="#ff8987" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="618.13855" y1="341.41063" x2="630.84446" y2="361.76436" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="635.11422" y1="384.7611" x2="628.07376" y2="396.10288" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="639.4399" y1="384.76102" x2="646.4811" y2="396.10298" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 706.065 373.189 C 710.36857 367.52657 717.165 361.63612 718.977 356.2 C 720.789 350.76388 723.2802 345.6655 716.938 340.569 C 710.5958 335.4725 690.9995 330.71432 680.92 325.618 C 670.8405 320.52168 663.47663 316.3302 656.455 309.988 C 651.8553 305.83336 648.22683 300.7056 644.6155 295.56124" marker-end="url(#FilledArrow_Marker_5)" stroke="#ff8987" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(313.697 453.368)" fill="red"><tspan font-family="Helvetica" font-size="15" font-weight="500" fill="red" x="0" y="15" textLength="71.68213">host - JVM</tspan></text><line x1="429.938" y1="29.5677" x2="429.938" y2="410.892" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="10,3,2,3"/><rect x="225.929" y="30.9748" width="100" height="16" fill="white"/><text transform="translate(230.929 30.9748)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="89.59082">JPF distribution</tspan></text><path d="M 437.51213 154.523 L 483.03984 154.523 C 486.54197 154.523 486.54197 154.523 486.54197 156.70408 L 486.54197 155.61354 C 488.29303 155.61354 488.29303 155.61354 488.29303 157.79462 L 488.29303 156.70408 C 490.0441 156.70408 490.0441 156.70408 490.0441 158.88516 L 490.0441 187.23922 C 490.0441 189.4203 490.0441 189.4203 486.54197 189.4203 L 441.01426 189.4203 C 437.51213 189.4203 437.51213 189.4203 437.51213 188.32976 C 435.76107 188.32976 435.76107 188.32976 435.76107 187.23922 C 434.01 187.23922 434.01 187.23922 434.01 185.05814 L 434.01 156.70408 C 434.01 154.523 434.01 154.523 437.51213 154.523 Z" fill="#fefff6"/><path d="M 437.51213 154.523 L 483.03984 154.523 C 486.54197 154.523 486.54197 154.523 486.54197 156.70408 L 486.54197 185.05814 C 486.54197 187.23922 486.54197 187.23922 483.03984 187.23922 L 437.51213 187.23922 C 434.01 187.23922 434.01 187.23922 434.01 185.05814 L 434.01 156.70408 C 434.01 154.523 434.01 154.523 437.51213 154.523 M 486.54197 155.61354 C 488.29303 155.61354 488.29303 155.61354 488.29303 157.79462 L 488.29303 187.23922 C 488.29303 188.32976 488.29303 188.32976 484.7909 188.32976 L 439.2632 188.32976 C 435.76107 188.32976 435.76107 188.32976 435.76107 187.23922 M 488.29303 156.70408 C 490.0441 156.70408 490.0441 156.70408 490.0441 158.88516 L 490.0441 187.23922 C 490.0441 189.4203 490.0441 189.4203 486.54197 189.4203 L 441.01426 189.4203 C 437.51213 189.4203 437.51213 189.4203 437.51213 188.32976" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(440.13068 163.13954)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.953601" y="11" textLength="10.001953">...</tspan></text><path d="M 346.726 153.336 L 410.101 153.336 C 414.976 153.336 414.976 153.336 414.976 155.51708 L 414.976 154.42654 C 417.4135 154.42654 417.4135 154.42654 417.4135 156.60762 L 417.4135 155.51708 C 419.851 155.51708 419.851 155.51708 419.851 157.69816 L 419.851 186.05222 C 419.851 188.2333 419.851 188.2333 414.976 188.2333 L 351.601 188.2333 C 346.726 188.2333 346.726 188.2333 346.726 187.14276 C 344.2885 187.14276 344.2885 187.14276 344.2885 186.05222 C 341.851 186.05222 341.851 186.05222 341.851 183.87114 L 341.851 155.51708 C 341.851 153.336 341.851 153.336 346.726 153.336 Z" fill="#fefff6"/><path d="M 346.726 153.336 L 410.101 153.336 C 414.976 153.336 414.976 153.336 414.976 155.51708 L 414.976 183.87114 C 414.976 186.05222 414.976 186.05222 410.101 186.05222 L 346.726 186.05222 C 341.851 186.05222 341.851 186.05222 341.851 183.87114 L 341.851 155.51708 C 341.851 153.336 341.851 153.336 346.726 153.336 M 414.976 154.42654 C 417.4135 154.42654 417.4135 154.42654 417.4135 156.60762 L 417.4135 186.05222 C 417.4135 187.14276 417.4135 187.14276 412.5385 187.14276 L 349.1635 187.14276 C 344.2885 187.14276 344.2885 187.14276 344.2885 186.05222 M 417.4135 155.51708 C 419.851 155.51708 419.851 155.51708 419.851 157.69816 L 419.851 186.05222 C 419.851 188.2333 419.851 188.2333 414.976 188.2333 L 351.601 188.2333 C 346.726 188.2333 346.726 188.2333 346.726 187.14276" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 154.95254)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="12.334258" y="11" textLength="32.021484">native</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="16.336211" y="25" textLength="24.017578">peer</tspan></text><path d="M 437.68213 285.265 L 483.20984 285.265 C 486.71197 285.265 486.71197 285.265 486.71197 287.44608 L 486.71197 286.35554 C 488.46303 286.35554 488.46303 286.35554 488.46303 288.53662 L 488.46303 287.44608 C 490.2141 287.44608 490.2141 287.44608 490.2141 289.62716 L 490.2141 317.98122 C 490.2141 320.1623 490.2141 320.1623 486.71197 320.1623 L 441.18426 320.1623 C 437.68213 320.1623 437.68213 320.1623 437.68213 319.07176 C 435.93107 319.07176 435.93107 319.07176 435.93107 317.98122 C 434.18 317.98122 434.18 317.98122 434.18 315.80014 L 434.18 287.44608 C 434.18 285.265 434.18 285.265 437.68213 285.265 Z" fill="#fefff6"/><path d="M 437.68213 285.265 L 483.20984 285.265 C 486.71197 285.265 486.71197 285.265 486.71197 287.44608 L 486.71197 315.80014 C 486.71197 317.98122 486.71197 317.98122 483.20984 317.98122 L 437.68213 317.98122 C 434.18 317.98122 434.18 317.98122 434.18 315.80014 L 434.18 287.44608 C 434.18 285.265 434.18 285.265 437.68213 285.265 M 486.71197 286.35554 C 488.46303 286.35554 488.46303 286.35554 488.46303 288.53662 L 488.46303 317.98122 C 488.46303 319.07176 488.46303 319.07176 484.9609 319.07176 L 439.4332 319.07176 C 435.93107 319.07176 435.93107 319.07176 435.93107 317.98122 M 488.46303 287.44608 C 490.2141 287.44608 490.2141 287.44608 490.2141 289.62716 L 490.2141 317.98122 C 490.2141 320.1623 490.2141 320.1623 486.71197 320.1623 L 441.18426 320.1623 C 437.68213 320.1623 437.68213 320.1623 437.68213 319.07176" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(440.30068 293.88154)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.953601" y="11" textLength="10.001953">...</tspan></text><path d="M 437.68213 242.749 L 483.20984 242.749 C 486.71197 242.749 486.71197 242.749 486.71197 244.93008 L 486.71197 243.83954 C 488.46303 243.83954 488.46303 243.83954 488.46303 246.02062 L 488.46303 244.93008 C 490.2141 244.93008 490.2141 244.93008 490.2141 247.11116 L 490.2141 275.46522 C 490.2141 277.6463 490.2141 277.6463 486.71197 277.6463 L 441.18426 277.6463 C 437.68213 277.6463 437.68213 277.6463 437.68213 276.55576 C 435.93107 276.55576 435.93107 276.55576 435.93107 275.46522 C 434.18 275.46522 434.18 275.46522 434.18 273.28414 L 434.18 244.93008 C 434.18 242.749 434.18 242.749 437.68213 242.749 Z" fill="#fefff6"/><path d="M 437.68213 242.749 L 483.20984 242.749 C 486.71197 242.749 486.71197 242.749 486.71197 244.93008 L 486.71197 273.28414 C 486.71197 275.46522 486.71197 275.46522 483.20984 275.46522 L 437.68213 275.46522 C 434.18 275.46522 434.18 275.46522 434.18 273.28414 L 434.18 244.93008 C 434.18 242.749 434.18 242.749 437.68213 242.749 M 486.71197 243.83954 C 488.46303 243.83954 488.46303 243.83954 488.46303 246.02062 L 488.46303 275.46522 C 488.46303 276.55576 488.46303 276.55576 484.9609 276.55576 L 439.4332 276.55576 C 435.93107 276.55576 435.93107 276.55576 435.93107 275.46522 M 488.46303 244.93008 C 490.2141 244.93008 490.2141 244.93008 490.2141 247.11116 L 490.2141 275.46522 C 490.2141 277.6463 490.2141 277.6463 486.71197 277.6463 L 441.18426 277.6463 C 437.68213 277.6463 437.68213 277.6463 437.68213 276.55576" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(440.30068 251.36554)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.953601" y="11" textLength="10.001953">...</tspan></text><path d="M 482.577 248.71725 L 532.32068 248.71725 L 532.32068 239.137 L 548.9019 258.2975 L 532.32068 277.458 L 532.32068 267.87775 L 482.577 267.87775 Z" fill="#ebe8ff"/><path d="M 482.577 248.71725 L 532.32068 248.71725 L 532.32068 239.137 L 548.9019 258.2975 L 532.32068 277.458 L 532.32068 267.87775 L 482.577 267.87775 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="439.75" y="31.1434" width="73" height="16" fill="white"/><text transform="translate(444.75 31.1434)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="62.149902">extensions</tspan></text><g id="id10_Graphic"><path d="M 277.115 548.62458 L 277.115 511.94762 C 277.115 509.4169 287.67938 507.363 300.6962 507.363 C 313.71302 507.363 324.2774 509.4169 324.2774 511.94762 L 324.2774 548.62458 C 324.2774 551.1553 313.71302 553.2092 300.6962 553.2092 C 287.67938 553.2092 277.115 551.1553 277.115 548.62458" fill="white"/><path d="M 277.115 548.62458 L 277.115 511.94762 C 277.115 509.4169 287.67938 507.363 300.6962 507.363 C 313.71302 507.363 324.2774 509.4169 324.2774 511.94762 L 324.2774 548.62458 C 324.2774 551.1553 313.71302 553.2092 300.6962 553.2092 C 287.67938 553.2092 277.115 551.1553 277.115 548.62458 M 277.115 511.94762 C 277.115 514.47833 287.67938 516.53224 300.6962 516.53224 C 313.71302 516.53224 324.2774 514.47833 324.2774 511.94762" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(282.115 524.0784)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.5191883" y="14" textLength="24.124023">*.jpf</tspan></text></g><g id="id312_Graphic"><rect x="407.819" y="548.116" width="1.0188" height=".125" fill="white"/><rect x="407.819" y="548.116" width="1.0188" height=".125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 77.7265 380.014 L 77.7265 519.852 C 77.7265 527.584 83.994514 533.852 91.7265 533.852 L 257.324 533.852" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 422.082 415.5 L 421.1825 519.97253 C 421.11634 527.6572 414.86798 533.852 407.18302 533.852 L 344.365 533.852" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 336.8 397.341 L 336.8 401.679 C 336.8 409.41099 343.06801 415.679 350.8 415.679 L 473.80245 415.679 C 481.53444 415.679 487.80245 409.41099 487.80245 401.679 C 487.80245 401.41993 487.79526 401.16092 487.7809 400.90225 L 487.583 397.341" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="299.826" y1="501.253" x2="298.89868" y2="401.12458" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(327.878 553.383)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="54.183594">JPF confi</tspan><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="54.183594" y="13" textLength="46.979004">guration</tspan></text><text transform="translate(496.924 250.84)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".32617188" y="11" textLength="31.347656">report</tspan></text><path d="M 139.874 445.218 L 99.1214 445.218 L 99.1214 291.09" marker-end="url(#FilledArrow_Marker_6)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 207.836 451.331 L 245.532 451.331 L 245.532 442.89" marker-end="url(#FilledArrow_Marker_6)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202.648 452.006)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="50.59082">standard</tspan><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="29" textLength="76.584473">Java libraries</tspan></text><g filter="url(#Shadow_2)"><path d="M 152.821 462.01758 L 152.821 425.34062 C 152.821 422.8099 163.38538 420.756 176.4022 420.756 C 189.41902 420.756 199.9834 422.8099 199.9834 425.34062 L 199.9834 462.01758 C 199.9834 464.5483 189.41902 466.6022 176.4022 466.6022 C 163.38538 466.6022 152.821 464.5483 152.821 462.01758" fill="white"/><path d="M 152.821 462.01758 L 152.821 425.34062 C 152.821 422.8099 163.38538 420.756 176.4022 420.756 C 189.41902 420.756 199.9834 422.8099 199.9834 425.34062 L 199.9834 462.01758 C 199.9834 464.5483 189.41902 466.6022 176.4022 466.6022 C 163.38538 466.6022 152.821 464.5483 152.821 462.01758 M 152.821 425.34062 C 152.821 427.87133 163.38538 429.92524 176.4022 429.92524 C 189.41902 429.92524 199.9834 427.87133 199.9834 425.34062" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(157.821 437.4714)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.1329578" y="14" textLength="24.896484">*.jar</tspan></text></g><g id="id320_Graphic"><path d="M 147.727 455.90558 L 147.727 419.22862 C 147.727 416.6979 158.29138 414.644 171.3082 414.644 C 184.32502 414.644 194.8894 416.6979 194.8894 419.22862 L 194.8894 455.90558 C 194.8894 458.4363 184.32502 460.4902 171.3082 460.4902 C 158.29138 460.4902 147.727 458.4363 147.727 455.90558" fill="white"/><path d="M 147.727 455.90558 L 147.727 419.22862 C 147.727 416.6979 158.29138 414.644 171.3082 414.644 C 184.32502 414.644 194.8894 416.6979 194.8894 419.22862 L 194.8894 455.90558 C 194.8894 458.4363 184.32502 460.4902 171.3082 460.4902 C 158.29138 460.4902 147.727 458.4363 147.727 455.90558 M 147.727 419.22862 C 147.727 421.75933 158.29138 423.81324 171.3082 423.81324 C 184.32502 423.81324 194.8894 421.75933 194.8894 419.22862" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(152.727 431.3594)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.1329578" y="14" textLength="24.896484">*.jar</tspan></text></g></g></g></svg>
diff --git a/docs/graphics/jpf-layers.svg b/docs/graphics/jpf-layers.svg
new file mode 100644 (file)
index 0000000..ada4957
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="8 66 540 266" width="45pc" height="266pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 21:48:18 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="red"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576" height="734"/><g><title>Layer 1</title><g><xl:use xl:href="#id1_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id30_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id4_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id6_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id9_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id11_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id14_Graphic" filter="url(#Shadow)"/></g><g id="id1_Graphic"><rect x="100" y="281" width="287" height="34" fill="white"/><rect x="100" y="281" width="287" height="34" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(105 291)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="106.490234" y="11" textLength="64.01953">platform OS</tspan></text></g><g id="id30_Graphic"><path d="M 165 208 L 325 208 L 324 273 L 301 273 L 301 232 L 189 232 L 189 273 L 165 273 Z" fill="white"/><path d="M 165 208 L 325 208 L 324 273 L 301 273 L 301 232 L 189 232 L 189 273 L 165 273 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(217.5 213.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".4921875" y="11" textLength="50.015625">host JVM</tspan></text><g id="id4_Graphic"><path d="M 204 241 L 282 241 C 288 241 288 241 288 243.125 L 288 242.0625 C 291 242.0625 291 242.0625 291 244.1875 L 291 243.125 C 294 243.125 294 243.125 294 245.25 L 294 272.875 C 294 275 294 275 288 275 L 210 275 C 204 275 204 275 204 273.9375 C 201 273.9375 201 273.9375 201 272.875 C 198 272.875 198 272.875 198 270.75 L 198 243.125 C 198 241 198 241 204 241 Z" fill="white"/><path d="M 204 241 L 282 241 C 288 241 288 241 288 243.125 L 288 270.75 C 288 272.875 288 272.875 282 272.875 L 204 272.875 C 198 272.875 198 272.875 198 270.75 L 198 243.125 C 198 241 198 241 204 241 M 288 242.0625 C 291 242.0625 291 242.0625 291 244.1875 L 291 272.875 C 291 273.9375 291 273.9375 285 273.9375 L 207 273.9375 C 201 273.9375 201 273.9375 201 272.875 M 291 243.125 C 294 243.125 294 243.125 294 245.25 L 294 272.875 C 294 275 294 275 288 275 L 210 275 C 204 275 204 275 204 273.9375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.92 242.215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.029258" y="11" textLength="35.355469">native </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="15.034141" y="25" textLength="42.01172">libraries</tspan></text></g><rect x="100" y="228" width="287" height="18" fill="red" fill-opacity=".09"/><rect x="100" y="228" width="287" height="18" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id6_Graphic"><path d="M 204 167 L 282 167 C 288 167 288 167 288 169.125 L 288 168.0625 C 291 168.0625 291 168.0625 291 170.1875 L 291 169.125 C 294 169.125 294 169.125 294 171.25 L 294 198.875 C 294 201 294 201 288 201 L 210 201 C 204 201 204 201 204 199.9375 C 201 199.9375 201 199.9375 201 198.875 C 198 198.875 198 198.875 198 196.75 L 198 169.125 C 198 167 198 167 204 167 Z" fill="white"/><path d="M 204 167 L 282 167 C 288 167 288 167 288 169.125 L 288 196.75 C 288 198.875 288 198.875 282 198.875 L 204 198.875 C 198 198.875 198 198.875 198 196.75 L 198 169.125 C 198 167 198 167 204 167 M 288 168.0625 C 291 168.0625 291 168.0625 291 170.1875 L 291 198.875 C 291 199.9375 291 199.9375 285 199.9375 L 207 199.9375 C 201 199.9375 201 199.9375 201 198.875 M 291 169.125 C 294 169.125 294 169.125 294 171.25 L 294 198.875 C 294 201 294 201 288 201 L 210 201 C 204 201 204 201 204 199.9375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.92 168.215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="19.704062" y="11" textLength="36.00586">library </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="16.033164" y="25" textLength="40.013672">classes</tspan></text></g><path d="M 165 136 L 325 136 L 324 201 L 301 201 L 301 160 L 189 160 L 189 201 L 165 201 Z" fill="yellow"/><path d="M 165 136 L 325 136 L 324 201 L 301 201 L 301 160 L 189 160 L 189 201 L 165 201 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(179.5 140.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".14160156" y="11" textLength="118.7168">JPF (Java application)</tspan></text><g id="id9_Graphic"><path d="M 204 95 L 282 95 C 288 95 288 95 288 97.125 L 288 96.0625 C 291 96.0625 291 96.0625 291 98.1875 L 291 97.125 C 294 97.125 294 97.125 294 99.25 L 294 126.875 C 294 129 294 129 288 129 L 210 129 C 204 129 204 129 204 127.9375 C 201 127.9375 201 127.9375 201 126.875 C 198 126.875 198 126.875 198 124.75 L 198 97.125 C 198 95 198 95 204 95 Z" fill="white"/><path d="M 204 95 L 282 95 C 288 95 288 95 288 97.125 L 288 124.75 C 288 126.875 288 126.875 282 126.875 L 204 126.875 C 198 126.875 198 126.875 198 124.75 L 198 97.125 C 198 95 198 95 204 95 M 288 96.0625 C 291 96.0625 291 96.0625 291 98.1875 L 291 126.875 C 291 127.9375 291 127.9375 285 127.9375 L 207 127.9375 C 201 127.9375 201 127.9375 201 126.875 M 291 97.125 C 294 97.125 294 97.125 294 99.25 L 294 126.875 C 294 129 294 129 288 129 L 210 129 C 204 129 204 129 204 127.9375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.92 96.215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.024375" y="11" textLength="49.365234">modeled </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="16.033164" y="25" textLength="40.013672">classes</tspan></text></g><rect x="100" y="123" width="287" height="18" fill="red" fill-opacity=".2"/><rect x="100" y="123" width="287" height="18" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id11_Graphic"><path d="M 465 203.2 L 465 172.8 C 465 170.7024 475.528 169 488.5 169 C 501.472 169 512 170.7024 512 172.8 L 512 203.2 C 512 205.2976 501.472 207 488.5 207 C 475.528 207 465 205.2976 465 203.2" fill="white"/><path d="M 465 203.2 L 465 172.8 C 465 170.7024 475.528 169 488.5 169 C 501.472 169 512 170.7024 512 172.8 L 512 203.2 C 512 205.2976 501.472 207 488.5 207 C 475.528 207 465 205.2976 465 203.2 M 465 172.8 C 465 174.8976 475.528 176.6 488.5 176.6 C 501.472 176.6 512 174.8976 512 172.8" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(470 182.9)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.5" y="11" textLength="24">rt.jar</tspan></text></g><path d="M 464.51608 194.23311 C 443.01287 199.82151 425.91675 206.03935 400 211 C 374.08325 215.96065 330.83115 228.3329 309 224 C 291.02341 220.43213 284.5698 205.10993 275.4076 192.55293" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 464.5003 187.15195 C 425.33746 185.76811 380.41338 195.52407 347 183 C 316.59513 171.60358 295.70486 141.75243 271.34544 118.638844" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><g id="id14_Graphic"><path d="M 465 152.2 L 465 121.8 C 465 119.7024 475.528 118 488.5 118 C 501.472 118 512 119.7024 512 121.8 L 512 152.2 C 512 154.2976 501.472 156 488.5 156 C 475.528 156 465 154.2976 465 152.2" fill="white"/><path d="M 465 152.2 L 465 121.8 C 465 119.7024 475.528 118 488.5 118 C 501.472 118 512 119.7024 512 121.8 L 512 152.2 C 512 154.2976 501.472 156 488.5 156 C 475.528 156 465 154.2976 465 152.2 M 465 121.8 C 465 123.8976 475.528 125.6 488.5 125.6 C 501.472 125.6 512 123.8976 512 121.8" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 464.51156 142.2503 C 428.34466 150.166075 387.9154 172.37441 356 166 C 327.09537 160.22692 305.15832 131.006355 280.72651 110.193924" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(104.5 227.125)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x=".106933594" y="14" textLength="21.786133">JNI</tspan></text><text transform="translate(104.5 122.125)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x=".33105469" y="14" textLength="23.33789">MJI</tspan></text><text transform="translate(470.5 131.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".328125" y="11" textLength="35.34375">*.class</tspan></text><text transform="translate(439 95.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".14746094" y="11" textLength="94.70508">system under test</tspan></text><text transform="translate(450.5 212.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="1.8095703" y="11" textLength="78.714844">standard Java </tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="11.149414" y="25" textLength="56.701172">installation</tspan></text><text transform="translate(411.5 219.125) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".30761719" y="13" textLength="51.301758">CLASSP</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="50.65088" y="13" textLength="8.6708984">A</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="58.36328" y="13" textLength="17.329102">TH</tspan></text><line x1="57" y1="205" x2="366" y2="205" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/><line x1="57" y1="132" x2="92" y2="132" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/><line x1="138" y1="132" x2="365" y2="132" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/><text transform="translate(54.5 75.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".31738281" y="14" textLength="72.365234">Model layer</tspan></text><text transform="translate(54.5 160.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".09667969" y="14" textLength="63.80664">Java layer</tspan></text><text transform="translate(54.5 256.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".041503906" y="14" textLength="73.91699">Native layer</tspan></text><text transform="translate(22.5 214.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".37890625" y="11" textLength="121.24219">&quot;Java Native Interface&quot;</tspan></text><text transform="translate(22.5 109.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".043945312" y="11" textLength="119.91211">&quot;Model Java Interface&quot;</tspan></text></g></g></svg>
diff --git a/docs/graphics/jpf-project.svg b/docs/graphics/jpf-project.svg
new file mode 100644 (file)
index 0000000..790b51b
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="46 25 545 750" width="545pt" height="750pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2009-09-09 23:36:00 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1200" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="10" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1200" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-923.0769" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="red"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1090.9091" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="588.0188" height="768.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id111_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id106_Graphic" filter="url(#Shadow)"/></g><g id="id111_Graphic"><path d="M 68.5938 640.352 L 229.3748 640.352 C 232.68851 640.352 235.3748 643.0383 235.3748 646.352 L 235.3748 751.813 C 235.3748 755.1267 232.68851 757.813 229.3748 757.813 L 68.5938 757.813 C 65.28009 757.813 62.5938 755.1267 62.5938 751.813 L 62.5938 646.352 C 62.5938 643.0383 65.28009 640.352 68.5938 640.352 Z" fill="#ebffed"/><path d="M 68.5938 640.352 L 229.3748 640.352 C 232.68851 640.352 235.3748 643.0383 235.3748 646.352 L 235.3748 751.813 C 235.3748 755.1267 232.68851 757.813 229.3748 757.813 L 68.5938 757.813 C 65.28009 757.813 62.5938 755.1267 62.5938 751.813 L 62.5938 646.352 C 62.5938 643.0383 65.28009 640.352 68.5938 640.352 Z" stroke="#9cffb1" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id106_Graphic"><path d="M 69.335548 61.38315 L 186.93809 61.38416 C 190.2518 61.384188 192.93807 64.070502 192.93804 67.38421 C 192.93804 67.38427 192.93804 67.384327 192.93804 67.384385 L 192.93781 73.569708 C 192.93769 76.88329 190.25149 79.56943 186.93791 79.569483 L 97.390935 79.57095 C 94.077265 79.571007 91.391034 82.25728 91.391034 85.57095 L 91.391034 388.09394 C 91.391034 391.39507 94.057715 394.07612 97.35879 394.09386 L 226.37644 394.78716 C 229.67752 394.8049 232.3442 397.48595 232.3442 400.78708 L 232.3442 493.42925 C 232.3442 496.73035 229.67755 499.4114 226.3765 499.42916 L 97.358877 500.1237 C 94.057834 500.14146 91.39119 502.82248 91.391176 506.12357 L 91.39106 529.77343 C 91.391047 533.08714 94.077325 535.77345 97.391034 535.77346 C 97.391053 535.77346 97.39107 535.77346 97.39109 535.77346 L 199.82096 535.77296 C 203.13467 535.77295 205.82097 538.45923 205.82099 541.77294 C 205.82099 541.773 205.82099 541.77308 205.82099 541.77315 L 205.82084 546.65464 C 205.82074 549.95652 203.1528 552.6378 199.85096 552.65438 L 96.69789 553.1722 C 93.38422 553.18885 90.71145 555.8886 90.728084 559.20226 C 90.728193 559.22398 90.72842 559.2457 90.728765 559.26742 L 91.297165 595.05585 C 91.349097 598.3257 94.01001 600.95175 97.28028 600.96055 L 155.35214 601.11666 C 158.53473 601.1252 161.15693 603.61723 161.3274 606.79526 L 161.52812 610.5372 C 161.70561 613.84616 159.16706 616.67248 155.858105 616.84997 C 155.75109 616.8557 155.64393 616.85858 155.53676 616.85858 L 67.852627 616.85907 C 64.53892 616.8591 61.852612 614.1728 61.852594 610.8591 C 61.852594 610.85363 61.8526 610.84816 61.852616 610.8427 L 63.33552 67.36678 C 63.344543 64.059455 66.02821 61.383123 69.335548 61.38315 Z" fill="#fffbe6"/><path d="M 69.335548 61.38315 L 186.93809 61.38416 C 190.2518 61.384188 192.93807 64.070502 192.93804 67.38421 C 192.93804 67.38427 192.93804 67.384327 192.93804 67.384385 L 192.93781 73.569708 C 192.93769 76.88329 190.25149 79.56943 186.93791 79.569483 L 97.390935 79.57095 C 94.077265 79.571007 91.391034 82.25728 91.391034 85.57095 L 91.391034 388.09394 C 91.391034 391.39507 94.057715 394.07612 97.35879 394.09386 L 226.37644 394.78716 C 229.67752 394.8049 232.3442 397.48595 232.3442 400.78708 L 232.3442 493.42925 C 232.3442 496.73035 229.67755 499.4114 226.3765 499.42916 L 97.358877 500.1237 C 94.057834 500.14146 91.39119 502.82248 91.391176 506.12357 L 91.39106 529.77343 C 91.391047 533.08714 94.077325 535.77345 97.391034 535.77346 C 97.391053 535.77346 97.39107 535.77346 97.39109 535.77346 L 199.82096 535.77296 C 203.13467 535.77295 205.82097 538.45923 205.82099 541.77294 C 205.82099 541.773 205.82099 541.77308 205.82099 541.77315 L 205.82084 546.65464 C 205.82074 549.95652 203.1528 552.6378 199.85096 552.65438 L 96.69789 553.1722 C 93.38422 553.18885 90.71145 555.8886 90.728084 559.20226 C 90.728193 559.22398 90.72842 559.2457 90.728765 559.26742 L 91.297165 595.05585 C 91.349097 598.3257 94.01001 600.95175 97.28028 600.96055 L 155.35214 601.11666 C 158.53473 601.1252 161.15693 603.61723 161.3274 606.79526 L 161.52812 610.5372 C 161.70561 613.84616 159.16706 616.67248 155.858105 616.84997 C 155.75109 616.8557 155.64393 616.85858 155.53676 616.85858 L 67.852627 616.85907 C 64.53892 616.8591 61.852612 614.1728 61.852594 610.8591 C 61.852594 610.85363 61.8526 610.84816 61.852616 610.8427 L 63.33552 67.36678 C 63.344543 64.059455 66.02821 61.383123 69.335548 61.38315 Z" stroke="#fffbe6" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(86.8516 34.6328)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="24.438477">jpf-X</tspan></text><text transform="translate(122 91)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="16.516113">src</tspan></text><text transform="translate(122 253)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="26.27002">build</tspan></text><text transform="translate(122 226)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="43.403809">build.xml</tspan></text><text transform="translate(122 64)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="63.58838">jpf.properties</tspan></text><text transform="translate(140 397.094)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="blue" x="0" y="10" textLength="23.847656">X.jar</tspan></text><text transform="translate(140 415.094)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="blue" x="0" y="10" textLength="67.27295">X-classes.jar</tspan></text><text transform="translate(140 433.094)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="83.160645">X-annotations.jar</tspan></text><text transform="translate(149 109)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="23.842285">main</tspan></text><text transform="translate(149 127)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="27.516113">peers</tspan></text><text transform="translate(149 145)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="36.6792">classes</tspan></text><text transform="translate(149 163)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="56.879883">annotations</tspan></text><text transform="translate(149 181)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="23.22998">tests</tspan></text><text transform="translate(149 199)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="47.077637">examples</tspan></text><text transform="translate(122 460.094)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="12.831543">lib</tspan></text><text transform="translate(122 505.281)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="26.27539">tools</tspan></text><text transform="translate(122 583.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="16.494629">bin</tspan></text><text transform="translate(140 538.438)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="39.735352">RunJPF</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="38.516113" y="10" textLength="15.280762">.jar</tspan></text><text transform="translate(140 556.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="51.970703">RunAnt.jar</tspan></text><text transform="translate(140 601.438)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="11.617676">jpf</tspan></text><text transform="translate(140 619.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="15.291504">ant</tspan></text><text transform="translate(122 646.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="45.251465">nbproject</tspan></text><text transform="translate(140 664.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="53.1792">project.xml</tspan></text><text transform="translate(140 682.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="23.842285">ide-fi</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="23.842285" y="10" textLength="66.016113">le-targets.xml</tspan></text><text transform="translate(122 704.983)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="49.526855">.classpath</tspan></text><line x1="99.348286" y1="47.6328" x2="99" y2="730.842" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="130.445744" y1="104" x2="129.591" y2="206.401" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144" y1="115.48059" x2="130.350046" y2="115.465" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="133.637" x2="129.591" y2="133.674" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="151.818" x2="129.591" y2="151.855" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="170" x2="129.591" y2="170.037" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="188.182" x2="129.591" y2="188.219" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="206.364" x2="129.591" y2="206.401" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(149.091 271.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="23.842285">main</tspan></text><text transform="translate(149.091 289.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="27.516113">peers</tspan></text><text transform="translate(149.091 307.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="36.6792">classes</tspan></text><text transform="translate(149.091 325.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="56.879883">annotations</tspan></text><text transform="translate(149.091 343.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="23.22998">tests</tspan></text><text transform="translate(149.091 361.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="47.077637">examples</tspan></text><line x1="129.596" y1="266.09" x2="129.682" y2="368.491" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="277.5711" x2="129.60563" y2="277.555" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="295.727" x2="129.682" y2="295.764" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="313.908" x2="129.682" y2="313.945" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="332.09" x2="129.682" y2="332.127" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="350.272" x2="129.682" y2="350.309" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="368.454" x2="129.682" y2="368.491" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.091" y1="259.597" x2="99.5542" y2="259.652" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="466.795" x2="99.6451" y2="466.85" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="512.177" x2="99.6451" y2="512.232" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="590.608" x2="99.6451" y2="590.663" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="653.926" x2="99.6451" y2="653.981" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(122.091 723.075)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="34.240723">eclipse</tspan></text><line x1="117.273" y1="730.564" x2="99.736" y2="730.619" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(140.091 741.075)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="66.649902">run-jpf.launch</tspan></text><text transform="translate(250.984 58.6875)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="105.5957">JPF project properties fi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="105.5957" y="10" textLength="7.783203">le</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="22" textLength="58.911133">(runtime def: </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="58.911133" y="22" textLength="74.492188">native_classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="133.40332" y="22" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="138.95996" y="22" textLength="42.246094">classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="181.20605" y="22" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="186.7627" y="22" textLength="49.47754">sourcepath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="236.24023" y="22" textLength="3.3300781">)</tspan></text><text transform="translate(278.93 107.57)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="246.20117">host-VM executed classes (listeners, infrastructure etc.)</tspan></text><text transform="translate(279.023 125.664)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="229.52637">host-VM executed library classes (MJI native peers)</tspan></text><text transform="translate(279.117 144.258)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="135.60547">JPF executed library classes   </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="135.60547" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="145.60547" y="10" textLength="49.47754">sourcepath</tspan></text><text transform="translate(279.211 161.852)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="145.08301">JPF processed Java annotations</tspan></text><text transform="translate(279.305 179.945)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="70.585938">regression tests</tspan></text><text transform="translate(279.398 198.539)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="35.57129">demos  </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="35.57129" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="45.57129" y="10" textLength="49.47754">sourcepath</tspan></text><text transform="translate(251.641 225.133)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="71.694336">Ant build script (</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="71.694336" y="10" textLength="34.458008">compile</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="106.152344" y="10" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="111.708984" y="10" textLength="21.12793">build</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="132.836914" y="10" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="138.393555" y="10" textLength="16.118164">test</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="154.51172" y="10" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="160.06836" y="10" textLength="23.90625">clean</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="183.97461" y="10" textLength="3.3300781">)</tspan></text><text transform="translate(263.414 305.969)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="140.60059">temporary build artifacts (classfi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="140.60059" y="10" textLength="16.113281">les)</tspan></text><text transform="translate(278.734 397.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="210.08789">main host-VM executed project jar (main,peers </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="210.08789" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="220.08789" y="10" textLength="74.492188">native_classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="294.58008" y="10" textLength="3.3300781">)</tspan></text><text transform="translate(278.828 415.594)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="201.75781">JPF executed library jar (classes,annotations </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="201.75781" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="211.75781" y="10" textLength="42.246094">classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="254.0039" y="10" textLength="3.3300781">)</tspan></text><text transform="translate(278.922 433.188)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="201.20117">separate anotations jar (for JPF external SUT</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="201.02539" y="10" textLength="27.231445"> exec)</tspan></text><text transform="translate(252.016 460.781)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="97.26074">required runtime jars  </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="97.26074" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="107.26074" y="10" textLength="74.492188">native_classpath</tspan></text><text transform="translate(252.109 502.531)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="45.029297">build tools</tspan></text><text transform="translate(140.094 520.531)" fill="#404040"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="0" y="10" textLength="30.572266">ant.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="29.970703" y="10" textLength="41.572266">, junit.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="70.941406" y="10" textLength="15.280762">, ...</tspan></text><text transform="translate(140.188 477.898)" fill="#404040"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="0" y="10" textLength="35.45996">bcel.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="34.858398" y="10" textLength="27.510742">, antlr</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="61.767578" y="10" textLength="15.280762">.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="76.446777" y="10" textLength="12.2246094">, ..</tspan></text><text transform="translate(279.203 478.375)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="105.59082">(example) 3rd party jars</tspan></text><text transform="translate(250.531 253.578)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="58.916016">build artifacts</tspan></text><text transform="translate(264.836 379.477)" fill="blue"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="bold" fill="blue" x="0" y="10" textLength="119.46777">permanent build artifacts</tspan></text><text transform="translate(278.539 521.195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="105.59082">(example) 3rd party jars</tspan></text><text transform="translate(278.539 537.391)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="122.82715">JPF startup jar (executable)</tspan></text><text transform="translate(278.633 555.484)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="113.38379">JPF build jar (executable)</tspan></text><text transform="translate(252.203 583.625)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="28.891602">scripts</tspan></text><text transform="translate(279.391 600.984)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="83.90625">JPF startup script (</tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" x="83.90625" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="93.90625" y="10" textLength="36.123047">RunJPF</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="128.9209" y="10" textLength="17.22168">.jar)</tspan></text><text transform="translate(279.485 619.077)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="74.46289">JPF build script (</tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" x="74.46289" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="84.46289" y="10" textLength="50.576172">RunAnt.jar)</tspan></text><text transform="translate(252.391 704.602)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="88.930664">Eclipse project confi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="88.930664" y="10" textLength="36.137695">guration</tspan></text><line x1="117.185" y1="97.5308" x2="99.6479" y2="97.5858" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250.625 91.5547)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="67.807617">project sources</tspan></text><text transform="translate(227.414 34.7109)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="91.14746">project root directory</tspan></text><text transform="translate(69.6719 415.508) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" x="0" y="13" textLength="101.88623">binary distribution</tspan></text><text transform="translate(252.484 663.562)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="100.61035">NetBeans project confi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="100.61035" y="10" textLength="36.137695">guration</tspan></text><text transform="translate(252.578 681.656)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="51.694336">NetBeans fi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="51.694336" y="10" textLength="115.04883">le actions (JPF execution)</tspan></text><text transform="translate(252.672 740.961)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="88.38379">Eclipse launch confi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="88.38379" y="10" textLength="83.36426">gs (JPF execution)</tspan></text><text transform="translate(71.2344 731.805) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" x="0" y="13" textLength="68.643555">IDE support</tspan></text><path d="M 204.516 159.898 L 215.25 159.898 C 221.87742 159.898 227.25 165.27058 227.25 171.898 L 227.25 308.86879 C 227.25 315.4962 221.87742 320.86879 215.25 320.86879 C 215.13236 320.86879 215.01472 320.86706 214.89713 320.8636 L 211.37972 320.76012" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 231.134 319.703 L 241.868 319.703 C 248.49542 319.703 253.868 325.07558 253.868 331.703 L 253.868 401.31326 C 253.868 407.94068 248.49542 413.31326 241.868 413.31326 C 241.75051 413.31326 241.63303 413.31154 241.5156 413.3081 L 237.99773 413.20473" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(212.578 256.102) rotate(-90)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="0" y="10" textLength="37.903809">compile</tspan></text><text transform="translate(239.586 371.32) rotate(-90)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="0" y="10" textLength="23.240723">build</tspan></text><path d="M 198.548 409.218 L 209.282 409.218 C 215.90942 409.218 221.282 403.84542 221.282 397.218 L 221.282 363.27672 C 221.282 356.78689 216.12235 351.473 209.63534 351.28192 L 205.41171 351.1575" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(207.5 387.266) rotate(-90)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="0" y="10" textLength="17.72998">test</tspan></text></g></g></svg>
diff --git a/docs/graphics/listener-overview.svg b/docs/graphics/listener-overview.svg
new file mode 100644 (file)
index 0000000..8a58bd9
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="63 56 639 340" width="639pt" height="340pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 07:42:37 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="gray" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Apple Symbols" font-size="12" panose-1="2 0 0 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-73.242188" underline-thickness="48.828125" slope="0" x-height="392.57812" cap-height="546.38672" ascent="666.5039" descent="-250" font-weight="500"><font-face-src><font-face-name name="AppleSymbols"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id25_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id26_Graphic" filter="url(#Shadow)"/></g><g filter="url(#Shadow_2)"><path d="M 107.658 161.374 L 226.991 161.374 C 229.75242 161.374 231.991 163.61258 231.991 166.374 L 231.991 337.001 C 231.991 339.76242 229.75242 342.001 226.991 342.001 L 107.658 342.001 C 104.896576 342.001 102.658 339.76242 102.658 337.001 L 102.658 166.374 C 102.658 163.61258 104.896576 161.374 107.658 161.374 Z" fill="#ffffcd"/><path d="M 107.658 161.374 L 226.991 161.374 C 229.75242 161.374 231.991 163.61258 231.991 166.374 L 231.991 337.001 C 231.991 339.76242 229.75242 342.001 226.991 342.001 L 107.658 342.001 C 104.896576 342.001 102.658 339.76242 102.658 337.001 L 102.658 166.374 C 102.658 163.61258 104.896576 161.374 107.658 161.374 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_2)"><rect x="122.867" y="292.563" width="90" height="36" fill="white"/><rect x="122.867" y="292.563" width="90" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.867 303.563)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.987305" y="11" textLength="40.02539">Search</tspan></text></g><g filter="url(#Shadow_2)"><rect x="122.867" y="175.926" width="90" height="36" fill="white"/><rect x="122.867" y="175.926" width="90" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.867 186.926)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="31" y="11" textLength="18">VM</tspan></text></g><text transform="translate(119.191 239.52)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".49609375" y="11" textLength="22.007812">JPF</tspan></text><line x1="75.175" y1="136.649" x2="404.976" y2="136.649" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><rect x="106.7" y="74.525" width="121.25" height="36" fill="#ffe2dc"/><rect x="106.7" y="74.525" width="121.25" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(111.7 85.525)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.270508" y="11" textLength="96.708984">System under test</tspan></text><path d="M 274.98012 238.271 L 373.49575 238.271 C 381.07388 238.271 381.07388 238.271 381.07388 240.08095 L 381.07388 239.17598 C 384.86294 239.17598 384.86294 239.17598 384.86294 240.98592 L 384.86294 240.08095 C 388.652 240.08095 388.652 240.08095 388.652 241.8909 L 388.652 265.42025 C 388.652 267.2302 388.652 267.2302 381.07388 267.2302 L 282.55825 267.2302 C 274.98012 267.2302 274.98012 267.2302 274.98012 266.32522 C 271.19106 266.32522 271.19106 266.32522 271.19106 265.42025 C 267.402 265.42025 267.402 265.42025 267.402 263.6103 L 267.402 240.08095 C 267.402 238.271 267.402 238.271 274.98012 238.271 Z" fill="#bfffbe"/><path d="M 274.98012 238.271 L 373.49575 238.271 C 381.07388 238.271 381.07388 238.271 381.07388 240.08095 L 381.07388 263.6103 C 381.07388 265.42025 381.07388 265.42025 373.49575 265.42025 L 274.98012 265.42025 C 267.402 265.42025 267.402 265.42025 267.402 263.6103 L 267.402 240.08095 C 267.402 238.271 267.402 238.271 274.98012 238.271 M 381.07388 239.17598 C 384.86294 239.17598 384.86294 239.17598 384.86294 240.98592 L 384.86294 265.42025 C 384.86294 266.32522 384.86294 266.32522 377.28481 266.32522 L 278.76919 266.32522 C 271.19106 266.32522 271.19106 266.32522 271.19106 265.42025 M 384.86294 240.08095 C 388.652 240.08095 388.652 240.08095 388.652 241.8909 L 388.652 265.42025 C 388.652 267.2302 388.652 267.2302 381.07388 267.2302 L 282.55825 267.2302 C 274.98012 267.2302 274.98012 267.2302 274.98012 266.32522" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(274.827 244.23024)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="22.154688" y="11" textLength="49.359375">listeners</tspan></text><path d="M 213.367 193.9258 L 328.404 193.881 L 328.11532 227.87138" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 213.367 310.563 L 328.993 310.563 L 328.25879 277.62762" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="266.902" y1="252.75231" x2="222.76794" y2="252.90316" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="167.867" y1="292.063" x2="167.867" y2="221.826" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="167.867" y1="175.926" x2="167.50956" y2="120.92478" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(283.027 113.374)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".31054688" y="11" textLength="89.378906">executed by JPF</tspan></text><text transform="translate(268.418 144.524)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".46972656" y="11" textLength="118.06055">executed by host JVM</tspan></text><text transform="translate(260.108 312.942)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="97.38867">search event notifi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="97.38867" y="11" textLength="38.021484">cations</tspan></text><text transform="translate(252.61 176.262)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="112.740234">execution event notifi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="112.740234" y="11" textLength="38.021484">cations</tspan></text><text transform="translate(402.525 247.554)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".48046875" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="25.828125" y="11" textLength="30.691406">gured</tspan></text><text transform="translate(417.247 65.978)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="118.819336">- classLoaded (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="145.22363">- threadScheduled (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="138.62256">- threadNotified (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="13.2021484">- </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="13.2021484" y="62" textLength="118.819336">executeInstruction</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="132.021484" y="62" textLength="33.005371"> (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="75" textLength="13.2021484">- </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="13.2021484" y="75" textLength="125.42041">instructionExecuted</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="138.62256" y="75" textLength="33.005371"> (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="88" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="101" textLength="132.021484">- objectCreated (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="114" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="127" textLength="138.62256">- exceptionThrown(vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="140" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="153" textLength="198.03223">- choiceGeneratorAdvanced (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="166" textLength="33.005371">  ...</tspan></text><text transform="translate(353.977 331.014)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="158.42578">- stateAdvanced (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="178.229">- stateBacktracked (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="178.229">- propertyViolated (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="165.02686">- searchFinished (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="33.005371">  ...</tspan></text><text transform="translate(469.131 248.388)" fill="red"><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="10" textLength="184.83008">- +listener=&lt;listener-class&gt;</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="23" textLength="105.61719">- @JPFConfig(..)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="36" textLength="217.83545">- listener.autoload=&lt;annotations&gt;</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="49" textLength="138.62256">- jpf.addListener(..)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="62" textLength="33.005371">  ...</tspan></text><g id="id25_Graphic"><rect x="274.264" y="283.835" width="108.986" height="20.5102" fill="white"/><rect x="274.264" y="283.835" width="108.986" height="20.5102" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(279.264 286.5901)" fill="black"><tspan font-family="Apple Symbols" font-size="12" font-weight="500" x=".5291328" y="11" textLength="8.800781">≪</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="9.329914" y="11" textLength="80.71289">SearchListener</tspan><tspan font-family="Apple Symbols" font-size="12" font-weight="500" x="90.042805" y="11" textLength="8.4140625">≫</tspan></text></g><g id="id26_Graphic"><rect x="274.432" y="200.503" width="108.986" height="20.5102" fill="white"/><rect x="274.432" y="200.503" width="108.986" height="20.5102" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(279.432 203.2581)" fill="black"><tspan font-family="Apple Symbols" font-size="12" font-weight="500" x="10.539875" y="11" textLength="8.800781">≪</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="19.340656" y="11" textLength="60.691406">VMListener</tspan><tspan font-family="Apple Symbols" font-size="12" font-weight="500" x="80.032062" y="11" textLength="8.4140625">≫</tspan></text></g></g></g></svg>
diff --git a/docs/graphics/listeners.svg b/docs/graphics/listeners.svg
new file mode 100644 (file)
index 0000000..681d1ad
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="61 72 661 400" width="661pt" height="400pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2009-04-08 19:52:28 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker_2" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="gray"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id10_Graphic" filter="url(#Shadow)"/></g><g id="id10_Graphic"><rect x="166.578" y="85.4216" width="130.422" height="29.3676" fill="white"/><rect x="166.578" y="85.4216" width="130.422" height="29.3676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(171.578 87.1054)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="35.47223" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="25.866273" y="23" textLength="68.689453">JPFListener</tspan></text></g><rect x="72" y="197" width="171" height="98" fill="white"/><rect x="72" y="197" width="171" height="98" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(77 197)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="121.37695">executeInstruction(vm)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="119.384766">instructionExecuted(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="87.375">threadStarted(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="53" textLength="89.373047">objectCreated(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="67" textLength="121.38867">choiceGeneratorSet(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="81" textLength="156.75">choiceGeneratorAdvanced(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="95" textLength="16.669922">. . .</tspan></text><rect x="72" y="171" width="171" height="26" fill="white"/><rect x="72" y="171" width="171" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(77 171)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="55.76123" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="48.15918" y="23" textLength="64.68164">VMListener</tspan></text><rect x="261" y="197" width="135" height="84" fill="white"/><rect x="261" y="197" width="135" height="84" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(266 197)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="118.7168">searchStarted(search)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="94.04883">stateAdvanced(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="106.70508">stateBacktracked(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="53" textLength="52.02539">propertyV</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="51.814453" y="53" textLength="50.021484">iolated(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="67" textLength="96.035156">searchFinished(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="81" textLength="16.669922">. . .</tspan></text><rect x="261" y="171" width="135" height="26" fill="white"/><rect x="261" y="171" width="135" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(266 171)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="37.76123" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.146484" y="23" textLength="86.70703">SearchListener</tspan></text><rect x="594" y="197" width="117" height="28" fill="white"/><rect x="594" y="197" width="117" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(599 197)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="94.6875">check(search,vm)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="100.03125">getErrorMessage()</tspan></text><rect x="594" y="171" width="117" height="26" fill="white"/><rect x="594" y="171" width="117" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(599 171)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="28.76123" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="28.826172" y="23" textLength="49.347656">Property</tspan></text><rect x="594" y="284.737" width="117" height="28" fill="white"/><rect x="594" y="284.737" width="117" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(599 284.737)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="106.03711">check(search,vm) {}</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="16.669922">. . .</tspan></text><rect x="594" y="270.737" width="117" height="14" fill="white"/><rect x="594" y="270.737" width="117" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(599 270.737)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="6.4814453" y="11" textLength="94.03711">GenericProperty</tspan></text><rect x="180" y="373.263" width="171" height="42" fill="white"/><rect x="180" y="373.263" width="171" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(185 373.263)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="140.0625">instructionExecuted(vm) {}</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="130.06641">searchStarted(search) {}</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="16.669922">. . .</tspan></text><rect x="180" y="359.263" width="171" height="14" fill="white"/><rect x="180" y="359.263" width="171" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(185 359.263)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="34.489258" y="11" textLength="92.021484">ListenerAdapter</tspan></text><rect x="425.211" y="196.631" width="132.789" height="42" fill="white"/><rect x="425.211" y="196.631" width="132.789" height="42" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(430.211 196.631)" fill="#404040"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="#404040" x="0" y="11" textLength="120.058594">publishStart(publisher)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="#404040" x="0" y="25" textLength="98.04492">publishFinished(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="#404040" x="0" y="39" textLength="16.669922">. . .</tspan></text><rect x="425.211" y="170.631" width="132.789" height="26" fill="white"/><rect x="425.211" y="170.631" width="132.789" height="26" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(430.211 170.631)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="36.65573" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="#404040" x="5.3818047" y="23" textLength="112.02539">PublisherExtension</tspan></text><rect x="477" y="419" width="153" height="42" fill="white"/><rect x="477" y="419" width="153" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(482 419)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="140.0625">instructionExecuted(vm) {}</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="130.06641">searchStarted(search) {}</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="16.669922">. . .</tspan></text><rect x="477" y="405" width="153" height="14" fill="white"/><rect x="477" y="405" width="153" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(482 405)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".8154297" y="11" textLength="141.36914">PropertyListenerAdapter</tspan></text><line x1="652.5" y1="270.737" x2="652.5" y2="238.5" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="198" y1="360" x2="198" y2="310.5" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="306" y1="362.211" x2="306" y2="294.711" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="189" y1="169.526" x2="189" y2="129.026" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="279" y1="169.526" x2="279" y2="129.026" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 342 360 L 342 333 L 445.578 333 L 445.578 252.722" marker-end="url(#UMLInheritance_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="540" y1="405" x2="540" y2="252.722" marker-end="url(#UMLInheritance_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 513 405 L 513 306 L 333 306 L 332.68563 294.70577" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="612" y1="405" x2="612" y2="328.5" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 495 405 L 495 324 L 225 324 L 224.78847 310.49834" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/mji-call.svg b/docs/graphics/mji-call.svg
new file mode 100644 (file)
index 0000000..d5db418
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="13 12 553 462" width="553pt" height="462pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-24 04:08:50 +0000</dc:date></metadata><defs><font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><font-face font-family="Monaco" font-size="9" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="588.0188" height="768.0188"/><g><title>Layer 1</title><text transform="translate(332 21.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="57.609375">package </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="57.609375" y="12" textLength="36.00586">x.y.z</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="93.615234" y="12" textLength="7.201172">;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="43.20703">class </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="43.20703" y="28" textLength="7.201172">C</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="50.408203" y="28" textLength="14.402344"> {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="36.00586">  ...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="14.402344">  </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="14.402344" y="60" textLength="158.42578">native int foo (int p)</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="172.82812" y="60" textLength="7.201172">;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="7.201172">}</tspan></text><text transform="translate(84 352.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="43.20703">class </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="43.20703" y="12" textLength="79.21289">JPF_x_y_z_C</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="122.41992" y="12" textLength="14.402344"> {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="36.00586">  ...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="14.402344">  </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="14.402344" y="44" textLength="432.0703">public static int foo__I__I (MJIEnv env, int thisRef, int p)</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="446.47266" y="44" textLength="14.402344"> {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="324.05273">    int d = env.getIntField(thisRef, &quot;data&quot;);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="43.20703">    ..</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="92" textLength="21.603516">  }</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="108" textLength="7.201172">}</tspan></text><text transform="translate(157 51.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="21.603516">...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="122.41992">int a = c.foo(3);</tspan></text><text transform="translate(100 82.125)" fill="black"><tspan font-family="Monaco" font-size="9" font-weight="500" x="0" y="9" textLength="16.202637">...</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" x="0" y="21" textLength="37.806152">aload_1</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" x="0" y="33" textLength="37.806152">icont_3</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" x="0" y="45" textLength="86.41406">invokevirtual ..</tspan></text><text transform="translate(39 215.125)" fill="gray"><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="12" textLength="230.4375">executeMethod (ThreadInfo ti..){</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="28" textLength="216.03516">  MJIEnv env = ti.getMJIEnv();</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="44" textLength="237.63867">  Object[] args = getArguments();</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="60" textLength="28.804688">  ..</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="76" textLength="201.63281">  mth.invoke(peerCls, args);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="92" textLength="28.804688">  ..</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="108" textLength="7.201172">}</tspan></text><text transform="translate(328 198.125)" fill="gray"><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="12" textLength="108.01758">ClassInfo (..){</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="28" textLength="223.23633">  peerCls = loadNativePeer(..);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="44" textLength="28.804688">  ..</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="60" textLength="7.201172">}</tspan></text><rect x="314.25" y="168.5" width="103.75" height="14" fill="white"/><rect x="314.25" y="168.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(319.25 168.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="90.046875">executeMethod()</tspan></text><rect x="314.25" y="154.5" width="103.75" height="14" fill="white"/><rect x="314.25" y="154.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(319.25 154.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="41.34961">peerCls</tspan></text><rect x="314.25" y="140.5" width="103.75" height="14" fill="white"/><rect x="314.25" y="140.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(319.25 140.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.869141" y="11" textLength="54.01172">ClassInfo</tspan></text><rect x="186.25" y="187.5" width="103.75" height="14" fill="white"/><rect x="186.25" y="187.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(191.25 187.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="90.046875">executeMethod()</tspan></text><rect x="186.25" y="173.5" width="103.75" height="14" fill="white"/><rect x="186.25" y="173.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(191.25 173.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="46.02539">methods</tspan></text><rect x="186.25" y="159.5" width="103.75" height="14" fill="white"/><rect x="186.25" y="159.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(191.25 159.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="15.855469" y="11" textLength="62.039062">NativePeer</tspan></text><path d="M 323 53 C 308.0015 50.3336 291.9986 45.9999 278 45 C 264.0014 44.0001 250.6655 44.0003 239 47 C 230.64732 49.147832 223.66006 53.688744 216.57229 58.05222" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 175 89 C 170.0005 93.3329 164.6662 96.83385 160 102 C 157.38073 104.899905 154.97109 108.325474 152.59469 111.83394" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 139 136 C 127.0012 148.9987 119.3317 161.83465 103 175 C 86.6683 188.16535 53.49875 203.50115 41 215 C 28.50125 226.49885 25.50025 234.001 28 244 C 29.9417 251.7668 40.130086 259.93767 48.955984 268.04108" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 88 300 C 94.3327 309.3324 111.49955 319.6675 107 328 C 102.50045 336.3325 67.9993 342.3341 61 350 C 54.0007 357.6659 60.16715 366.83405 65 374 C 68.37733 379.00777 75.174067 383.2026 81.805417 387.43634" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="265.25" y="295.5" width="103.75" height="42" fill="white"/><rect x="265.25" y="295.5" width="103.75" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(270.25 295.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="65.35547">getXField(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="64.68164">setXField(..)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="10.001953">...</tspan></text><rect x="265.25" y="281.5" width="103.75" height="14" fill="white"/><rect x="265.25" y="281.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(270.25 281.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="54.041016">threadInfo</tspan></text><rect x="265.25" y="267.5" width="103.75" height="14" fill="white"/><rect x="265.25" y="267.5" width="103.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(270.25 267.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="25.86914" y="11" textLength="42.01172">MJIEnv</tspan></text><rect x="393.25" y="266.5" width="90" height="14" fill="white"/><rect x="393.25" y="266.5" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(398.25 266.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="19.347656">env</tspan></text><rect x="393.25" y="252.5" width="90" height="14" fill="white"/><rect x="393.25" y="252.5" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(398.25 252.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.0009766" y="11" textLength="61.998047">ThreadInfo</tspan></text><line x1="394" y1="275" x2="378.9" y2="275" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="314" y1="163" x2="298.9" y2="163" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 490 376 C 500.3323 365.0011 512.6675 354.9988 521 343 C 529.3325 331.0012 538.3335 317.332 540 304 C 541.6665 290.668 535.6662 273.9989 531 263 C 527.83756 255.54567 523.1433 250.53967 518.4748 245.49341" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 441 89 C 458.3316 96.9992 481.3345 102.6677 493 113 C 504.6655 123.3323 510.0001 135.16825 511 151 C 511.83488 164.21889 505.69802 181.85666 501.32146 198.37727" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(482 115.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="10.555176" y="14" textLength="24.889648">JPF</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="7.051758" y="31" textLength="31.896484">class</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".4243164" y="48" textLength="45.151367">loading</tspan></text><text transform="translate(28 157.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="19.555176" y="14" textLength="24.889648">JPF</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="8.6518555" y="31" textLength="46.69629">method</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".4794922" y="48" textLength="63.041016">invocation</tspan></text><path d="M 422 412 C 431.3324 409.6669 443.50065 409.16625 450 405 C 456.49935 400.83375 462.3332 393.49935 461 387 C 459.6668 380.50065 455.6653 373.9992 442 366 C 430.2377 359.11475 407.60562 350.7459 388.13989 342.8098" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(400 317.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="9.555176" y="14" textLength="24.889648">JPF</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="3.3208008" y="31" textLength="37.358398">object</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".21386719" y="48" textLength="43.572266">access</tspan></text><text transform="translate(82 22.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".4897461" y="14" textLength="112.02051">JPF (model) class</tspan></text><text transform="translate(307 445.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".21386719" y="14" textLength="106.572266">JVM (Java) class</tspan></text><line x1="24" y1="133" x2="541" y2="133" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="10,3,2,3"/><text transform="translate(109 301.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".41748047" y="14" textLength="52.910156">Java refl</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="53.327637" y="14" textLength="62.254883">ection call</tspan></text><text transform="translate(488 310.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".09667969" y="14" textLength="19.448242">refl</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="19.544922" y="14" textLength="37.358398">ection</tspan></text></g></g></svg>
diff --git a/docs/graphics/mji-functions.svg b/docs/graphics/mji-functions.svg
new file mode 100644 (file)
index 0000000..bac9b5c
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="20 17 583 414" width="583pt" height="414pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-24 04:01:26 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="SharpArrow_Marker" viewBox="-6 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -5 0 L 3 3 L 0 0 L 0 0 L 3 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="SharpArrow_Marker_2" viewBox="-4 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 5 0 L -3 -3 L 0 0 L 0 0 L -3 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="57" y="164" width="451" height="55" fill="red" fill-opacity=".11"/><rect x="57" y="164" width="451" height="55" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="288" y1="152.9" x2="288" y2="235" marker-start="url(#SharpArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="180" y1="155" x2="180" y2="228.1" marker-end="url(#SharpArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="37" y1="192" x2="540" y2="192" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="10,3,2,3"/><text transform="translate(34 259.494)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="43.20703">class </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="43.20703" y="12" textLength="122.41992">JPF_x_y_z_MyClass</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="165.62695" y="12" textLength="14.402344"> {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="144.02344">  public static int </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="43.20703">      </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="43.20703" y="44" textLength="331.2539">foo__ILjava_lang_String_2__Ljava_lang_String_2</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="374.46094" y="44" textLength="180.0293"> (MJIEnv env, int objRef,</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="518.48438">                                                      int i, int sRef) {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="295.24805">    String s = env.getStringObject(sRef);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="92" textLength="43.20703">    ..</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="108" textLength="230.4375">    int ref = env.newString(..);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="124" textLength="108.01758">    return ref;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="140" textLength="21.603516">  }</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="156" textLength="7.201172">}</tspan></text><text transform="translate(83 31.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="57.609375">package </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="57.609375" y="12" textLength="36.00586">x.y.z</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="93.615234" y="12" textLength="7.201172">;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="43.20703">class </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="43.20703" y="28" textLength="50.408203">MyClass</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="93.615234" y="28" textLength="14.402344"> {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="28.804688">  ..</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="115.21875">  native String </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="115.21875" y="60" textLength="21.603516">foo</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="136.822266" y="60" textLength="14.402344"> (</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="151.22461" y="60" textLength="21.603516">int</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="172.82812" y="60" textLength="28.804688"> i, </tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="red" x="201.63281" y="60" textLength="43.20703">String</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="244.83984" y="60" textLength="28.804688"> s);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="7.201172">}</tspan></text><path d="M 252 174 L 321 174 C 323.76142 174 326 176.23858 326 179 L 326 203 C 326 205.76142 323.76142 208 321 208 L 252 208 C 249.23858 208 247 205.76142 247 203 L 247 179 C 247 176.23858 249.23858 174 252 174 Z" fill="white"/><path d="M 252 174 L 321 174 C 323.76142 174 326 176.23858 326 179 L 326 203 C 326 205.76142 323.76142 208 321 208 L 252 208 C 249.23858 208 247 205.76142 247 203 L 247 179 C 247 176.23858 249.23858 174 252 174 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(252 183)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="12.896484" y="12" textLength="43.20703">MJIEnv</tspan></text><text transform="translate(351 169.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".43115234" y="14" textLength="73.137695">JPF objects</tspan></text><text transform="translate(349 195.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".08984375" y="14" textLength="77.820312">Java objects</tspan></text><path d="M 143 174 L 222 174 C 224.76142 174 227 176.23858 227 179 L 227 203 C 227 205.76142 224.76142 208 222 208 L 143 208 C 140.23858 208 138 205.76142 138 203 L 138 179 C 138 176.23858 140.23858 174 143 174 Z" fill="white"/><path d="M 143 174 L 222 174 C 224.76142 174 227 176.23858 227 179 L 227 203 C 227 205.76142 224.76142 208 222 208 L 143 208 C 140.23858 208 138 205.76142 138 203 L 138 179 C 138 176.23858 140.23858 174 143 174 Z" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(143 183)" fill="gray"><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="3.4941406" y="12" textLength="72.01172">NativePeer</tspan></text><text transform="translate(363 46.2916)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".20019531" y="14" textLength="85.59961">JPF executed</tspan></text><text transform="translate(388 380.062)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".46923828" y="14" textLength="112.061523">host VM executed</tspan></text><text transform="translate(110 116.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="86.05078">- method lookup</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="25" textLength="123.38672">- parameter conversion</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="39" textLength="61.365234">- invocation</tspan></text><text transform="translate(299 225.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="13.330078">- fi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="13.330078" y="11" textLength="56.695312">eld access</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="25" textLength="100.716797">- object conversion</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="39" textLength="119.35547">- JPF intrinsics access</tspan></text><text transform="translate(257 26.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".0166015625" y="14" textLength="4.9697266">&quot;</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="4.986328" y="14" textLength="38.13086">Model</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="43.117188" y="14" textLength="43.86621">&quot; Class</tspan></text><text transform="translate(248 404.125)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x=".45458984" y="14" textLength="4.9697266">&quot;</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="5.4243164" y="14" textLength="69.254883">NativePeer</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="blue" x="74.6792" y="14" textLength="43.86621">&quot; Class</tspan></text><text transform="translate(336 146.125)" fill="red"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" fill="red" x=".0546875" y="14" textLength="174.89062">MJI - &quot;Model Java Interface&quot;</tspan></text></g></g></svg>
diff --git a/docs/graphics/mji-mangling.svg b/docs/graphics/mji-mangling.svg
new file mode 100644 (file)
index 0000000..7e59270
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="62 86 481 369" width="481pt" height="369pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 21:54:02 +0000</dc:date></metadata><defs><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="red"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="fuchsia"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="#ff8000"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576" height="734"/><g><title>Layer 1</title><text transform="translate(76 177.125)" fill="black"><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="11" textLength="57.609375">package </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="57.609375" y="11" textLength="21.603516">x.y</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="79.21289" y="11" textLength="7.201172">;</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="39" textLength="43.20703">class </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="red" x="43.20703" y="39" textLength="50.408203">MyClass</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="93.615234" y="39" textLength="14.402344"> {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="53" textLength="93.615234">  native int </tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="67" textLength="36.00586">     </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="purple" x="36.00586" y="67" textLength="21.603516">foo</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="57.609375" y="67" textLength="14.402344"> (</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="#ff8000" x="72.01172" y="67" textLength="108.01758">int i, String s</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="180.0293" y="67" textLength="14.402344">);</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="81" textLength="7.201172">}</tspan></text><text transform="translate(309 191.125)" fill="black"><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="11" textLength="72.01172">class JPF_</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="72.01172" y="11" textLength="21.603516">x_y</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="93.615234" y="11" textLength="7.201172">_</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="red" x="100.816406" y="11" textLength="50.408203">MyClass</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="151.22461" y="11" textLength="14.402344"> {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="39" textLength="144.02344">  public static int </tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="53" textLength="28.804688">    </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="purple" x="28.804688" y="53" textLength="21.603516">foo</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="50.408203" y="53" textLength="165.62695">__ILjava_lang_String_2 </tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="67" textLength="208.83398">     (MJIEnv env, int objref,</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="81" textLength="43.20703">      </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="#ff8000" x="43.20703" y="81" textLength="108.01758">int i, int sRef</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="151.22461" y="81" textLength="7.201172">)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="95" textLength="57.609375">    {..}</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="109" textLength="7.201172">}</tspan></text><path d="M 148 176 C 168.6646 166.6676 188.16885 153.6661 210 148 C 231.83115 142.3339 256.83555 139.83355 279 142 C 301.16445 144.16645 325.0018 153.0008 343 161 C 357.56026 167.47123 367.7608 176.12565 378.89088 184.31325" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 161 202 C 170.6657 191.0011 177.3346 179.49895 190 169 C 202.6654 158.50105 220.0017 145.83265 237 139 C 253.9983 132.16735 274.50175 128.3333 292 128 C 309.49825 127.6667 325.6683 132.0005 342 137 C 358.3317 141.9995 375.83475 149.83415 390 158 C 401.11917 164.40987 409.98157 172.25904 419.24353 179.85215" marker-end="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 126 250 C 149.6643 256.666 172.6691 267.0003 197 270 C 221.3309 272.9997 249.83555 272.16625 272 268 C 290.619 264.50019 305.24373 256.05959 320.90548 248.90456" marker-end="url(#FilledArrow_Marker_3)" stroke="fuchsia" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 196 254 C 211.3318 260.3327 226.0016 268.83375 242 273 C 257.9984 277.16625 275.0017 279.49995 292 279 C 305.83104 278.5932 320.10685 274.87584 334.28319 271.88872" marker-end="url(#FilledArrow_Marker_4)" stroke="#ff8000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="288" y1="97" x2="288" y2="331" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="16,9,1,9"/><text transform="translate(144 103.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="0" y="14" textLength="77.027344">Model Class</tspan></text><text transform="translate(359 103.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="0" y="14" textLength="112.041016">Native Peer Class</tspan></text><text transform="translate(332 310.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="11" textLength="96.708984">model parameters</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="25" textLength="94.61133">(refs become &apos;int&apos;)</tspan></text><text transform="translate(384 346.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="11" textLength="83.35547">MJI parameters</tspan></text><path d="M 452 279 L 452 318 L 437 318" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 491 269 L 491 354 L 476 354" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 532 248 L 532 390 L 517 390" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(372 382.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="11" textLength="133.39453">JNI conformant mangling</tspan></text><text transform="translate(145 319.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x=".29101562" y="11" textLength="42.708984">boolean</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="20.318359" y="25" textLength="22.68164">byte</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="19.65625" y="39" textLength="23.34375">char</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="16.322266" y="53" textLength="26.677734">short</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="30.326172" y="67" textLength="12.673828">int</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="20.3125" y="81" textLength="22.6875">long</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="20.318359" y="95" textLength="6">fl</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="26.31836" y="95" textLength="16.681641">oat</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="6.9648438" y="109" textLength="36.035156">double</tspan></text><text transform="translate(201 320.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="7.330078">Z</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="8.0039062">B</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="8.6660156">C</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="53" textLength="8.0039062">S</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="67" textLength="3.3339844">I</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="81" textLength="6">J</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="95" textLength="7.330078">F</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="109" textLength="8.6660156">D</tspan></text><text transform="translate(257 336.125)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="21.603516">&apos;_&apos;</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="21.603516">&apos;;&apos;</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="21.603516">&apos;[&apos;</tspan></text><text transform="translate(291 337.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="13.347656">_1</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="13.347656">_2</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="13.347656">_3</tspan></text><text transform="translate(224 383.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="36.697266">&lt;type&gt;</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="36.697266" y="11" textLength="3.3339844"> </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="40.03125" y="11" textLength="14.402344">[]</tspan></text><text transform="translate(289 383.125)" fill="black"><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="11" textLength="7.201172">[</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="7.201172" y="11" textLength="36.697266">&lt;type&gt;</tspan></text><text transform="translate(250 400.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="15.333984">x.y</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="14.449219" y="11" textLength="10.6640625">.Z</tspan></text><text transform="translate(291 400.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="52.69922">Lx_y_Z_2</tspan></text><text transform="translate(224 417.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="36.697266">&lt;func&gt;</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="36.697266" y="11" textLength="17.994141"> (..)</tspan></text><text transform="translate(291 417.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="11" textLength="36.697266">&lt;func&gt;</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="36.697266" y="11" textLength="14.402344">__</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="51.09961" y="11" textLength="63.38086">&lt;signature&gt;</tspan></text></g></g></svg>
diff --git a/docs/graphics/new-testing.svg b/docs/graphics/new-testing.svg
new file mode 100644 (file)
index 0000000..4254ad1
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="10 15 718 319" width="718pt" height="319pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-05 00:34:03 +0000</dc:date></metadata><defs><font-face font-family="Courier" font-size="10" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Courier" font-size="10" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="756" height="553"/><g><title>Layer 1</title><text transform="translate(339.4 252.055)" fill="blue"><tspan font-family="Courier" font-size="10" font-weight="bold" fill="blue" x="0" y="10" textLength="30.004883">@Test</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="30.004883" y="10" textLength="78.012695"> public void </tspan><tspan font-family="Courier" font-size="10" font-weight="bold" fill="blue" x="108.01758" y="10" textLength="30.004883">testX</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="138.02246" y="10" textLength="24.003906">() {</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="22" textLength="216.03516">  if (verifyNoPropertyViolation()) {</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="34" textLength="24.003906">    </tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="red" x="24.003906" y="34" textLength="156.02539">String s = &quot;one&quot; + &quot; two&quot;;</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="red" x="0" y="46" textLength="186.03027">    assert &quot;one two&quot;.equals(s);</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="58" textLength="18.00293">  }</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="70" textLength="6.0009766">}</tspan></text><path d="M 361.58823 277.92 L 528.48 277.92 L 528.48 299.92 L 361.58823 299.92 Z" stroke="#fd7673" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 196.644 234.841 L 314.109 234.841 C 317.4227 234.841 320.109 237.52729 320.109 240.841 L 320.109 307.503 C 320.109 310.8167 317.4227 313.503 314.109 313.503 L 196.644 313.503 C 193.33029 313.503 190.644 310.8167 190.644 307.503 L 190.644 240.841 C 190.644 237.52729 193.33029 234.841 196.644 234.841 Z" fill="#e9ffe4"/><path d="M 196.644 234.841 L 314.109 234.841 C 317.4227 234.841 320.109 237.52729 320.109 240.841 L 320.109 307.503 C 320.109 310.8167 317.4227 313.503 314.109 313.503 L 196.644 313.503 C 193.33029 313.503 190.644 310.8167 190.644 307.503 L 190.644 240.841 C 190.644 237.52729 193.33029 234.841 196.644 234.841 Z" stroke="#aeffa8" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 85.6174 26.126 L 364.9384 26.126 C 368.2521 26.126 370.9384 28.812292 370.9384 32.126 L 370.9384 199.694 C 370.9384 203.00771 368.2521 205.694 364.9384 205.694 L 85.6174 205.694 C 82.30369 205.694 79.6174 203.00771 79.6174 199.694 L 79.6174 32.126 C 79.6174 28.812292 82.30369 26.126 85.6174 26.126 Z" fill="#fff8e0"/><path d="M 85.6174 26.126 L 364.9384 26.126 C 368.2521 26.126 370.9384 28.812292 370.9384 32.126 L 370.9384 199.694 C 370.9384 203.00771 368.2521 205.694 364.9384 205.694 L 85.6174 205.694 C 82.30369 205.694 79.6174 203.00771 79.6174 199.694 L 79.6174 32.126 C 79.6174 28.812292 82.30369 26.126 85.6174 26.126 Z" stroke="#ffcf9c" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(382.995 68.2183)" fill="blue"><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="10" textLength="48.007812">boolean </tspan><tspan font-family="Courier" font-size="10" font-weight="bold" fill="blue" x="48.007812" y="10" textLength="150.02441">verifyNoPropertyViolation</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="198.03223" y="10" textLength="132.021484"> (String... jpfArgs) {</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="22" textLength="30.004883">  ...</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="34" textLength="282.0459">  args = append(jpfArgs, caller.getClassName(),</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="46" textLength="294.04785">                         caller.getMethodName());</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="58" textLength="36.00586">    ..</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="70" textLength="216.03516">    JPF jpf = createAndRunJPF(args);</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="82" textLength="42.006836">    ...</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="94" textLength="210.03418">    errors = jpf.getSearchErrors();</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="106" textLength="156.02539">    if (!errors.isEmpty())</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="118" textLength="210.03418">      throw new AssertionError(..);</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="130" textLength="42.006836">    ...</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="142" textLength="276.04492">  return false; // -&gt; don&apos;t execute test block</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="154" textLength="6.0009766">}</tspan></text><text transform="translate(24.5953 63.4089)" fill="blue"><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="10" textLength="48.007812">boolean </tspan><tspan font-family="Courier" font-size="10" font-weight="bold" fill="blue" x="48.007812" y="10" textLength="150.02441">verifyNoPropertyViolation</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="198.03223" y="10" textLength="30.004883">(..){</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="22" textLength="84.01367">  return true;</tspan><tspan font-family="Courier" font-size="10" font-weight="500" fill="blue" x="0" y="34" textLength="6.0009766">}</tspan></text><rect x="251.28" y="45.6337" width="90" height="11" fill="white"/><rect x="251.28" y="45.6337" width="90" height="11" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.28 45.6337)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="23.497559">start()</tspan></text><rect x="251.28" y="34.6337" width="90" height="11" fill="white"/><rect x="251.28" y="34.6337" width="90" height="11" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.28 34.6337)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="bold" x="20.993652" y="9" textLength="38.012695">JPFShell</tspan></text><rect x="231.548" y="95.3416" width="129.465" height="88" fill="white"/><rect x="231.548" y="95.3416" width="129.465" height="88" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(236.548 95.3416)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="18.505371">runT</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.507812" y="9" textLength="71.507812">estsOfThisClass()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="20" textLength="79.532227">createAndRunJPF()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="31" textLength="7.501465">...</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="42" textLength="73.023926">verifyNoPropertyV</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="72.865723" y="42" textLength="34.514648">iolation()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="53" textLength="61.519043">verifyPropertyV</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="61.36084" y="53" textLength="34.514648">iolation()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="64" textLength="110.55762">verifyUnhandledException()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="75" textLength="85.012207">verifyAssertionError()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="86" textLength="7.501465">...</tspan></text><rect x="231.548" y="84.3416" width="129.465" height="11" fill="white"/><rect x="231.548" y="84.3416" width="129.465" height="11" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(236.548 84.3416)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="bold" x="42.558672" y="9" textLength="5.4975586">T</tspan><tspan font-family="Helvetica" font-size="9" font-weight="bold" x="47.392656" y="9" textLength="29.513672">estJPF</tspan></text><rect x="208.904" y="253.802" width="90" height="22" fill="white"/><rect x="208.904" y="253.802" width="90" height="22" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(213.904 253.802)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="26.503418">testX()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="20" textLength="7.501465">...</tspan></text><rect x="208.904" y="242.802" width="90" height="11" fill="white"/><rect x="208.904" y="242.802" width="90" height="11" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(213.904 242.802)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="bold" x="1.3193359" y="9" textLength="65.01709">MyJPFProjectT</tspan><tspan font-family="Helvetica" font-size="9" font-weight="bold" x="65.67285" y="9" textLength="13.0078125">est</tspan></text><line x1="296.28021" y1="84.3416" x2="296.28013" y2="70.1337" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="253.904" y1="242.802" x2="253.904" y2="196.842" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(96.2759 34.6337)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".32763672" y="10" textLength="33.344727">jpf-core</tspan></text><text transform="translate(202.017 293.506)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".20458984" y="10" textLength="80.59082">tested JPF project</tspan></text><rect x="87.5524" y="117.184" width="129.465" height="44" fill="white"/><rect x="87.5524" y="117.184" width="129.465" height="44" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(92.5524 117.184)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="73.023926">verifyNoPropertyV</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="72.865723" y="9" textLength="34.514648">iolation()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="20" textLength="61.519043">verifyPropertyV</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="61.36084" y="20" textLength="34.514648">iolation()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="31" textLength="110.55762">verifyUnhandledException()</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="42" textLength="85.012207">verifyAssertionError()</tspan></text><rect x="87.5524" y="106.184" width="129.465" height="11" fill="white"/><rect x="87.5524" y="106.184" width="129.465" height="11" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(92.5524 106.184)" fill="#4f4f4f"><tspan font-family="Helvetica" font-size="9" font-weight="bold" fill="#4f4f4f" x="26.799883" y="9" textLength="37.015137">JPF_.._T</tspan><tspan font-family="Helvetica" font-size="9" font-weight="bold" fill="#4f4f4f" x="63.151445" y="9" textLength="29.513672">estJPF</tspan></text><line x1="217.0174" y1="133.75498" x2="231.548" y2="133.77092" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.285 89.2183)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".26123047" y="10" textLength="49.47754">native peer</tspan></text><text transform="translate(538.274 280.529)" fill="red"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="red" x=".20214844" y="10" textLength="45.576172">code verifi</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="red" x="45.77832" y="10" textLength="45.01953">ed by JPF</tspan></text><text transform="translate(39.189 166.149)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="11" textLength="121.40039">executed by JPF when</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="25" textLength="62.70703">running test</tspan></text><text transform="translate(355.357 34.6337)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="11" textLength="118.734375">executed outside JPF </tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="0" y="25" textLength="111.36914">(starting JPF on test)</tspan></text></g></g></svg>
diff --git a/docs/graphics/por-mark.svg b/docs/graphics/por-mark.svg
new file mode 100644 (file)
index 0000000..f47b060
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="109 71 356 231" width="356pt" height="231pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 07:35:36 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="blue"><g><path d="M 5.5 0 L 0 -2.0625 L 0 2.0625 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="black"><g><path d="M 5.5 0 L 0 -2.0625 L 0 2.0625 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="red"><g><path d="M 5.5 0 L 0 -2.0625 L 0 2.0625 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576" height="734"/><g><title>Layer 1</title><g><xl:use xl:href="#id30_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id18_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id20_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id21_Graphic" filter="url(#Shadow)"/></g><path d="M 143.59697 197.31011 C 114.34375 186.125 126.0092 91.96476 172.67462 108.03125 C 177.00414 76.712532 231.26975 81.795915 230.91499 108.03125 C 264.94118 74.475928 308.42462 141.38457 279.25828 174.93989 C 314.25644 191.20838 278.81664 278.8608 250.09375 264.21875 C 247.79505 288.62357 196.44716 297.1639 191.94026 264.21875 C 162.86442 299.40259 102.23666 245.30548 143.59697 197.31011 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id30_Graphic"><circle cx="192" cy="105" r="9.0000144" fill="white"/><circle cx="192" cy="105" r="9.0000144" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><circle cx="191" cy="157" r="9.0000144" fill="white"/><circle cx="191" cy="157" r="9.0000144" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.8 150)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="8.0039062">X</tspan></text><circle cx="238" cy="163" r="9.0000144" fill="white"/><circle cx="238" cy="163" r="9.0000144" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(235.8 156)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="8.0039062">X</tspan></text><circle cx="193" cy="215" r="9.0000144" fill="white"/><circle cx="193" cy="215" r="9.0000144" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(190.8 208)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">1</tspan></text><circle cx="215" cy="243" r="9.0000144" fill="white"/><circle cx="215" cy="243" r="9.0000144" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(212.8 236)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="8.0039062">X</tspan></text><circle cx="178" cy="258" r="9.0000144" fill="white"/><circle cx="178" cy="258" r="9.0000144" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(175.8 251)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="8.0039062">X</tspan></text><line x1="206.19382" y1="246.57008" x2="193.66406" y2="251.64973" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="230" cy="199" r="9.0000144" fill="white"/><circle cx="230" cy="199" r="9.0000144" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(227.8 192)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="6.673828">1</tspan></text><circle cx="251" cy="227" r="9.0000144" fill="white"/><circle cx="251" cy="227" r="9.0000144" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(248.8 220)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="6.673828">2</tspan></text><line x1="221.27816" y1="202.77161" x2="208.51399" y2="208.29126" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="198.86986" y1="222.47071" x2="204.55829" y2="229.71052" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="242.31658" y1="230.85931" x2="230.44564" y2="236.1353" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="224" cy="130" r="9.0000144" fill="white"/><circle cx="224" cy="130" r="9.0000144" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.8 123)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="8.0039062">X</tspan></text><line x1="199.48694" y1="110.849185" x2="210.68166" y2="119.595074" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="216.64689" y1="136.01617" x2="204.08037" y2="146.29784" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="227.71114" y1="138.747725" x2="231.39875" y2="147.43998" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id18_Graphic"><rect x="342.5" y="153.125" width="65" height="13" fill="white"/><rect x="342.5" y="153.125" width="65" height="13" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(347.5 153.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".29541016" y="10" textLength="34.22998">static fi</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="34.52539" y="10" textLength="20.179199">elds</tspan></text></g><path d="M 330.0725 188.69105 C 307.04069 182.125 316.2252 126.84966 352.9661 136.28125 C 356.37484 117.89607 399.09956 120.880195 398.82025 136.28125 C 425.60995 116.58311 459.8456 155.86081 436.88218 175.55895 C 464.43714 185.10912 436.53446 236.56415 413.92019 227.96875 C 412.11036 242.29523 371.68283 247.3087 368.13443 227.96875 C 345.24227 248.62289 297.50846 216.866 330.0725 188.69105 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id20_Graphic"><rect x="343.5" y="179.125" width="23" height="13" fill="white"/><rect x="343.5" y="179.125" width="23" height="13" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.5 179.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".08154297" y="10" textLength="12.836914">T1</tspan></text></g><g id="id21_Graphic"><rect x="343.5" y="203.125" width="23" height="13" fill="white"/><rect x="343.5" y="203.125" width="23" height="13" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.5 203.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".08154297" y="10" textLength="12.836914">T2</tspan></text></g><line x1="342.00935" y1="153.1525" x2="240.58475" y2="133.2538" marker-end="url(#FilledArrow_Marker_3)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="343.00284" y1="186.9087" x2="246.80439" y2="197.20193" marker-end="url(#FilledArrow_Marker_3)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="343.00684" y1="211.62867" x2="267.66967" y2="224.21505" marker-end="url(#FilledArrow_Marker_3)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(387.5 190.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".49023438" y="11" textLength="40.019531">root set</tspan></text><text transform="translate(158.5 181.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".15234375" y="11" textLength="26.695312">heap</tspan></text><text transform="translate(288.5 117.125)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".1484375" y="11" textLength="42.703125">phase 1</tspan></text><text transform="translate(153.5 129.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".1484375" y="11" textLength="42.703125">phase 2</tspan></text><text transform="translate(282 257.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="164.484375">1 &amp; 2 : referencing thread number</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="23" textLength="53.195312">X : shared </tspan></text></g></g></svg>
diff --git a/docs/graphics/por-scheduling-relevance.svg b/docs/graphics/por-scheduling-relevance.svg
new file mode 100644 (file)
index 0000000..45c2886
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="33 31 534 383" width="534pt" height="383pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-11 18:17:44 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M 4.4999995 0 L 0 -1.6874998 L 0 1.6874998 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Monaco" font-size="9" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="588.0188" height="768.0188"/><g><title>Layer 1</title><text transform="translate(199 40.8188)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".1171875" y="11" textLength="158.765625">executed bytecode instruction</tspan></text><text transform="translate(99.4328 104.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".31933594" y="11" textLength="6">fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.319336" y="11" textLength="41.361328">eld insn</tspan></text><text transform="translate(253 104.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".4892578" y="11" textLength="50.021484">sync insn</tspan></text><text transform="translate(394 104.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".48242188" y="11" textLength="60.035156">invoke insn</tspan></text><text transform="translate(367 165.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.163086" y="11" textLength="28.007812">sync </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="4.498047" y="25" textLength="20.003906">mth</tspan></text><text transform="translate(439 165.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="1.9804688" y="11" textLength="53.373047">threading </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="17.99707" y="25" textLength="18.005859">call</tspan></text><line x1="261.35365" y1="54.8188" x2="140.57915" y2="104.125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="278.5" y1="54.8188" x2="278.5" y2="104.125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="294.64376" y1="54.8188" x2="408.35624" y2="104.125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="123.432805" y1="118.125" x2="123.432995" y2="380.456" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="278.51266" y1="118.125" x2="278.98842" y2="381.177" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="420.0736" y1="118.125" x2="390.3534" y2="165.125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="428.77212" y1="118.125" x2="457.45633" y2="165.125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="381.5" y1="193.125" x2="381.5" y2="381.826" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="466" y1="193.125" x2="466" y2="382.51" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="174" y="70.125" width="204" height="14" fill="#ffd0cd" fill-opacity=".78"/><rect x="174" y="70.125" width="204" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(179 70.125)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="19.618164" y="11" textLength="154.76367">scheduling relevant insn type</tspan></text><rect x="46" y="232.125" width="432.976" height="14" fill="#ffd0cd" fill-opacity=".78"/><rect x="46" y="232.125" width="432.976" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(51 232.125)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="151.113" y="11" textLength="120.75">other runnable threads</tspan></text><rect x="245" y="259.909" width="158" height="14" fill="#ffd0cd" fill-opacity=".78"/><rect x="245" y="259.909" width="158" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250 259.909)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="34.323242" y="11" textLength="79.353516">recursive locks</tspan></text><rect x="46" y="287.692" width="358" height="14" fill="#ffd0cd" fill-opacity=".78"/><rect x="46" y="287.692" width="358" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(51 287.692)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="134.97656" y="11" textLength="78.046875">shared objects</tspan></text><rect x="46" y="327.142" width="136.5" height="14" fill="#ffd0cd" fill-opacity=".78"/><rect x="46" y="327.142" width="136.5" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(51 327.142)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="5.555664" y="11" textLength="115.38867">lock protected access</tspan></text><text transform="translate(108.433 390.26)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".0126953125" y="11" textLength="234.78516">scheduling relevant instruction (registeres a </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="234.58691" y="11" textLength="133.40039">ThreadChoiceGenerator)</tspan></text><text transform="translate(63.4328 77.125)" fill="purple"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x=".48339844" y="11" textLength="56.033203">data races</tspan></text><text transform="translate(318.5 105.125)" fill="purple"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x="4.482422" y="11" textLength="54.035156">deadlocks</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x=".4951172" y="25" textLength="62.009766">(lock races)</tspan></text><rect x="153.077" y="305.692" width="150" height="14" fill="white" fill-opacity=".74"/><text transform="translate(158.077 305.692)" fill="purple"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x=".29980469" y="11" textLength="139.40039">tracking of access threads</tspan></text><rect x="43.75" y="343.26" width="141" height="14" fill="white" fill-opacity=".74"/><text transform="translate(48.75 343.26)" fill="purple"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x=".47558594" y="11" textLength="130.04883">lock distance &amp; statistics</tspan></text><rect x="409" y="192.125" width="141" height="36" fill="white" fill-opacity=".84"/><text transform="translate(414 192.125)" fill="blue"><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="9" textLength="129.62109">Thread. start(), yield()</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="21" textLength="124.220215">        sleep(), join()</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="33" textLength="118.819336">Object.wait(),notify()</tspan></text><text transform="translate(494.261 123.125)" fill="purple"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x=".98046875" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x="26.328125" y="11" textLength="30.691406">gured</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x=".32421875" y="25" textLength="57.351562">class/mthd</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="purple" x="4.3203125" y="39" textLength="49.359375">attributes</tspan></text><text transform="translate(72.4142 127.125)" fill="blue"><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="9" textLength="43.20703">GETFIELD</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="21" textLength="43.20703">PUTFIELD</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="33" textLength="48.60791">GETSTATIC</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="45" textLength="48.60791">PUTSTATIC</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="57" textLength="32.405273">xALOAD</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="69" textLength="37.806152">xASTORE</tspan></text><rect x="248" y="127.125" width="75" height="24" fill="white" fill-opacity=".74"/><text transform="translate(253 127.125)" fill="blue"><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="9" textLength="64.810547">MONITORENTER</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="21" textLength="59.409668">MONITOREXIT</tspan></text><rect x="392" y="127.125" width="81" height="24" fill="white" fill-opacity=".83"/><text transform="translate(397 127.125)" fill="blue"><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="9" textLength="70.211426">INVOKEVIRTUAL</tspan><tspan font-family="Monaco" font-size="9" font-weight="500" fill="blue" x="0" y="21" textLength="64.810547">INVOKESTATIC</tspan></text><line x1="44.5056" y1="371.793" x2="508.586" y2="371.793" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/></g></g></svg>
diff --git a/docs/graphics/properties.svg b/docs/graphics/properties.svg
new file mode 100644 (file)
index 0000000..ad56b87
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="31 4 710 529" width="710pt" height="529pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-11 18:07:23 +0000</dc:date></metadata><defs><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="15" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="blue"><g><path d="M 6.3999996 0 L 0 -2.3999999 L 0 2.3999999 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="purple"><g><path d="M 6.4000006 0 L 0 -2.4000002 L 0 2.4000002 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="blue"><g><path d="M 6.4000006 0 L 0 -2.4000002 L 0 2.4000002 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="19" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker_2" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="purple"><g><path d="M 6.3999996 0 L 0 -2.3999999 L 0 2.3999999 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><path d="M 58.801 34.7184 L 485.801 34.7184 C 491.32385 34.7184 495.801 39.195553 495.801 44.7184 L 495.801 51.4805 C 495.801 57.003347 491.32385 61.4805 485.801 61.4805 L 58.801 61.4805 C 53.278153 61.4805 48.801 57.003347 48.801 51.4805 L 48.801 44.7184 C 48.801 39.195553 53.278153 34.7184 58.801 34.7184 Z" fill="#faffb6"/><path d="M 58.801 34.7184 L 485.801 34.7184 C 491.32385 34.7184 495.801 39.195553 495.801 44.7184 L 495.801 51.4805 C 495.801 57.003347 491.32385 61.4805 485.801 61.4805 L 58.801 61.4805 C 53.278153 61.4805 48.801 57.003347 48.801 51.4805 L 48.801 44.7184 C 48.801 39.195553 53.278153 34.7184 58.801 34.7184 Z" stroke="#ffd7aa" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 217.927 76.1073 L 477.121 76.1073 C 482.64385 76.1073 487.121 80.584453 487.121 86.1073 L 487.121 196.8643 C 487.121 202.38715 482.64385 206.8643 477.121 206.8643 L 217.927 206.8643 C 212.40415 206.8643 207.927 202.38715 207.927 196.8643 L 207.927 86.1073 C 207.927 80.584453 212.40415 76.1073 217.927 76.1073 Z" fill="#faffb6"/><path d="M 217.927 76.1073 L 477.121 76.1073 C 482.64385 76.1073 487.121 80.584453 487.121 86.1073 L 487.121 196.8643 C 487.121 202.38715 482.64385 206.8643 477.121 206.8643 L 217.927 206.8643 C 212.40415 206.8643 207.927 202.38715 207.927 196.8643 L 207.927 86.1073 C 207.927 80.584453 212.40415 76.1073 217.927 76.1073 Z" stroke="#ffd7aa" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 277.238 247.408 L 500.267 247.408 C 505.78985 247.408 510.267 251.88515 510.267 257.408 L 510.267 358.199 C 510.267 363.72185 505.78985 368.199 500.267 368.199 L 277.238 368.199 C 271.71515 368.199 267.238 363.72185 267.238 358.199 L 267.238 257.408 C 267.238 251.88515 271.71515 247.408 277.238 247.408 Z" fill="#faffb6"/><path d="M 277.238 247.408 L 500.267 247.408 C 505.78985 247.408 510.267 251.88515 510.267 257.408 L 510.267 358.199 C 510.267 363.72185 505.78985 368.199 500.267 368.199 L 277.238 368.199 C 271.71515 368.199 267.238 363.72185 267.238 358.199 L 267.238 257.408 C 267.238 251.88515 271.71515 247.408 277.238 247.408 Z" stroke="#ffd7aa" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 52.3687 247.326 L 232.6457 247.326 C 238.16855 247.326 242.6457 251.80315 242.6457 257.326 L 242.6457 463.762 C 242.6457 469.28485 238.16855 473.762 232.6457 473.762 L 52.3687 473.762 C 46.845853 473.762 42.3687 469.28485 42.3687 463.762 L 42.3687 257.326 C 42.3687 251.80315 46.845853 247.326 52.3687 247.326 Z" fill="#faffb6"/><path d="M 52.3687 247.326 L 232.6457 247.326 C 238.16855 247.326 242.6457 251.80315 242.6457 257.326 L 242.6457 463.762 C 242.6457 469.28485 238.16855 473.762 232.6457 473.762 L 52.3687 473.762 C 46.845853 473.762 42.3687 469.28485 42.3687 463.762 L 42.3687 257.326 C 42.3687 251.80315 46.845853 247.326 52.3687 247.326 Z" stroke="#ffd7aa" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 268.558 400.709 L 508.946 400.709 C 514.46885 400.709 518.946 405.18615 518.946 410.709 L 518.946 511.5 C 518.946 517.02285 514.46885 521.5 508.946 521.5 L 268.558 521.5 C 263.03515 521.5 258.558 517.02285 258.558 511.5 L 258.558 410.709 C 258.558 405.18615 263.03515 400.709 268.558 400.709 Z" fill="#faffb6"/><path d="M 268.558 400.709 L 508.946 400.709 C 514.46885 400.709 518.946 405.18615 518.946 410.709 L 518.946 511.5 C 518.946 517.02285 514.46885 521.5 508.946 521.5 L 268.558 521.5 C 263.03515 521.5 258.558 517.02285 258.558 511.5 L 258.558 410.709 C 258.558 405.18615 263.03515 400.709 268.558 400.709 Z" stroke="#ffd7aa" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(266.835 408.697)" fill="black"><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="10" textLength="237.63867">jpf.home = ${user.home}/projects/jpf</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="36" textLength="52.808594">jpf-core</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="52.808594" y="36" textLength="151.82471"> = ${jpf.home}/jpf-core</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="49" textLength="46.20752">jpf-awt</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="46.20752" y="49" textLength="118.819336"> = ${jpf.home}/awt</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="62" textLength="59.409668">jpf-shell</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="59.409668" y="62" textLength="158.42578"> = ${jpf.home}/jpf-shell</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="75" textLength="59.409668">jpf-aprop</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="59.409668" y="75" textLength="39.606445"> = ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="88" textLength="19.803223">...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="101" textLength="66.010742">extensions</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="66.010742" y="101" textLength="178.229"> = ${jpf-core},${jpf-shell}</tspan></text><text transform="translate(50 262)" fill="black"><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="10" textLength="165.02686">jpf-core = ${config_path}</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="36" textLength="59.409668">jpf-core.</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="59.409668" y="36" textLength="105.61719">native_classpath</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="165.02686" y="36" textLength="13.2021484">=\</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="49" textLength="191.43115">  ${jpf-core}/build/jpf.jar;\</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="62" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="75" textLength="178.229">  ${jpf-core}/lib/bcel.jar;</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="101" textLength="59.409668">jpf-core.</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="59.409668" y="101" textLength="59.409668">classpath</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="118.819336" y="101" textLength="13.2021484">=\</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="114" textLength="151.82471">  build/jpf-classes.jar</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="140" textLength="59.409668">jpf-core.</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="59.409668" y="140" textLength="92.41504">test_classpath</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="151.82471" y="140" textLength="13.2021484">=\</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="153" textLength="85.813965">  build/tests</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="179" textLength="59.409668">jpf-core.</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="59.409668" y="179" textLength="59.409668">sourcepat</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="118.819336" y="179" textLength="19.803223">h=\</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="192" textLength="85.813965">  src/classes</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="205" textLength="19.803223">...</tspan></text><text transform="translate(271.417 260.887)" fill="black"><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="10" textLength="198.03223">jpf-awt-shell = ${config_path}</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="36" textLength="39.606445">@using</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="39.606445" y="36" textLength="66.010742"> = jpf-awt</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="75" textLength="92.41504">jpf-awt-shell.</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="92.41504" y="75" textLength="105.61719">native_classpath</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="198.03223" y="75" textLength="26.404297">=...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="88" textLength="92.41504">jpf-awt-shell.</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="92.41504" y="88" textLength="59.409668">classpath</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="151.82471" y="88" textLength="26.404297">=...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="101" textLength="19.803223">...</tspan></text><text transform="translate(215.481 84.5732)" fill="red"><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="10" textLength="39.606445">target</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="39.606445" y="10" textLength="99.016113"> = RobotManager</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="23" textLength="72.611816">target_args</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="72.611816" y="23" textLength="39.606445"> = ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="49" textLength="118.819336">@using = jpf-aprop</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="62" textLength="46.20752">@import</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="46.20752" y="62" textLength="118.819336"> = ./my.properties</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="88" textLength="33.005371">shell</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="33.005371" y="88" textLength="204.6333"> = .shell.basicshell.BasicShell</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="red" x="0" y="101" textLength="52.808594">listener</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="52.808594" y="101" textLength="211.23438"> = .aprop.listener.SharedChecker</tspan><tspan font-family="Courier" font-size="11" font-weight="500" x="0" y="114" textLength="19.803223">...</tspan></text><text transform="translate(535.837 419.199)" fill="black"><tspan font-family="Helvetica" font-size="15" font-weight="500" x="0" y="15" textLength="110.88867">1. site properties</tspan></text><text transform="translate(535.837 269.806)" fill="black"><tspan font-family="Helvetica" font-size="15" font-weight="500" x="0" y="15" textLength="132.56836">2. project properties</tspan></text><text transform="translate(535.837 122.743)" fill="black"><tspan font-family="Helvetica" font-size="15" font-weight="500" x="0" y="15" textLength="159.26514">3. application properties</tspan></text><text transform="translate(535.837 37)" fill="black"><tspan font-family="Helvetica" font-size="15" font-weight="500" x="0" y="15" textLength="110.05371">4. command line</tspan></text><text transform="translate(553.837 446.199)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="158.42578">~/.jpf/site.properties</tspan></text><text transform="translate(553.837 296.806)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="172.82812">&lt;project&gt;/jpf.properties</tspan></text><text transform="translate(553.837 149.743)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="136.822266">&lt;project&gt;/.../*.jpf</tspan></text><text transform="translate(57.8009 38.4467)" fill="black"><tspan font-family="Courier" font-size="12" font-weight="500" x="0" y="11" textLength="180.0293">&gt; bin/jpf [-log][-show] {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="red" x="180.0293" y="11" textLength="86.41406">+log.info=..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="266.44336" y="11" textLength="14.402344">} </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="red" x="280.8457" y="11" textLength="144.02344">.../RobotManager.jpf</tspan><tspan font-family="Courier" font-size="12" font-weight="500" x="424.86914" y="11" textLength="14.402344">  </tspan></text><path d="M 254.897 507.803 L 197.74177 507.75322 C 194.43011 507.75034 191.747 505.0649 191.747 501.75322 L 191.747 469.593" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 117 252 L 117 240.0136 C 117 236.69989 119.68629 234.0136 123 234.0136 C 123.00453 234.0136 123.00906 234.0136 123.013585 234.01362 L 263.27802 234.3312" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(75.1602 478.429)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="97.38281">all jpf.properties in</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="44.689453">order of </tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="44.689453" y="25" textLength="57.36914">extensions</tspan></text><text transform="translate(284.191 226.678)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="172.07227">jpf.properties in current directory</tspan></text><path d="M 473.835 234.806 L 494.8676 234.806 C 498.16894 234.806 500.85008 232.13898 500.86752 228.83768 L 501.55515 98.61408 C 501.57265 95.30042 498.90058 92.59998 495.58692 92.582484 C 495.57636 92.58243 495.5658 92.5824 495.55523 92.5824 L 435.684 92.5824" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(579.345 469.372)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="94.04297">- project locations</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="110.05664">- pre-loaded projects</tspan></text><text transform="translate(579.345 319.979)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="106.71094">- project class paths</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="121.41211">- project dependencies</tspan></text><text transform="translate(579.345 172.915)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="103.359375">- system-under-test</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="89.36133">- listeners, shells</tspan></text><text transform="translate(579.345 58.6805)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="63.38672">- debugging</tspan></text><text transform="translate(252.533 18.202)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="182.08594">command line property arguments</tspan></text><path d="M 423.131 477.215 C 422.42507 484.2239 423.5989 485.0065 427.771 486.571 C 431.9431 488.1355 462.451 486.832 462.451 486.832 C 462.451 486.832 471.22213 485.7952 473.73633 493.13772" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 384.172 289.104 C 385.547 286.104 388.047 282.854 393.547 282.729 C 399.047 282.604 404.922 287.729 404.672 293.729 C 404.422 299.729 399.672 304.729 393.047 304.354 C 391.54602 304.26904 390.24395 303.84401 389.1277 303.23738" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="188.908" y="216.267" width="16" height="23" fill="white"/><text transform="translate(188.908 216.267)" fill="blue"><tspan font-family="Helvetica" font-size="19" font-weight="500" fill="blue" x="0" y="19" textLength="15.836426">...</tspan></text><path d="M 264.193 454.367 C 255.2799 454.037 253.41636 449.68932 251.553 440.062 C 249.68966 430.43468 250.62069 331.05585 255.279 323.913 C 259.9374 316.77015 261.80115 316.14904 268.944 313.354 C 276.08685 310.55896 329.5034 310.55858 340.373 310.248 C 347.94775 310.03157 353.4106 310.26777 355.18565 306.1217" marker-end="url(#Arrow_Marker_2)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(440.597 77.495)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="57.375">application</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="53.361328">properties</tspan></text><path d="M 387.466 131.784 C 388.841 128.784 391.341 125.534 396.841 125.409 C 402.341 125.284 408.216 130.409 407.966 136.409 C 407.716 142.409 402.966 147.409 396.341 147.034 C 394.84002 146.94904 393.53795 146.52401 392.4217 145.917375" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 564.52274 354.335 L 551.865 366.99273 L 560.2191 366.99273 L 560.2191 408.5825 L 568.8264 408.5825 L 568.8264 366.99273 L 577.1805 366.99273 Z" fill="#e8eef7"/><path d="M 564.52274 354.335 L 551.865 366.99273 L 560.2191 366.99273 L 560.2191 408.5825 L 568.8264 408.5825 L 568.8264 366.99273 L 577.1805 366.99273 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><path d="M 564.20274 200.87 L 551.545 213.52773 L 559.8991 213.52773 L 559.8991 255.1175 L 568.5064 255.1175 L 568.5064 213.52773 L 576.8605 213.52773 Z" fill="#e8eef7"/><path d="M 564.20274 200.87 L 551.545 213.52773 L 559.8991 213.52773 L 559.8991 255.1175 L 568.5064 255.1175 L 568.5064 213.52773 L 576.8605 213.52773 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><path d="M 564.20274 60.5442 L 551.545 73.20193 L 559.8991 73.20193 L 559.8991 114.7917 L 568.5064 114.7917 L 568.5064 73.20193 L 576.8605 73.20193 Z" fill="#e8eef7"/><path d="M 564.20274 60.5442 L 551.545 73.20193 L 559.8991 73.20193 L 559.8991 114.7917 L 568.5064 114.7917 L 568.5064 73.20193 L 576.8605 73.20193 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><path d="M 487.875 49.625 C 487.875 49.625 504.125 48.75 508.125 55.125 C 512.125 61.49999 509.12492 68.125 508.097 69.4369 C 507.80348 69.81151 507.02888 70.620914 506.07187 71.58626" marker-end="url(#Arrow_Marker_2)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(373.153 385.456)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="75.36914">site properties</tspan></text></g></g></svg>
diff --git a/docs/graphics/report.svg b/docs/graphics/report.svg
new file mode 100644 (file)
index 0000000..cad3324
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="10 18 784 573" width="784pt" height="573pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2010-09-10 23:02:45 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Monaco" font-size="11" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Ball_Marker" viewBox="-7 -4 8 8" markerWidth="8" markerHeight="8" color="blue"><g><circle cx="-2.9999986" cy="0" r="2.9999973" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="1536.0376" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id99_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id21_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id100_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id105_Graphic" filter="url(#Shadow)"/></g><g id="id99_Graphic"><rect x="601" y="156" width="151" height="70" fill="white"/><rect x="601" y="156" width="151" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id21_Graphic"><rect x="468" y="140" width="90" height="83" fill="white"/><rect x="468" y="140" width="90" height="83" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><rect x="119" y="134" width="146" height="42" fill="white"/><rect x="119" y="134" width="146" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(124 134)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="29.326172">JPF()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="130.740234">addPublisherExtension()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="73.365234">setPublisherT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="72.035156" y="39" textLength="36.00586">opics()</tspan></text><rect x="119" y="120" width="146" height="14" fill="white"/><rect x="119" y="120" width="146" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(124 120)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="42.017578">reporter</tspan></text><rect x="119" y="106" width="146" height="14" fill="white"/><rect x="119" y="106" width="146" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(124 106)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="56.996094" y="11" textLength="22.007812">JPF</tspan></text><text transform="translate(34.81 28.631245)" fill="blue"><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="11" textLength="13.2021484">..</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="26" textLength="422.46875">reporter = config.getInstance(&quot;report.class&quot;, Reporter.class,..)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="422.46875" y="26" textLength="7.201172">;</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="41" textLength="14.402344">..</tspan></text><path d="M 108.51673 140.52065 C 96.31494 139.82353 82.887197 139.963245 74 137 C 63.50105 133.49935 54.3331 130.9979 52 120 C 49.6669 109.0021 57.3336 87.3357 60 71.006" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="305" y="150" width="118" height="42" fill="white"/><rect x="305" y="150" width="118" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(310 150)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="82.69922">searchStarted()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="52.02539">propertyV</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="51.814453" y="25" textLength="43.353516">iolated()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="89.36719">searchFinished()</tspan></text><rect x="305" y="136" width="118" height="14" fill="white"/><rect x="305" y="136" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(310 136)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="54.697266">publishers</tspan></text><rect x="305" y="122" width="118" height="14" fill="white"/><rect x="305" y="122" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(310 122)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="28.995117" y="11" textLength="50.009766">Reporter</tspan></text><rect x="463.5" y="190" width="90" height="28" fill="white"/><rect x="463.5" y="190" width="90" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(468.5 190)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="71.36133">publishStart()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="44.015625">getOut()</tspan></text><rect x="463.5" y="148" width="90" height="42" fill="white"/><rect x="463.5" y="148" width="90" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(468.5 148)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="57.36914">extensions</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="31.347656">topics</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="16.681641">out</tspan></text><rect x="463.5" y="134" width="90" height="14" fill="white"/><rect x="463.5" y="134" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(468.5 134)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.660156" y="11" textLength="54.679688">Publisher</tspan></text><rect x="596" y="165" width="151" height="56" fill="white"/><rect x="596" y="165" width="151" height="56" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 165)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="71.36133">publishStart()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="45.357422">publishT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="44.91797" y="25" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="91.38281">publishPropertyV</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="91.171875" y="39" textLength="46.01953">iolation()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="53" textLength="91.376953">publishFinished()</tspan></text><rect x="596" y="151" width="151" height="14" fill="white"/><rect x="596" y="151" width="151" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 151)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".4716797" y="11" textLength="140.05664">&lt;&lt;PublisherExtension&gt;&gt;</tspan></text><g id="id100_Graphic"><rect x="583" y="343" width="39" height="30" fill="white"/><rect x="583" y="343" width="39" height="30" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(588 351)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.4990234" y="11" textLength="10.001953">...</tspan></text></g><line x1="676" y1="328" x2="676" y2="240.506" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 606 343 L 606 328 L 704 328 L 704 343" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id105_Graphic"><rect x="409" y="284" width="39" height="30" fill="white"/><rect x="409" y="284" width="39" height="30" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(414 292)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.4990234" y="11" textLength="10.001953">...</tspan></text></g><line x1="502.00002" y1="269" x2="502.00002" y2="240.506" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 432 284 L 432 269 L 530 269 L 530 284" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="535" y1="157" x2="586.1" y2="157" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="402" y1="141" x2="453.1" y2="141" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="245" y1="128" x2="296.1" y2="128" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(102.08 217.37988)" fill="blue"><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="11" textLength="13.2021484">..</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="26" textLength="204.6333">for (Publisher p : publishers){</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="41" textLength="118.819336">  p.openChannel();</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="56" textLength="26.404297">  ..</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="71" textLength="125.42041">  p.publishStart();</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="86" textLength="14.402344">..</tspan></text><path d="M 298.63573 160.68016 C 291.20484 165.53147 283.20964 170.12326 278 176 C 271.50065 183.3316 266.49985 192.49985 265 201 C 263.50015 209.50015 267.6668 218.3382 269 227.006" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(200.64 328.44478)" fill="blue"><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="11" textLength="191.43115"> public void publishStart() {</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="26" textLength="250.84082">    for (String topic : startTopics) {</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="41" textLength="204.6333">      if (&quot;jpf&quot;.equals(topic)){</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="56" textLength="138.62256">        publishJPF();</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="71" textLength="33.005371">  ...</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="86" textLength="204.6333">    for (PublisherExtension e :</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="101" textLength="237.63867">                       extensions) {</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="116" textLength="191.43115">        e.publishStart(this);</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="131" textLength="46.20752">      }</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="146" textLength="33.005371">  ...</tspan></text><path d="M 448.95183 200.3809 C 432.62623 206.25465 414.28666 209.15743 402 221 C 388.16805 234.332 378.68406 260.67906 372 278 C 365.31594 295.32094 365.26076 309.29224 361.89164 324.936" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(395.8 477.35088)" fill="blue"><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="11" textLength="211.23438">out.println(&quot;JPF version&quot; + ..);</tspan></text><rect x="475" y="297.936" width="118" height="28" fill="white"/><rect x="475" y="297.936" width="118" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(480 297.936)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="67.353516">publishJPF()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="475" y="283.936" width="118" height="14" fill="white"/><rect x="475" y="283.936" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(480 283.936)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.991211" y="11" textLength="102.01758">ConsolePublisher</tspan></text><path d="M 533.46314 321.31366 C 530.55445 334.16368 528.93123 346.2254 522.891 361 C 515.87354 378.16495 499.575 400.67907 492.891 418 C 486.207 435.32093 486.152 449.29223 482.783 464.936" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="647" y="357" width="118" height="28" fill="white"/><rect x="647" y="357" width="118" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(652 357)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="91.376953">publishFinished()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="647" y="343" width="118" height="14" fill="white"/><rect x="647" y="343" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(652 343)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.3115234" y="11" textLength="103.376953">DeadlockAnalyzer</tspan></text><text transform="translate(555.78 414.35063)" fill="blue"><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="11" textLength="118.819336">PrintWriter out = </tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="26" textLength="191.43115">          publisher,getOut();</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="blue" x="0" y="41" textLength="158.42578">printTraceAnalysis(out);</tspan></text><path d="M 714.47304 378.3917 C 713.93286 385.00501 713.7042 391.82623 711 397 C 707.3972 403.89298 699.3982 407.86588 693.59814 413.298" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(306 80)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="76.716797">data collection</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="122.07422">publisher management</tspan></text><text transform="translate(468 70)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="80.04492">data formatting</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="98.72461">topic management</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="39" textLength="78.73242">output channel</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="53" textLength="80.04492">   management</tspan></text><text transform="translate(620.5 109.506)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="86.03906">property/listener</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="34.013672">specifi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="34.013672" y="25" textLength="77.378906">c output topics</tspan></text><text transform="translate(50.42 512.3625)" fill="#390"><tspan font-family="Monaco" font-size="11" font-weight="500" fill="#390" x="0" y="11" textLength="191.43115">report.class=.report.Reporter</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="#390" x="0" y="26" textLength="178.229">report.publisher=console,..</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="#390" x="0" y="41" textLength="297.04834">report.console.class=.report.ConsolePublisher</tspan><tspan font-family="Monaco" font-size="11" font-weight="500" fill="#390" x="0" y="56" textLength="178.229">report.console.start=jpf,..</tspan></text><text transform="translate(91 477)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="50.015625">JPF confi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="50.015625" y="11" textLength="43.365234">guration</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="144.06445">(e.g. jpf.properties or *.jpf fi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="144.06445" y="25" textLength="19.335938">les)</tspan></text><path d="M 135.75 467.749 L 135.75 425.749 L 126 425.749 L 145.5 411.749 L 165 425.749 L 155.25 425.749 L 155.25 467.749 Z" fill="white"/><path d="M 135.75 467.749 L 135.75 425.749 L 126 425.749 L 145.5 411.749 L 165 425.749 L 155.25 425.749 L 155.25 467.749 Z" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/states-mc.svg b/docs/graphics/states-mc.svg
new file mode 100644 (file)
index 0000000..8d9f5fd
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="111 18 212 194" width="212pt" height="194pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2009-09-06 18:37:27 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="blue"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -2 5 4" markerWidth="5" markerHeight="4" color="red"><g><path d="M 2.4000001 0 L 0 -.90000004 L 0 .90000004 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-4 -2 5 4" markerWidth="5" markerHeight="4" color="red"><g><path d="M -2.4000001 0 L 0 .90000004 L 0 -.90000004 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-1 -2 3 4" markerWidth="3" markerHeight="4" color="red"><g><path d="M .96 0 L 0 -.36 L 0 .36 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Arial Unicode MS" font-size="14" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-100.097656" underline-thickness="49.804688" slope="0" x-height="529.78516" cap-height="728.02734" ascent="1068.84766" descent="-270.9961" font-weight="500"><font-face-src><font-face-name name="ArialUnicodeMS"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Apple Symbols" font-size="13" panose-1="2 0 0 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-73.242188" underline-thickness="48.828125" slope="0" x-height="392.57812" cap-height="546.38672" ascent="666.5039" descent="-250" font-weight="500"><font-face-src><font-face-name name="AppleSymbols"/></font-face-src></font-face><font-face font-family="Zapf Dingbats" font-size="14" panose-1="5 2 1 2 1 7 4 2 6 9" units-per-em="1000" underline-position="-100.097656" underline-thickness="60.058594" slope="0" x-height="542.48047" cap-height="723.14453" ascent="813.96484" descent="-176.75781" font-weight="500"><font-face-src><font-face-name name="ZapfDingbatsITC"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><path d="M 199.037 162.428 C 200.57818 159.34531 201.0281 157.22493 203.661 153.179 C 206.2939 149.13307 210.95072 142.5169 214.836 138.15 C 218.72128 133.7831 225.04836 130.86028 226.975 126.975 C 228.90164 123.08972 229.60801 119.138736 226.397 114.836 C 224.05647 111.69971 218.50761 108.289804 213.25864 104.90571" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><circle cx="199.97595" cy="92.61395" r="7.000961" fill="#fffe71"/><circle cx="199.97595" cy="92.61395" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle cx="181.81895" cy="119.45695" r="7.000961" fill="#fffe71"/><circle cx="181.81895" cy="119.45695" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="172.39495" cy="145.98695" r="7.000961" fill="#fffe71"/><circle cx="172.39495" cy="145.98695" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="191.28895" cy="172.51695" r="7.000961" fill="#a5ff78"/><circle cx="191.28895" cy="172.51695" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="214.71395" cy="119.26395" r="7.000961" fill="#fffe71"/><circle cx="214.71395" cy="119.26395" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="247.76695" cy="119.93295" r="7.000961" fill="#fffe71"/><circle cx="247.76695" cy="119.93295" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle cx="225.36195" cy="147.66995" r="7.000961" fill="#fffe71"/><circle cx="225.36195" cy="147.66995" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="193.08327" y1="102.80395" x2="188.43147" y2="109.68109" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="177.86826" y1="130.578685" x2="176.34559" y2="134.865196" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.92984" y1="103.380056" x2="209.00205" y2="108.93538" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="218.85671" y1="130.315664" x2="221.21924" y2="136.61822" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="179.24131" y1="155.600255" x2="184.4426" y2="162.90364" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="215.647" y1="154.37152" x2="205.27354" y2="161.52735" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="261.29795" cy="146.77595" r="7.000961" fill="#fffe71"/><circle cx="261.29795" cy="146.77595" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="206.92362" y1="96.58548" x2="236.28745" y2="113.37086" marker-end="url(#FilledArrow_Marker_3)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="251.36924" y1="127.07921" x2="255.34603" y2="134.9684" marker-end="url(#FilledArrow_Marker_3)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle cx="261.20595" cy="174.51295" r="7.000961" fill="red"/><circle cx="261.20595" cy="174.51295" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="261.27142" y1="154.77686" x2="261.24816" y2="161.79207" marker-end="url(#FilledArrow_Marker_3)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="204.73078" y1="125.559554" x2="186.87417" y2="136.82032" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="239.8446" y1="129.34356" x2="235.5243" y2="134.47547" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(255.97 164.705)" fill="yellow"><tspan font-family="Arial Unicode MS" font-size="14" font-weight="500" fill="yellow" x="0" y="15" textLength="10.5">☠</tspan></text><text transform="translate(149 27)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="79.486816">model checking:</tspan></text><text transform="translate(176 46.4739)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="132.84668">all program state are explored</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="22" textLength="131.75781"> until none left or defect found</tspan></text><path d="M 183.622 166.859 C 178.29187 167.05165 173.02446 169.4278 167.63 167.437 C 162.23554 165.4462 154.65566 161.23853 151.252 154.913 C 147.84834 148.58747 145.43984 137.4432 147.206 129.48 C 148.97216 121.5168 155.10684 112.587704 161.85 107.129 C 167.00219 102.95821 174.3303 101.111333 181.33995 98.92518" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 183.237 142.775 C 188.43881 142.83899 194.41278 145.3111 198.844 142.967 C 201.71564 141.44791 203.9405 137.9056 206.14715 134.306975" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 235.645 139.692 C 237.44315 138.9854 239.37017 139.27383 241.04 137.572 C 241.57356 137.02821 242.08097 136.281115 242.57475 135.42817" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(125.853 90.4145)" fill="blue"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="blue" x="0" y="10" textLength="42.79297">backtrack</tspan></text><text transform="translate(177.64 135.638)" fill="purple"><tspan font-family="Apple Symbols" font-size="13" font-weight="500" fill="purple" x="0" y="9" textLength="7.445801">≡</tspan></text><text transform="translate(195.944 160.694)" fill="purple"><tspan font-family="Apple Symbols" font-size="13" font-weight="500" fill="purple" x="0" y="9" textLength="7.445801">≡</tspan></text><text transform="translate(228.507 134.495)" fill="purple"><tspan font-family="Apple Symbols" font-size="13" font-weight="500" fill="purple" x="0" y="9" textLength="7.445801">≡</tspan></text><text transform="translate(202.738 164.231)" fill="purple"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="purple" x="0" y="10" textLength="27.231445">match</tspan></text><text transform="translate(254.721 187.554)" fill="red"><tspan font-family="Zapf Dingbats" font-size="14" font-weight="500" fill="red" x=".26269531" y="11" textLength="9.4746094">✘</tspan></text></g></g></svg>
diff --git a/docs/graphics/states-testing.svg b/docs/graphics/states-testing.svg
new file mode 100644 (file)
index 0000000..12e5396
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="143 28 197 186" width="197pt" height="186pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-19 20:33:35 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="red"><g><path d="M 4.8000002 0 L 0 -1.8000001 L 0 1.8000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Arial Unicode MS" font-size="14" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-100.097656" underline-thickness="49.804688" slope="0" x-height="529.78516" cap-height="728.02734" ascent="1068.84766" descent="-270.9961" font-weight="500"><font-face-src><font-face-name name="ArialUnicodeMS"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Zapf Dingbats" font-size="14" panose-1="5 2 1 2 1 7 4 2 6 9" units-per-em="1000" underline-position="-100.097656" underline-thickness="60.058594" slope="0" x-height="542.48047" cap-height="723.14453" ascent="813.96484" descent="-176.75781" font-weight="500"><font-face-src><font-face-name name="ZapfDingbatsITC"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="blue"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id24_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id25_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id28_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id36_Graphic" filter="url(#Shadow)"/></g><circle cx="200.11895" cy="97.06455" r="7.000961" fill="#faff8b"/><circle cx="200.11895" cy="97.06455" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><g id="id24_Graphic"><circle cx="181.96195" cy="123.90795" r="7.000961" fill="white"/><circle cx="181.96195" cy="123.90795" r="7.000961" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id25_Graphic"><circle cx="172.53795" cy="150.43695" r="7.000961" fill="white"/><circle cx="172.53795" cy="150.43695" r="7.000961" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><circle cx="191.43195" cy="176.96795" r="7.000961" fill="#a5ff78"/><circle cx="191.43195" cy="176.96795" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><circle cx="214.85695" cy="123.71495" r="7.000961" fill="#faff8b"/><circle cx="214.85695" cy="123.71495" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><g id="id28_Graphic"><circle cx="247.90995" cy="124.38295" r="7.000961" fill="white"/><circle cx="247.90995" cy="124.38295" r="7.000961" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><circle cx="225.50495" cy="152.11995" r="7.000961" fill="#faff8b"/><circle cx="225.50495" cy="152.11995" r="7.000961" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="195.63552" y1="103.692876" x2="186.16524" y2="117.69378" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="179.45053" y1="130.97771" x2="175.04936" y2="143.36719" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="203.99181" y1="104.067766" x2="207.74168" y2="110.84856" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="217.66598" y1="131.20841" x2="220.34415" y2="138.3528" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="176.88977" y1="156.54779" x2="186.79009" y2="170.44984" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="219.0396" y1="156.83486" x2="203.31072" y2="168.30526" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id36_Graphic"><circle cx="261.44095" cy="151.22695" r="7.000961" fill="white"/><circle cx="261.44095" cy="151.22695" r="7.000961" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="207.06666" y1="101.036017" x2="241.39632" y2="120.65962" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="251.28707" y1="131.08278" x2="258.06383" y2="144.52712" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="261.34895" cy="178.96395" r="7.000961" fill="#ffafb4"/><circle cx="261.34895" cy="178.96395" r="7.000961" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="261.41607" y1="158.72786" x2="261.37383" y2="171.46304" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="208.09054" y1="127.98755" x2="178.88159" y2="146.43131" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="243.19621" y1="130.21848" x2="230.53287" y2="145.895465" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.333 169.281)" fill="black"><tspan font-family="Arial Unicode MS" font-size="14" font-weight="500" x="0" y="15" textLength="10.5">☠</tspan></text><text transform="translate(228.228 55.8818)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="84.506836">based on input set </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="blue" x="84.506836" y="10" textLength="12.241211">{d}</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="22" textLength="40.585938">only one </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="red" x="40.585938" y="22" textLength="19.462891">path</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="34" textLength="81.713867">executed at a time</tspan></text><text transform="translate(176 190)" fill="#00c300"><tspan font-family="Zapf Dingbats" font-size="14" font-weight="500" fill="#00c300" x=".076660156" y="11" textLength="11.84668">✔</tspan></text><text transform="translate(203.93402 37.205296)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="35.465332">testing:</tspan></text><text transform="translate(157.263 64)" fill="blue"><tspan font-family="Helvetica" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="17.137695">{d}</tspan></text><path d="M 180.263 69.663568 C 186.02242 68.496695 194.58713 64.273384 197.543 66.1626 C 199.34019 67.31126 199.0646 70.719975 198.60663 74.327384" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/docs/graphics/sw-model-checking-2.svg b/docs/graphics/sw-model-checking-2.svg
new file mode 100644 (file)
index 0000000..a0575f7
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 236 374 190" width="374pt" height="190pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2015-01-05 22:19:29 +0000</dc:date></metadata><defs><font-face font-family="Courier" font-size="14" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Courier" font-size="14" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="red"><g><path d="M 4.8 0 L 0 0 M 0 -1.8 L 4.8 0 L 0 1.8" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Zapf Dingbats" font-size="14" panose-1="5 2 1 2 1 7 4 2 6 9" units-per-em="1000" underline-position="-100.097656" underline-thickness="60.058594" slope="0" x-height="542.48047" cap-height="723.14453" ascent="813.96484" descent="-176.75781" font-weight="500"><font-face-src><font-face-name name="ZapfDingbatsITC"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="purple"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><text transform="translate(97.5 288)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x="0" y="14" textLength="25.204102">a=0</tspan></text><text transform="translate(51.5 335)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">b=0</tspan></text><text transform="translate(117 335)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">b=1</tspan></text><text transform="translate(182 335)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x="0" y="14" textLength="25.204102">b=2</tspan></text><line x1="102.18085" y1="305" x2="79.743833" y2="327.92478" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="114.026596" y1="305" x2="122.67953" y2="325.8558" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="125.781915" y1="305" x2="168.4446" y2="328.72954" marker-end="url(#StickArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(51.5 380)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">c=0</tspan></text><text transform="translate(117 380)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">c=0</tspan></text><text transform="translate(174.5 380)" fill="red"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="red" x="0" y="14" textLength="42.006836">c=0/0</tspan></text><line x1="64.5" y1="352" x2="64.5" y2="370.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="130" y1="352" x2="130" y2="370.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="195.18889" y1="352" x2="195.52452" y2="367.10318" marker-end="url(#StickArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(200 245)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x="0" y="14" textLength="42.006836">start</tspan></text><line x1="199.55814" y1="262" x2="140.52895" y2="284.86716" marker-end="url(#StickArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(304.5 288)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">a=1</tspan></text><text transform="translate(258.5 335)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">b=0</tspan></text><text transform="translate(312.5 335)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">b=1</tspan></text><text transform="translate(366.5 335)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">b=2</tspan></text><line x1="309.18085" y1="305" x2="286.74383" y2="327.92478" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="318.9468" y1="305" x2="322.39198" y2="325.24037" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="328.71277" y1="305" x2="360.39788" y2="329.01936" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(254.5 380.5)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="33.605469">c=-1</tspan></text><text transform="translate(304 380.5)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="42.006836">c=1/0</tspan></text><text transform="translate(367.5 380)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x="0" y="14" textLength="25.204102">c=1</tspan></text><line x1="271.5" y1="352" x2="271.5" y2="370.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="325.5" y1="352" x2="325.5" y2="370.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="379.68912" y1="352" x2="380.0919" y2="370.10245" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="240.47674" y1="262" x2="290.46495" y2="284.39055" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(190 402)" fill="red"><tspan font-family="Zapf Dingbats" font-size="14" font-weight="500" fill="red" x="0" y="11" textLength="9.4746094">✘</tspan></text><path d="M 195 255.53846 C 184.3344 256.35889 171.9991 255.75663 163 258 C 154.0009 260.24337 148.17807 264.0005 141 269 C 135.49167 272.83653 130.1641 278.24436 124.8097 283.41438" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="165.29035" y="251.01964" width="16" height="11" fill="white"/><text transform="translate(170.29035 251.01964)" fill="purple"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="purple" x="0" y="9" textLength="5.005371">1</tspan></text><path d="M 93.036364 305 C 80.025544 311.3327 61.83861 316.91738 54 324 C 46.16139 331.08262 44.88934 338.1676 46 347.5 C 46.909354 355.1409 52.88361 364.79484 57.70203 373.98866" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="59.46112" y="310.53899" width="16" height="11" fill="white"/><text transform="translate(64.46112 310.53899)" fill="purple"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="purple" x="0" y="9" textLength="5.005371">2</tspan></text><path d="M 67.75532 380 C 72.66972 367.16795 76.257992 353.99875 82.5 341.5 C 87.77279 330.94197 94.94186 320.857 101.60377 310.64679" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="66.688773" y="354.95894" width="16" height="11" fill="white"/><text transform="translate(71.688773 354.95894)" fill="purple"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="purple" x="0" y="9" textLength="5.005371">3</tspan></text><path d="M 110.03297 305 C 109.35538 317.3321 107.672194 331.58438 108 342 C 108.327806 352.41562 109.547864 361.1673 112 367.5 C 113.41764 371.1611 115.5836 373.37442 117.84884 375.39535" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="100.541785" y="320.0904" width="16" height="11" fill="white"/><text transform="translate(105.541785 320.0904)" fill="purple"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="purple" x="0" y="9" textLength="5.005371">4</tspan></text><path d="M 133.36264 380 C 138.24127 367.6679 150.6677 355.49875 148 343 C 145.68608 332.1588 132.01485 321.06398 121.76401 310.04676" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="136.39532" y="354.41076" width="16" height="11" fill="white"/><text transform="translate(141.39532 354.41076)" fill="purple"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="purple" x="0" y="9" textLength="5.005371">5</tspan></text><text transform="translate(59 402)" fill="#00c300"><tspan font-family="Zapf Dingbats" font-size="14" font-weight="500" fill="#00c300" x="0" y="11" textLength="11.84668">✔</tspan></text><text transform="translate(124 402)" fill="#00c300"><tspan font-family="Zapf Dingbats" font-size="14" font-weight="500" fill="#00c300" x="0" y="11" textLength="11.84668">✔</tspan></text><path d="M 128.5 303.40226 C 144.66505 309.60088 162.91808 315.15106 177 322 C 191.08192 328.84894 209.28636 334.8343 213 344.5 C 216.09567 352.55727 207.67603 363.62784 202.14012 373.94288" marker-end="url(#Arrow_Marker)" stroke="purple" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><rect x="152.59596" y="309.56811" width="16" height="11" fill="white"/><text transform="translate(157.59596 309.56811)" fill="purple"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="purple" x="0" y="9" textLength="5.005371">6</tspan></text></g></g></svg>
diff --git a/docs/graphics/sw-model-checking.svg b/docs/graphics/sw-model-checking.svg
new file mode 100644 (file)
index 0000000..1fd0a54
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!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" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="32 9 642 191" width="642pt" height="191pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-19 20:40:12 +0000</dc:date></metadata><defs><font-face font-family="Courier" font-size="13" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Hiragino Kaku Gothic Pro" font-size="14" panose-1="2 11 3 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-60" underline-thickness="63" slope="0" x-height="545" cap-height="766" ascent="880.0018" descent="-120.00024" font-weight="400"><font-face-src><font-face-name name="HiraKakuPro-W3"/></font-face-src></font-face><font-face font-family="Courier" font-size="14" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier" font-size="14" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="red"><g><path d="M 4.8 0 L 0 0 M 0 -1.8 L 4.8 0 L 0 1.8" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Zapf Dingbats" font-size="14" panose-1="5 2 1 2 1 7 4 2 6 9" units-per-em="1000" underline-position="-100.097656" underline-thickness="60.058594" slope="0" x-height="542.48047" cap-height="723.14453" ascent="813.96484" descent="-176.75781" font-weight="500"><font-face-src><font-face-name name="ZapfDingbatsITC"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><text transform="translate(432.5 20)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="4.2822266" y="13" textLength="226.23682">Random random = new Random() </tspan></text><text transform="translate(432.5 65.5)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x=".48413086" y="13" textLength="195.03174">int a = random.nextInt(2)</tspan></text><text transform="translate(432.5 110)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x=".48413086" y="13" textLength="195.03174">int b = random.nextInt(3)</tspan></text><text transform="translate(432.5 155)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x=".28857422" y="13" textLength="140.42285">int c = a/(b+a -2)</tspan></text><text transform="translate(411 24)" fill="black"><tspan font-family="Hiragino Kaku Gothic Pro" font-size="14" font-weight="400" x="0" y="12" textLength="14">①</tspan></text><text transform="translate(411 68)" fill="black"><tspan font-family="Hiragino Kaku Gothic Pro" font-size="14" font-weight="400" x="0" y="12" textLength="14">②</tspan></text><text transform="translate(411 112)" fill="black"><tspan font-family="Hiragino Kaku Gothic Pro" font-size="14" font-weight="400" x="0" y="12" textLength="14">③</tspan></text><text transform="translate(411 156)" fill="black"><tspan font-family="Hiragino Kaku Gothic Pro" font-size="14" font-weight="400" x="0" y="12" textLength="14">④</tspan></text><text transform="translate(92 61)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">a=0</tspan></text><text transform="translate(46 108)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">b=0</tspan></text><text transform="translate(100 108)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">b=1</tspan></text><text transform="translate(154 108)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">b=2</tspan></text><line x1="96.68085" y1="78" x2="74.243835" y2="100.92478" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="106.446806" y1="78" x2="109.89197" y2="98.24037" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="116.21276" y1="78" x2="147.89787" y2="102.01936" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(46 153)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">c=0</tspan></text><text transform="translate(100 153)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">c=0</tspan></text><text transform="translate(146.5 153)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".49658203" y="14" textLength="42.006836">c=0/0</tspan></text><line x1="59" y1="125" x2="59" y2="143.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="113" y1="125" x2="113" y2="143.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="167.18889" y1="125" x2="167.59116" y2="143.10244" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(194.5 18)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x=".49658203" y="14" textLength="42.006836">start</tspan></text><line x1="194.05814" y1="35" x2="132.23152" y2="58.95085" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(299 61)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x=".39794922" y="14" textLength="25.204102">a=1</tspan></text><text transform="translate(253 108)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x=".39794922" y="14" textLength="25.204102">b=0</tspan></text><text transform="translate(307 108)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">b=1</tspan></text><text transform="translate(361 108)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">b=2</tspan></text><line x1="303.68085" y1="78" x2="283.34222" y2="98.780774" marker-end="url(#StickArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="313.4468" y1="78" x2="316.89197" y2="98.24037" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="323.21276" y1="78" x2="354.89787" y2="102.01936" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(249 153)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="bold" fill="blue" x=".19726562" y="14" textLength="33.605469">c=-1</tspan></text><text transform="translate(298.5 153)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".49658203" y="14" textLength="42.006836">c=1/0</tspan></text><text transform="translate(362 153)" fill="blue"><tspan font-family="Courier" font-size="14" font-weight="500" fill="blue" x=".39794922" y="14" textLength="25.204102">c=1</tspan></text><line x1="266" y1="125" x2="266" y2="140.1" marker-end="url(#StickArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="320" y1="125" x2="320" y2="143.1" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="374.18889" y1="125" x2="374.59116" y2="143.10244" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="234.97674" y1="35" x2="282.22705" y2="56.1642" marker-end="url(#StickArrow_Marker_2)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><text transform="translate(260 176)" fill="#00c300"><tspan font-family="Zapf Dingbats" font-size="14" font-weight="500" fill="#00c300" x=".076660156" y="11" textLength="11.84668">✔</tspan></text></g></g></svg>