summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/VisualizeCompile.svg361
-rw-r--r--docs/VisualizeCore.svg805
-rw-r--r--docs/build.sc2
-rw-r--r--docs/pages/1 - Intro to Mill.md62
-rw-r--r--readme.md22
5 files changed, 1247 insertions, 5 deletions
diff --git a/docs/VisualizeCompile.svg b/docs/VisualizeCompile.svg
new file mode 100644
index 00000000..73b3d04f
--- /dev/null
+++ b/docs/VisualizeCompile.svg
@@ -0,0 +1,361 @@
+<svg width="2439pt" height="476pt"
+ viewBox="0.00 0.00 2439.44 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<title>example1</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-472 2435.4446,-472 2435.4446,4 -4,4"/>
+<!-- moduledefs.compile -->
+<g id="node1" class="node">
+<title>moduledefs.compile</title>
+<ellipse fill="none" stroke="#000000" cx="769.8174" cy="-18" rx="89.7283" ry="18"/>
+<text text-anchor="middle" x="769.8174" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">moduledefs.compile</text>
+</g>
+<!-- main.client.compile -->
+<g id="node2" class="node">
+<title>main.client.compile</title>
+<ellipse fill="none" stroke="#000000" cx="945.8174" cy="-90" rx="87.9781" ry="18"/>
+<text text-anchor="middle" x="945.8174" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">main.client.compile</text>
+</g>
+<!-- testng.compile -->
+<g id="node3" class="node">
+<title>testng.compile</title>
+<ellipse fill="none" stroke="#000000" cx="2363.8174" cy="-450" rx="67.7546" ry="18"/>
+<text text-anchor="middle" x="2363.8174" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">testng.compile</text>
+</g>
+<!-- core.compile -->
+<g id="node4" class="node">
+<title>core.compile</title>
+<ellipse fill="none" stroke="#000000" cx="769.8174" cy="-90" rx="61.3551" ry="18"/>
+<text text-anchor="middle" x="769.8174" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.compile</text>
+</g>
+<!-- core.compile&#45;&gt;moduledefs.compile -->
+<g id="edge1" class="edge">
+<title>core.compile&#45;&gt;moduledefs.compile</title>
+<path fill="none" stroke="#000000" d="M769.8174,-71.8314C769.8174,-64.131 769.8174,-54.9743 769.8174,-46.4166"/>
+<polygon fill="#000000" stroke="#000000" points="773.3175,-46.4132 769.8174,-36.4133 766.3175,-46.4133 773.3175,-46.4132"/>
+</g>
+<!-- main.compile -->
+<g id="node5" class="node">
+<title>main.compile</title>
+<ellipse fill="none" stroke="#000000" cx="769.8174" cy="-162" rx="63.7434" ry="18"/>
+<text text-anchor="middle" x="769.8174" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">main.compile</text>
+</g>
+<!-- main.compile&#45;&gt;main.client.compile -->
+<g id="edge3" class="edge">
+<title>main.compile&#45;&gt;main.client.compile</title>
+<path fill="none" stroke="#000000" d="M806.2847,-147.0816C832.5183,-136.3496 868.1856,-121.7584 896.892,-110.0149"/>
+<polygon fill="#000000" stroke="#000000" points="898.4065,-113.177 906.3367,-106.1512 895.756,-106.6982 898.4065,-113.177"/>
+</g>
+<!-- main.compile&#45;&gt;core.compile -->
+<g id="edge2" class="edge">
+<title>main.compile&#45;&gt;core.compile</title>
+<path fill="none" stroke="#000000" d="M769.8174,-143.8314C769.8174,-136.131 769.8174,-126.9743 769.8174,-118.4166"/>
+<polygon fill="#000000" stroke="#000000" points="773.3175,-118.4132 769.8174,-108.4133 766.3175,-118.4133 773.3175,-118.4132"/>
+</g>
+<!-- main.test.compile -->
+<g id="node6" class="node">
+<title>main.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="703.8174" cy="-306" rx="79.8914" ry="18"/>
+<text text-anchor="middle" x="703.8174" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">main.test.compile</text>
+</g>
+<!-- main.test.compile&#45;&gt;main.compile -->
+<g id="edge4" class="edge">
+<title>main.test.compile&#45;&gt;main.compile</title>
+<path fill="none" stroke="#000000" d="M711.9531,-288.0556C720.2028,-269.88 733.3521,-240.965 744.8174,-216 748.8272,-207.2689 753.2229,-197.755 757.195,-189.1792"/>
+<polygon fill="#000000" stroke="#000000" points="760.4257,-190.5319 761.4565,-179.9873 754.075,-187.5876 760.4257,-190.5319"/>
+</g>
+<!-- main.client.test.compile -->
+<g id="node7" class="node">
+<title>main.client.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="954.8174" cy="-162" rx="103.6252" ry="18"/>
+<text text-anchor="middle" x="954.8174" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">main.client.test.compile</text>
+</g>
+<!-- main.client.test.compile&#45;&gt;main.client.compile -->
+<g id="edge5" class="edge">
+<title>main.client.test.compile&#45;&gt;main.client.compile</title>
+<path fill="none" stroke="#000000" d="M952.5463,-143.8314C951.5838,-136.131 950.4392,-126.9743 949.3695,-118.4166"/>
+<polygon fill="#000000" stroke="#000000" points="952.8325,-117.9019 948.1191,-108.4133 945.8865,-118.7702 952.8325,-117.9019"/>
+</g>
+<!-- scalalib.compile -->
+<g id="node8" class="node">
+<title>scalalib.compile</title>
+<ellipse fill="none" stroke="#000000" cx="827.8174" cy="-234" rx="74.1116" ry="18"/>
+<text text-anchor="middle" x="827.8174" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalalib.compile</text>
+</g>
+<!-- scalalib.compile&#45;&gt;main.compile -->
+<g id="edge6" class="edge">
+<title>scalalib.compile&#45;&gt;main.compile</title>
+<path fill="none" stroke="#000000" d="M813.4803,-216.2022C806.5269,-207.5704 798.0472,-197.0439 790.4168,-187.5717"/>
+<polygon fill="#000000" stroke="#000000" points="792.9885,-185.1849 783.9896,-179.593 787.5373,-189.5763 792.9885,-185.1849"/>
+</g>
+<!-- main.graphviz.compile -->
+<g id="node9" class="node">
+<title>main.graphviz.compile</title>
+<ellipse fill="none" stroke="#000000" cx="449.8174" cy="-306" rx="100.1433" ry="18"/>
+<text text-anchor="middle" x="449.8174" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">main.graphviz.compile</text>
+</g>
+<!-- main.graphviz.compile&#45;&gt;scalalib.compile -->
+<g id="edge7" class="edge">
+<title>main.graphviz.compile&#45;&gt;scalalib.compile</title>
+<path fill="none" stroke="#000000" d="M518.7089,-292.8778C586.9675,-279.8762 690.9147,-260.0767 759.1093,-247.0873"/>
+<polygon fill="#000000" stroke="#000000" points="760.1508,-250.4519 769.3192,-245.1425 758.8409,-243.5755 760.1508,-250.4519"/>
+</g>
+<!-- main.graphviz.test.compile -->
+<g id="node10" class="node">
+<title>main.graphviz.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="311.8174" cy="-378" rx="115.791" ry="18"/>
+<text text-anchor="middle" x="311.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">main.graphviz.test.compile</text>
+</g>
+<!-- main.graphviz.test.compile&#45;&gt;main.test.compile -->
+<g id="edge9" class="edge">
+<title>main.graphviz.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M386.9351,-364.2029C457.4949,-351.2429 562.3458,-331.9846 631.8587,-319.2169"/>
+<polygon fill="#000000" stroke="#000000" points="632.6469,-322.6308 641.85,-317.3818 631.3823,-315.7459 632.6469,-322.6308"/>
+</g>
+<!-- main.graphviz.test.compile&#45;&gt;main.graphviz.compile -->
+<g id="edge8" class="edge">
+<title>main.graphviz.test.compile&#45;&gt;main.graphviz.compile</title>
+<path fill="none" stroke="#000000" d="M345.2234,-360.5708C364.1771,-350.6819 388.0652,-338.2185 408.2258,-327.7"/>
+<polygon fill="#000000" stroke="#000000" points="409.9484,-330.749 417.1953,-323.0202 406.7104,-324.5429 409.9484,-330.749"/>
+</g>
+<!-- scalalib.test.compile -->
+<g id="node11" class="node">
+<title>scalalib.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="859.8174" cy="-378" rx="89.7595" ry="18"/>
+<text text-anchor="middle" x="859.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalalib.test.compile</text>
+</g>
+<!-- scalalib.test.compile&#45;&gt;main.test.compile -->
+<g id="edge11" class="edge">
+<title>scalalib.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M824.0279,-361.4817C801.4747,-351.0726 772.1839,-337.5538 748.1623,-326.4669"/>
+<polygon fill="#000000" stroke="#000000" points="749.4491,-323.206 738.9028,-322.1933 746.5157,-329.5618 749.4491,-323.206"/>
+</g>
+<!-- scalalib.test.compile&#45;&gt;scalalib.compile -->
+<g id="edge10" class="edge">
+<title>scalalib.test.compile&#45;&gt;scalalib.compile</title>
+<path fill="none" stroke="#000000" d="M855.7646,-359.7623C850.2825,-335.0928 840.4529,-290.8598 834.0336,-261.9731"/>
+<polygon fill="#000000" stroke="#000000" points="837.4234,-261.0922 831.8373,-252.0896 830.59,-262.6108 837.4234,-261.0922"/>
+</g>
+<!-- scalalib.worker.compile -->
+<g id="node12" class="node">
+<title>scalalib.worker.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1027.8174" cy="-306" rx="103.6296" ry="18"/>
+<text text-anchor="middle" x="1027.8174" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalalib.worker.compile</text>
+</g>
+<!-- scalalib.worker.compile&#45;&gt;scalalib.compile -->
+<g id="edge12" class="edge">
+<title>scalalib.worker.compile&#45;&gt;scalalib.compile</title>
+<path fill="none" stroke="#000000" d="M982.4343,-289.6621C951.6227,-278.5699 910.8323,-263.8854 878.8846,-252.3842"/>
+<polygon fill="#000000" stroke="#000000" points="879.869,-249.0187 869.2746,-248.9246 877.4979,-255.605 879.869,-249.0187"/>
+</g>
+<!-- scalalib.worker.test.compile -->
+<g id="node13" class="node">
+<title>scalalib.worker.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1087.8174" cy="-378" rx="119.7772" ry="18"/>
+<text text-anchor="middle" x="1087.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalalib.worker.test.compile</text>
+</g>
+<!-- scalalib.worker.test.compile&#45;&gt;main.test.compile -->
+<g id="edge14" class="edge">
+<title>scalalib.worker.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M1012.8668,-363.9468C944.1491,-351.0622 843.0839,-332.1125 775.4371,-319.4287"/>
+<polygon fill="#000000" stroke="#000000" points="775.7661,-315.9295 765.2923,-317.5266 774.476,-322.8096 775.7661,-315.9295"/>
+</g>
+<!-- scalalib.worker.test.compile&#45;&gt;scalalib.worker.compile -->
+<g id="edge13" class="edge">
+<title>scalalib.worker.test.compile&#45;&gt;scalalib.worker.compile</title>
+<path fill="none" stroke="#000000" d="M1072.6769,-359.8314C1065.5883,-351.3251 1057.019,-341.0419 1049.2774,-331.752"/>
+<polygon fill="#000000" stroke="#000000" points="1051.8359,-329.355 1042.7452,-323.9134 1046.4583,-333.8363 1051.8359,-329.355"/>
+</g>
+<!-- core.test.compile -->
+<g id="node14" class="node">
+<title>core.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="560.8174" cy="-378" rx="77.0023" ry="18"/>
+<text text-anchor="middle" x="560.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.test.compile</text>
+</g>
+<!-- core.test.compile&#45;&gt;main.test.compile -->
+<g id="edge15" class="edge">
+<title>core.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M593.2663,-361.6621C613.5996,-351.4244 640.0109,-338.1264 661.9192,-327.0956"/>
+<polygon fill="#000000" stroke="#000000" points="663.6442,-330.1458 671.0019,-322.5225 660.4961,-323.8935 663.6442,-330.1458"/>
+</g>
+<!-- scalajslib.compile -->
+<g id="node15" class="node">
+<title>scalajslib.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1692.8174" cy="-306" rx="80.4901" ry="18"/>
+<text text-anchor="middle" x="1692.8174" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalajslib.compile</text>
+</g>
+<!-- scalajslib.compile&#45;&gt;scalalib.compile -->
+<g id="edge16" class="edge">
+<title>scalajslib.compile&#45;&gt;scalalib.compile</title>
+<path fill="none" stroke="#000000" d="M1617.1904,-299.705C1454.9005,-286.1965 1074.508,-254.5338 908.1202,-240.6842"/>
+<polygon fill="#000000" stroke="#000000" points="908.2104,-237.1797 897.9545,-239.838 907.6297,-244.1555 908.2104,-237.1797"/>
+</g>
+<!-- dev.compile -->
+<g id="node16" class="node">
+<title>dev.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1976.8174" cy="-378" rx="58.5085" ry="18"/>
+<text text-anchor="middle" x="1976.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">dev.compile</text>
+</g>
+<!-- dev.compile&#45;&gt;scalajslib.compile -->
+<g id="edge17" class="edge">
+<title>dev.compile&#45;&gt;scalajslib.compile</title>
+<path fill="none" stroke="#000000" d="M1932.5805,-366.1957C1924.6723,-364.1124 1916.5048,-361.9783 1908.8174,-360 1857.7654,-346.8623 1799.8072,-332.3973 1756.7891,-321.7475"/>
+<polygon fill="#000000" stroke="#000000" points="1757.5666,-318.3344 1747.0188,-319.3307 1755.8857,-325.1296 1757.5666,-318.3344"/>
+</g>
+<!-- dev.test.compile -->
+<g id="node17" class="node">
+<title>dev.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1817.8174" cy="-450" rx="74.1566" ry="18"/>
+<text text-anchor="middle" x="1817.8174" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">dev.test.compile</text>
+</g>
+<!-- dev.test.compile&#45;&gt;main.test.compile -->
+<g id="edge19" class="edge">
+<title>dev.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M1748.6515,-443.3587C1707.2477,-439.5749 1653.5577,-435.004 1605.8174,-432 1557.095,-428.9342 765.9126,-426.5291 727.8174,-396 709.657,-381.4465 704.3302,-354.8133 703.147,-334.2813"/>
+<polygon fill="#000000" stroke="#000000" points="706.6431,-334.0932 702.8599,-324.1969 699.646,-334.2924 706.6431,-334.0932"/>
+</g>
+<!-- dev.test.compile&#45;&gt;dev.compile -->
+<g id="edge18" class="edge">
+<title>dev.test.compile&#45;&gt;dev.compile</title>
+<path fill="none" stroke="#000000" d="M1853.1047,-434.0209C1877.1178,-423.147 1909.022,-408.6998 1934.4163,-397.2005"/>
+<polygon fill="#000000" stroke="#000000" points="1936.1344,-400.2647 1943.8001,-392.9512 1933.2468,-393.888 1936.1344,-400.2647"/>
+</g>
+<!-- scalajslib.test.compile -->
+<g id="node18" class="node">
+<title>scalajslib.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1321.8174" cy="-378" rx="96.1382" ry="18"/>
+<text text-anchor="middle" x="1321.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalajslib.test.compile</text>
+</g>
+<!-- scalajslib.test.compile&#45;&gt;main.test.compile -->
+<g id="edge21" class="edge">
+<title>scalajslib.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M1252.4455,-365.4537C1240.5799,-363.4952 1228.3596,-361.5951 1216.8174,-360 1066.727,-339.2579 890.9548,-322.3462 789.0039,-313.2618"/>
+<polygon fill="#000000" stroke="#000000" points="789.0353,-309.7509 778.7651,-312.3536 788.4168,-316.7235 789.0353,-309.7509"/>
+</g>
+<!-- scalajslib.test.compile&#45;&gt;scalajslib.compile -->
+<g id="edge20" class="edge">
+<title>scalajslib.test.compile&#45;&gt;scalajslib.compile</title>
+<path fill="none" stroke="#000000" d="M1389.0027,-364.9613C1454.8441,-352.1835 1554.816,-332.7819 1621.9086,-319.7613"/>
+<polygon fill="#000000" stroke="#000000" points="1622.8222,-323.1494 1631.9722,-317.8082 1621.4885,-316.2776 1622.8222,-323.1494"/>
+</g>
+<!-- scalajslib.jsbridges[0.6].compile -->
+<g id="node19" class="node">
+<title>scalajslib.jsbridges[0.6].compile</title>
+<ellipse fill="none" stroke="#000000" cx="1572.8174" cy="-378" rx="136.0514" ry="18"/>
+<text text-anchor="middle" x="1572.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalajslib.jsbridges[0.6].compile</text>
+</g>
+<!-- scalajslib.jsbridges[0.6].compile&#45;&gt;scalajslib.compile -->
+<g id="edge22" class="edge">
+<title>scalajslib.jsbridges[0.6].compile&#45;&gt;scalajslib.compile</title>
+<path fill="none" stroke="#000000" d="M1602.1727,-360.3868C1618.3625,-350.6729 1638.6214,-338.5176 1655.8783,-328.1634"/>
+<polygon fill="#000000" stroke="#000000" points="1657.8173,-331.0818 1664.5915,-322.9355 1654.2158,-325.0793 1657.8173,-331.0818"/>
+</g>
+<!-- scalajslib.jsbridges[0.6].test.compile -->
+<g id="node20" class="node">
+<title>scalajslib.jsbridges[0.6].test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="966.8174" cy="-450" rx="152.1988" ry="18"/>
+<text text-anchor="middle" x="966.8174" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalajslib.jsbridges[0.6].test.compile</text>
+</g>
+<!-- scalajslib.jsbridges[0.6].test.compile&#45;&gt;main.test.compile -->
+<g id="edge24" class="edge">
+<title>scalajslib.jsbridges[0.6].test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M823.6978,-443.8679C686.8403,-436.4969 497.9192,-421.776 474.8174,-396 464.1387,-384.0851 464.8865,-372.545 474.8174,-360 493.062,-336.9528 563.1727,-322.7521 621.0644,-314.7355"/>
+<polygon fill="#000000" stroke="#000000" points="621.5308,-318.2043 630.9766,-313.4057 620.6,-311.2665 621.5308,-318.2043"/>
+</g>
+<!-- scalajslib.jsbridges[0.6].test.compile&#45;&gt;scalajslib.jsbridges[0.6].compile -->
+<g id="edge23" class="edge">
+<title>scalajslib.jsbridges[0.6].test.compile&#45;&gt;scalajslib.jsbridges[0.6].compile</title>
+<path fill="none" stroke="#000000" d="M1075.5811,-437.4125C1168.8049,-426.5803 1306.6679,-410.4586 1426.8174,-396 1438.6041,-394.5816 1450.9241,-393.0848 1463.1952,-391.5849"/>
+<polygon fill="#000000" stroke="#000000" points="1463.978,-395.0153 1473.4785,-390.3259 1463.1273,-388.0672 1463.978,-395.0153"/>
+</g>
+<!-- scalajslib.jsbridges[1.0].compile -->
+<g id="node21" class="node">
+<title>scalajslib.jsbridges[1.0].compile</title>
+<ellipse fill="none" stroke="#000000" cx="2189.8174" cy="-378" rx="136.0514" ry="18"/>
+<text text-anchor="middle" x="2189.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalajslib.jsbridges[1.0].compile</text>
+</g>
+<!-- scalajslib.jsbridges[1.0].compile&#45;&gt;scalajslib.compile -->
+<g id="edge25" class="edge">
+<title>scalajslib.jsbridges[1.0].compile&#45;&gt;scalajslib.compile</title>
+<path fill="none" stroke="#000000" d="M2097.7907,-364.6682C2003.6304,-351.0272 1858.9378,-330.0657 1770.3982,-317.2391"/>
+<polygon fill="#000000" stroke="#000000" points="1770.8162,-313.7632 1760.4177,-315.7932 1769.8125,-320.6908 1770.8162,-313.7632"/>
+</g>
+<!-- scalajslib.jsbridges[1.0].test.compile -->
+<g id="node22" class="node">
+<title>scalajslib.jsbridges[1.0].test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="2125.8174" cy="-450" rx="152.1988" ry="18"/>
+<text text-anchor="middle" x="2125.8174" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">scalajslib.jsbridges[1.0].test.compile</text>
+</g>
+<!-- scalajslib.jsbridges[1.0].test.compile&#45;&gt;main.test.compile -->
+<g id="edge27" class="edge">
+<title>scalajslib.jsbridges[1.0].test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M2004.1561,-439.1879C1970.6876,-436.5078 1934.3684,-433.8707 1900.8174,-432 1837.5508,-428.4724 815.8414,-427.4241 760.8174,-396 748.2695,-388.8339 729.8034,-356.885 717.3187,-333.077"/>
+<polygon fill="#000000" stroke="#000000" points="720.3851,-331.3869 712.6909,-324.1033 714.1637,-334.5953 720.3851,-331.3869"/>
+</g>
+<!-- scalajslib.jsbridges[1.0].test.compile&#45;&gt;scalajslib.jsbridges[1.0].compile -->
+<g id="edge26" class="edge">
+<title>scalajslib.jsbridges[1.0].test.compile&#45;&gt;scalajslib.jsbridges[1.0].compile</title>
+<path fill="none" stroke="#000000" d="M2141.9673,-431.8314C2149.6048,-423.2392 2158.8538,-412.834 2167.1767,-403.4708"/>
+<polygon fill="#000000" stroke="#000000" points="2169.8666,-405.7128 2173.8944,-395.9134 2164.6348,-401.0622 2169.8666,-405.7128"/>
+</g>
+<!-- twirllib.compile -->
+<g id="node23" class="node">
+<title>twirllib.compile</title>
+<ellipse fill="none" stroke="#000000" cx="145.8174" cy="-306" rx="72.9871" ry="18"/>
+<text text-anchor="middle" x="145.8174" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">twirllib.compile</text>
+</g>
+<!-- twirllib.compile&#45;&gt;scalalib.compile -->
+<g id="edge28" class="edge">
+<title>twirllib.compile&#45;&gt;scalalib.compile</title>
+<path fill="none" stroke="#000000" d="M213.0767,-298.8993C340.072,-285.4922 614.4994,-256.5204 749.5358,-242.2643"/>
+<polygon fill="#000000" stroke="#000000" points="750.2237,-245.7113 759.8009,-241.1806 749.4887,-238.7499 750.2237,-245.7113"/>
+</g>
+<!-- twirllib.test.compile -->
+<g id="node24" class="node">
+<title>twirllib.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="88.8174" cy="-378" rx="88.6352" ry="18"/>
+<text text-anchor="middle" x="88.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">twirllib.test.compile</text>
+</g>
+<!-- twirllib.test.compile&#45;&gt;main.test.compile -->
+<g id="edge30" class="edge">
+<title>twirllib.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M152.7394,-365.4484C164.0648,-363.4565 175.7676,-361.5466 186.8174,-360 351.3196,-336.9755 393.7154,-342.2331 558.8174,-324 580.1485,-321.6443 603.2167,-318.8797 624.5444,-316.2339"/>
+<polygon fill="#000000" stroke="#000000" points="625.0429,-319.6989 634.5326,-314.9878 624.1762,-312.7527 625.0429,-319.6989"/>
+</g>
+<!-- twirllib.test.compile&#45;&gt;twirllib.compile -->
+<g id="edge29" class="edge">
+<title>twirllib.test.compile&#45;&gt;twirllib.compile</title>
+<path fill="none" stroke="#000000" d="M102.9073,-360.2022C109.6898,-351.6348 117.95,-341.2009 125.4051,-331.7839"/>
+<polygon fill="#000000" stroke="#000000" points="128.2292,-333.8555 131.6921,-323.8425 122.7408,-329.5106 128.2292,-333.8555"/>
+</g>
+<!-- integration.compile -->
+<g id="node25" class="node">
+<title>integration.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1813.8174" cy="-378" rx="86.2949" ry="18"/>
+<text text-anchor="middle" x="1813.8174" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">integration.compile</text>
+</g>
+<!-- integration.compile&#45;&gt;scalajslib.compile -->
+<g id="edge31" class="edge">
+<title>integration.compile&#45;&gt;scalajslib.compile</title>
+<path fill="none" stroke="#000000" d="M1785.1421,-360.937C1768.7168,-351.1633 1747.9165,-338.7863 1730.2191,-328.2555"/>
+<polygon fill="#000000" stroke="#000000" points="1731.6703,-325.0464 1721.2869,-322.9405 1728.0908,-331.0619 1731.6703,-325.0464"/>
+</g>
+<!-- integration.test.compile -->
+<g id="node26" class="node">
+<title>integration.test.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1494.8174" cy="-450" rx="102.443" ry="18"/>
+<text text-anchor="middle" x="1494.8174" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">integration.test.compile</text>
+</g>
+<!-- integration.test.compile&#45;&gt;main.test.compile -->
+<g id="edge33" class="edge">
+<title>integration.test.compile&#45;&gt;main.test.compile</title>
+<path fill="none" stroke="#000000" d="M1396.2345,-445.1341C1183.9625,-434.4251 701.7467,-408.7563 689.8174,-396 674.3166,-379.4246 680.5955,-353.1485 689.106,-333.2576"/>
+<polygon fill="#000000" stroke="#000000" points="692.3325,-334.6196 693.3774,-324.0764 685.9858,-331.6668 692.3325,-334.6196"/>
+</g>
+<!-- integration.test.compile&#45;&gt;integration.compile -->
+<g id="edge32" class="edge">
+<title>integration.test.compile&#45;&gt;integration.compile</title>
+<path fill="none" stroke="#000000" d="M1557.8415,-435.7751C1611.8837,-423.5775 1689.5947,-406.0377 1745.1949,-393.4885"/>
+<polygon fill="#000000" stroke="#000000" points="1745.9768,-396.9001 1754.9608,-391.2842 1744.4356,-390.0719 1745.9768,-396.9001"/>
+</g>
+</g>
+</svg>
diff --git a/docs/VisualizeCore.svg b/docs/VisualizeCore.svg
new file mode 100644
index 00000000..272fe080
--- /dev/null
+++ b/docs/VisualizeCore.svg
@@ -0,0 +1,805 @@
+<svg width="3257pt" height="476pt"
+ viewBox="0.00 0.00 3257.17 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
+<title>example1</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-472 3253.1744,-472 3253.1744,4 -4,4"/>
+<!-- core.scalaVersion -->
+<g id="node1" class="node">
+<title>core.scalaVersion</title>
+<ellipse fill="none" stroke="#000000" cx="1488.2502" cy="-18" rx="79.8719" ry="18"/>
+<text text-anchor="middle" x="1488.2502" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalaVersion</text>
+</g>
+<!-- core.sources -->
+<g id="node2" class="node">
+<title>core.sources</title>
+<ellipse fill="none" stroke="#000000" cx="587.2502" cy="-18" rx="59.0476" ry="18"/>
+<text text-anchor="middle" x="587.2502" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.sources</text>
+</g>
+<!-- core.generatedSources -->
+<g id="node3" class="node">
+<title>core.generatedSources</title>
+<ellipse fill="none" stroke="#000000" cx="762.2502" cy="-18" rx="98.3348" ry="18"/>
+<text text-anchor="middle" x="762.2502" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.generatedSources</text>
+</g>
+<!-- core.platformSuffix -->
+<g id="node4" class="node">
+<title>core.platformSuffix</title>
+<ellipse fill="none" stroke="#000000" cx="1698.2502" cy="-90" rx="87.4174" ry="18"/>
+<text text-anchor="middle" x="1698.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.platformSuffix</text>
+</g>
+<!-- core.transitiveLocalClasspath -->
+<g id="node5" class="node">
+<title>core.transitiveLocalClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2833.2502" cy="-90" rx="125.5739" ry="18"/>
+<text text-anchor="middle" x="2833.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.transitiveLocalClasspath</text>
+</g>
+<!-- core.resources -->
+<g id="node6" class="node">
+<title>core.resources</title>
+<ellipse fill="none" stroke="#000000" cx="1488.2502" cy="-90" rx="66.5506" ry="18"/>
+<text text-anchor="middle" x="1488.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.resources</text>
+</g>
+<!-- core.unmanagedClasspath -->
+<g id="node7" class="node">
+<title>core.unmanagedClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2337.2502" cy="-90" rx="112.2626" ry="18"/>
+<text text-anchor="middle" x="2337.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.unmanagedClasspath</text>
+</g>
+<!-- core.ivyDeps -->
+<g id="node8" class="node">
+<title>core.ivyDeps</title>
+<ellipse fill="none" stroke="#000000" cx="62.2502" cy="-18" rx="62.0014" ry="18"/>
+<text text-anchor="middle" x="62.2502" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.ivyDeps</text>
+</g>
+<!-- core.scalacOptions -->
+<g id="node9" class="node">
+<title>core.scalacOptions</title>
+<ellipse fill="none" stroke="#000000" cx="899.2502" cy="-162" rx="84.4671" ry="18"/>
+<text text-anchor="middle" x="899.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalacOptions</text>
+</g>
+<!-- core.scalacPluginIvyDeps -->
+<g id="node10" class="node">
+<title>core.scalacPluginIvyDeps</title>
+<ellipse fill="none" stroke="#000000" cx="1215.2502" cy="-90" rx="111.677" ry="18"/>
+<text text-anchor="middle" x="1215.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalacPluginIvyDeps</text>
+</g>
+<!-- core.javacOptions -->
+<g id="node11" class="node">
+<title>core.javacOptions</title>
+<ellipse fill="none" stroke="#000000" cx="2306.2502" cy="-162" rx="81.0388" ry="18"/>
+<text text-anchor="middle" x="2306.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.javacOptions</text>
+</g>
+<!-- core.upstreamCompileOutput -->
+<g id="node12" class="node">
+<title>core.upstreamCompileOutput</title>
+<ellipse fill="none" stroke="#000000" cx="2531.2502" cy="-162" rx="125.6029" ry="18"/>
+<text text-anchor="middle" x="2531.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.upstreamCompileOutput</text>
+</g>
+<!-- core.mainClass -->
+<g id="node13" class="node">
+<title>core.mainClass</title>
+<ellipse fill="none" stroke="#000000" cx="2692.2502" cy="-234" rx="70.101" ry="18"/>
+<text text-anchor="middle" x="2692.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.mainClass</text>
+</g>
+<!-- core.artifactName -->
+<g id="node14" class="node">
+<title>core.artifactName</title>
+<ellipse fill="none" stroke="#000000" cx="346.2502" cy="-162" rx="80.4302" ry="18"/>
+<text text-anchor="middle" x="346.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.artifactName</text>
+</g>
+<!-- core.crossFullScalaVersion -->
+<g id="node15" class="node">
+<title>core.crossFullScalaVersion</title>
+<ellipse fill="none" stroke="#000000" cx="995.2502" cy="-18" rx="116.9078" ry="18"/>
+<text text-anchor="middle" x="995.2502" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.crossFullScalaVersion</text>
+</g>
+<!-- core.publishVersion -->
+<g id="node16" class="node">
+<title>core.publishVersion</title>
+<ellipse fill="none" stroke="#000000" cx="179.2502" cy="-234" rx="89.1467" ry="18"/>
+<text text-anchor="middle" x="179.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.publishVersion</text>
+</g>
+<!-- core.runIvyDeps -->
+<g id="node17" class="node">
+<title>core.runIvyDeps</title>
+<ellipse fill="none" stroke="#000000" cx="3052.2502" cy="-90" rx="75.8064" ry="18"/>
+<text text-anchor="middle" x="3052.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.runIvyDeps</text>
+</g>
+<!-- core.forkArgs -->
+<g id="node18" class="node">
+<title>core.forkArgs</title>
+<ellipse fill="none" stroke="#000000" cx="3184.2502" cy="-234" rx="64.8485" ry="18"/>
+<text text-anchor="middle" x="3184.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.forkArgs</text>
+</g>
+<!-- core.forkEnv -->
+<g id="node19" class="node">
+<title>core.forkEnv</title>
+<ellipse fill="none" stroke="#000000" cx="2752.2502" cy="-450" rx="61.9214" ry="18"/>
+<text text-anchor="middle" x="2752.2502" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.forkEnv</text>
+</g>
+<!-- core.testArgs -->
+<g id="node20" class="node">
+<title>core.testArgs</title>
+<ellipse fill="none" stroke="#000000" cx="2894.2502" cy="-450" rx="62.4956" ry="18"/>
+<text text-anchor="middle" x="2894.2502" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.testArgs</text>
+</g>
+<!-- core.allSources -->
+<g id="node21" class="node">
+<title>core.allSources</title>
+<ellipse fill="none" stroke="#000000" cx="762.2502" cy="-90" rx="70.0817" ry="18"/>
+<text text-anchor="middle" x="762.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.allSources</text>
+</g>
+<!-- core.allSources&#45;&gt;core.sources -->
+<g id="edge1" class="edge">
+<title>core.allSources&#45;&gt;core.sources</title>
+<path fill="none" stroke="#000000" d="M724.7083,-74.5542C697.5487,-63.38 660.7319,-48.2325 632.0363,-36.4263"/>
+<polygon fill="#000000" stroke="#000000" points="633.2214,-33.1293 622.6418,-32.5611 630.558,-39.6028 633.2214,-33.1293"/>
+</g>
+<!-- core.allSources&#45;&gt;core.generatedSources -->
+<g id="edge2" class="edge">
+<title>core.allSources&#45;&gt;core.generatedSources</title>
+<path fill="none" stroke="#000000" d="M762.2502,-71.8314C762.2502,-64.131 762.2502,-54.9743 762.2502,-46.4166"/>
+<polygon fill="#000000" stroke="#000000" points="765.7503,-46.4132 762.2502,-36.4133 758.7503,-46.4133 765.7503,-46.4132"/>
+</g>
+<!-- core.allSourceFiles -->
+<g id="node22" class="node">
+<title>core.allSourceFiles</title>
+<ellipse fill="none" stroke="#000000" cx="1087.2502" cy="-162" rx="85.1262" ry="18"/>
+<text text-anchor="middle" x="1087.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.allSourceFiles</text>
+</g>
+<!-- core.allSourceFiles&#45;&gt;core.allSources -->
+<g id="edge3" class="edge">
+<title>core.allSourceFiles&#45;&gt;core.allSources</title>
+<path fill="none" stroke="#000000" d="M1028.3951,-148.9613C971.0727,-136.2622 884.2187,-117.0207 825.4565,-104.0026"/>
+<polygon fill="#000000" stroke="#000000" points="826.0716,-100.5541 815.5513,-101.8082 824.5575,-107.3884 826.0716,-100.5541"/>
+</g>
+<!-- core.scalaCompilerBridgeSources -->
+<g id="node23" class="node">
+<title>core.scalaCompilerBridgeSources</title>
+<ellipse fill="none" stroke="#000000" cx="1849.2502" cy="-162" rx="142.8931" ry="18"/>
+<text text-anchor="middle" x="1849.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalaCompilerBridgeSources</text>
+</g>
+<!-- core.scalaCompilerBridgeSources&#45;&gt;core.scalaVersion -->
+<g id="edge4" class="edge">
+<title>core.scalaCompilerBridgeSources&#45;&gt;core.scalaVersion</title>
+<path fill="none" stroke="#000000" d="M1737.8174,-150.7445C1693.7223,-143.0101 1643.7614,-129.9717 1602.2502,-108 1581.6883,-97.1167 1582.2214,-86.774 1564.2502,-72 1551.1218,-61.2073 1535.9775,-50.1836 1522.6794,-40.9341"/>
+<polygon fill="#000000" stroke="#000000" points="1524.4694,-37.9173 1514.2471,-35.1324 1520.5015,-43.6841 1524.4694,-37.9173"/>
+</g>
+<!-- core.scalaCompilerBridgeSources&#45;&gt;core.platformSuffix -->
+<g id="edge5" class="edge">
+<title>core.scalaCompilerBridgeSources&#45;&gt;core.platformSuffix</title>
+<path fill="none" stroke="#000000" d="M1812.6973,-144.5708C1791.4657,-134.4471 1764.5755,-121.6253 1742.1959,-110.9542"/>
+<polygon fill="#000000" stroke="#000000" points="1743.4432,-107.6715 1732.9104,-106.5267 1740.4304,-113.99 1743.4432,-107.6715"/>
+</g>
+<!-- core.compileIvyDeps -->
+<g id="node24" class="node">
+<title>core.compileIvyDeps</title>
+<ellipse fill="none" stroke="#000000" cx="1897.2502" cy="-90" rx="93.7824" ry="18"/>
+<text text-anchor="middle" x="1897.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.compileIvyDeps</text>
+</g>
+<!-- core.compileIvyDeps&#45;&gt;core.scalaVersion -->
+<g id="edge6" class="edge">
+<title>core.compileIvyDeps&#45;&gt;core.scalaVersion</title>
+<path fill="none" stroke="#000000" d="M1827.8689,-77.7862C1753.7094,-64.7312 1636.64,-44.1224 1561.1544,-30.834"/>
+<polygon fill="#000000" stroke="#000000" points="1561.7015,-27.3766 1551.2461,-29.0898 1560.4879,-34.2706 1561.7015,-27.3766"/>
+</g>
+<!-- core.scalaLibraryIvyDeps -->
+<g id="node25" class="node">
+<title>core.scalaLibraryIvyDeps</title>
+<ellipse fill="none" stroke="#000000" cx="2578.2502" cy="-90" rx="111.0741" ry="18"/>
+<text text-anchor="middle" x="2578.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalaLibraryIvyDeps</text>
+</g>
+<!-- core.scalaLibraryIvyDeps&#45;&gt;core.scalaVersion -->
+<g id="edge7" class="edge">
+<title>core.scalaLibraryIvyDeps&#45;&gt;core.scalaVersion</title>
+<path fill="none" stroke="#000000" d="M2499.9556,-77.1805C2486.0903,-75.2177 2471.767,-73.387 2458.2502,-72 2135.3632,-38.8688 1749.7764,-25.0337 1578.221,-20.2062"/>
+<polygon fill="#000000" stroke="#000000" points="1578.0709,-16.7008 1567.9775,-19.9215 1577.8764,-23.6981 1578.0709,-16.7008"/>
+</g>
+<!-- core.transitiveIvyDeps -->
+<g id="node26" class="node">
+<title>core.transitiveIvyDeps</title>
+<ellipse fill="none" stroke="#000000" cx="2108.2502" cy="-90" rx="98.934" ry="18"/>
+<text text-anchor="middle" x="2108.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.transitiveIvyDeps</text>
+</g>
+<!-- core.transitiveIvyDeps&#45;&gt;core.ivyDeps -->
+<g id="edge8" class="edge">
+<title>core.transitiveIvyDeps&#45;&gt;core.ivyDeps</title>
+<path fill="none" stroke="#000000" d="M2039.3028,-77.0232C2026.3687,-75.0116 2012.9289,-73.2046 2000.2502,-72 1344.7853,-9.7241 1177.3332,-56.9572 519.2502,-36 383.0378,-31.6622 224.0495,-25.0499 134.0536,-21.1628"/>
+<polygon fill="#000000" stroke="#000000" points="134.1031,-17.6618 123.961,-20.7258 133.8002,-24.6552 134.1031,-17.6618"/>
+</g>
+<!-- core.compileClasspath -->
+<g id="node27" class="node">
+<title>core.compileClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2108.2502" cy="-162" rx="98.9533" ry="18"/>
+<text text-anchor="middle" x="2108.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.compileClasspath</text>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.platformSuffix -->
+<g id="edge9" class="edge">
+<title>core.compileClasspath&#45;&gt;core.platformSuffix</title>
+<path fill="none" stroke="#000000" d="M2035.865,-149.6815C1958.0501,-136.4157 1839.4369,-116.1213 1794.2502,-108 1787.2509,-106.742 1779.9686,-105.4132 1772.6838,-104.0704"/>
+<polygon fill="#000000" stroke="#000000" points="1773.2448,-100.6149 1762.7747,-102.2361 1771.9705,-107.4979 1773.2448,-100.6149"/>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.transitiveLocalClasspath -->
+<g id="edge13" class="edge">
+<title>core.compileClasspath&#45;&gt;core.transitiveLocalClasspath</title>
+<path fill="none" stroke="#000000" d="M2178.7028,-149.313C2191.1829,-147.3358 2204.0776,-145.4659 2216.2502,-144 2429.5281,-118.3156 2484.582,-130.205 2698.2502,-108 2709.7337,-106.8066 2721.7479,-105.4136 2733.6725,-103.9406"/>
+<polygon fill="#000000" stroke="#000000" points="2734.1686,-107.4059 2743.6545,-102.687 2733.2963,-100.4604 2734.1686,-107.4059"/>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.resources -->
+<g id="edge14" class="edge">
+<title>core.compileClasspath&#45;&gt;core.resources</title>
+<path fill="none" stroke="#000000" d="M2037.8583,-149.3697C2025.675,-147.4096 2013.1136,-145.5308 2001.2502,-144 1824.6605,-121.2143 1778.9523,-129.897 1602.2502,-108 1586.8356,-106.0898 1570.3033,-103.686 1554.7436,-101.2626"/>
+<polygon fill="#000000" stroke="#000000" points="1555.1044,-97.7763 1544.6806,-99.6723 1554.0116,-104.6905 1555.1044,-97.7763"/>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.unmanagedClasspath -->
+<g id="edge15" class="edge">
+<title>core.compileClasspath&#45;&gt;core.unmanagedClasspath</title>
+<path fill="none" stroke="#000000" d="M2157.9398,-146.3771C2192.7168,-135.4428 2239.3877,-120.769 2276.3971,-109.1328"/>
+<polygon fill="#000000" stroke="#000000" points="2277.5821,-112.4293 2286.0719,-106.091 2275.4825,-105.7515 2277.5821,-112.4293"/>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.compileIvyDeps -->
+<g id="edge10" class="edge">
+<title>core.compileClasspath&#45;&gt;core.compileIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2061.6841,-146.1102C2029.6512,-135.1795 1986.9456,-120.607 1953.0843,-109.0524"/>
+<polygon fill="#000000" stroke="#000000" points="1953.9285,-105.6424 1943.334,-105.7253 1951.6678,-112.2673 1953.9285,-105.6424"/>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.scalaLibraryIvyDeps -->
+<g id="edge11" class="edge">
+<title>core.compileClasspath&#45;&gt;core.scalaLibraryIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2180.8395,-149.723C2192.6691,-147.7737 2204.7965,-145.8063 2216.2502,-144 2323.6619,-127.0611 2350.7043,-124.0652 2458.2502,-108 2467.451,-106.6256 2477.0484,-105.1897 2486.6316,-103.7545"/>
+<polygon fill="#000000" stroke="#000000" points="2487.225,-107.2048 2496.596,-102.2617 2486.1878,-100.282 2487.225,-107.2048"/>
+</g>
+<!-- core.compileClasspath&#45;&gt;core.transitiveIvyDeps -->
+<g id="edge12" class="edge">
+<title>core.compileClasspath&#45;&gt;core.transitiveIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2108.2502,-143.8314C2108.2502,-136.131 2108.2502,-126.9743 2108.2502,-118.4166"/>
+<polygon fill="#000000" stroke="#000000" points="2111.7503,-118.4132 2108.2502,-108.4133 2104.7503,-118.4133 2111.7503,-118.4132"/>
+</g>
+<!-- core.scalaCompilerClasspath -->
+<g id="node28" class="node">
+<title>core.scalaCompilerClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="1565.2502" cy="-162" rx="123.2883" ry="18"/>
+<text text-anchor="middle" x="1565.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalaCompilerClasspath</text>
+</g>
+<!-- core.scalaCompilerClasspath&#45;&gt;core.scalaVersion -->
+<g id="edge16" class="edge">
+<title>core.scalaCompilerClasspath&#45;&gt;core.scalaVersion</title>
+<path fill="none" stroke="#000000" d="M1499.0612,-146.722C1462.7208,-136.8489 1422.9066,-123.0617 1412.2502,-108 1403.009,-94.9386 1404.9111,-86.2175 1412.2502,-72 1419.127,-58.678 1430.9767,-47.927 1443.3006,-39.6306"/>
+<polygon fill="#000000" stroke="#000000" points="1445.2334,-42.55 1451.853,-34.2776 1441.5195,-36.6164 1445.2334,-42.55"/>
+</g>
+<!-- core.scalaCompilerClasspath&#45;&gt;core.platformSuffix -->
+<g id="edge17" class="edge">
+<title>core.scalaCompilerClasspath&#45;&gt;core.platformSuffix</title>
+<path fill="none" stroke="#000000" d="M1597.4458,-144.5708C1615.6305,-134.7264 1638.5281,-122.3308 1657.9027,-111.8422"/>
+<polygon fill="#000000" stroke="#000000" points="1659.6822,-114.8589 1666.81,-107.0202 1656.3497,-108.7031 1659.6822,-114.8589"/>
+</g>
+<!-- core.scalacPluginClasspath -->
+<g id="node29" class="node">
+<title>core.scalacPluginClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="1307.2502" cy="-162" rx="116.3475" ry="18"/>
+<text text-anchor="middle" x="1307.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.scalacPluginClasspath</text>
+</g>
+<!-- core.scalacPluginClasspath&#45;&gt;core.scalaVersion -->
+<g id="edge18" class="edge">
+<title>core.scalacPluginClasspath&#45;&gt;core.scalaVersion</title>
+<path fill="none" stroke="#000000" d="M1324.1664,-143.981C1342.4727,-124.9737 1372.9844,-94.6914 1402.2502,-72 1417.0415,-60.5315 1434.355,-49.2882 1449.5549,-40.0556"/>
+<polygon fill="#000000" stroke="#000000" points="1451.4427,-43.0048 1458.2252,-34.8655 1447.8473,-36.9987 1451.4427,-43.0048"/>
+</g>
+<!-- core.scalacPluginClasspath&#45;&gt;core.platformSuffix -->
+<g id="edge19" class="edge">
+<title>core.scalacPluginClasspath&#45;&gt;core.platformSuffix</title>
+<path fill="none" stroke="#000000" d="M1382.1763,-148.2029C1451.3936,-135.457 1553.6941,-116.619 1623.011,-103.8548"/>
+<polygon fill="#000000" stroke="#000000" points="1623.7901,-107.2702 1632.9909,-102.0171 1622.5224,-100.386 1623.7901,-107.2702"/>
+</g>
+<!-- core.scalacPluginClasspath&#45;&gt;core.scalacPluginIvyDeps -->
+<g id="edge20" class="edge">
+<title>core.scalacPluginClasspath&#45;&gt;core.scalacPluginIvyDeps</title>
+<path fill="none" stroke="#000000" d="M1284.5086,-144.2022C1272.8979,-135.1156 1258.6044,-123.9294 1246.0236,-114.0836"/>
+<polygon fill="#000000" stroke="#000000" points="1248.0812,-111.2494 1238.049,-107.8425 1243.767,-116.7619 1248.0812,-111.2494"/>
+</g>
+<!-- core.compile -->
+<g id="node30" class="node">
+<title>core.compile</title>
+<ellipse fill="none" stroke="#000000" cx="1979.2502" cy="-234" rx="61.3551" ry="18"/>
+<text text-anchor="middle" x="1979.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.compile</text>
+</g>
+<!-- core.compile&#45;&gt;core.scalacOptions -->
+<g id="edge25" class="edge">
+<title>core.compile&#45;&gt;core.scalacOptions</title>
+<path fill="none" stroke="#000000" d="M1917.8435,-233.5013C1762.4523,-231.6189 1341.2351,-222.6503 993.2502,-180 985.4806,-179.0477 977.3874,-177.8364 969.3528,-176.4936"/>
+<polygon fill="#000000" stroke="#000000" points="969.6878,-172.9993 959.2356,-174.732 968.487,-179.8956 969.6878,-172.9993"/>
+</g>
+<!-- core.compile&#45;&gt;core.javacOptions -->
+<g id="edge27" class="edge">
+<title>core.compile&#45;&gt;core.javacOptions</title>
+<path fill="none" stroke="#000000" d="M2028.5594,-223.1429C2084.5324,-210.8186 2176.168,-190.642 2238.749,-176.8627"/>
+<polygon fill="#000000" stroke="#000000" points="2239.52,-180.2768 2248.5334,-174.7083 2238.0147,-173.4406 2239.52,-180.2768"/>
+</g>
+<!-- core.compile&#45;&gt;core.upstreamCompileOutput -->
+<g id="edge28" class="edge">
+<title>core.compile&#45;&gt;core.upstreamCompileOutput</title>
+<path fill="none" stroke="#000000" d="M2035.578,-226.7742C2115.7151,-216.4786 2267.2364,-196.9543 2396.2502,-180 2406.9297,-178.5966 2418.0833,-177.1226 2429.204,-175.6477"/>
+<polygon fill="#000000" stroke="#000000" points="2429.9408,-179.0807 2439.3932,-174.2949 2429.0195,-172.1416 2429.9408,-179.0807"/>
+</g>
+<!-- core.compile&#45;&gt;core.allSourceFiles -->
+<g id="edge21" class="edge">
+<title>core.compile&#45;&gt;core.allSourceFiles</title>
+<path fill="none" stroke="#000000" d="M1918.2675,-232.3547C1784.5076,-228.2019 1455.4795,-215.0135 1182.2502,-180 1174.3783,-178.9912 1166.174,-177.7412 1158.0283,-176.3733"/>
+<polygon fill="#000000" stroke="#000000" points="1158.5998,-172.9203 1148.1479,-174.6548 1157.4002,-179.8167 1158.5998,-172.9203"/>
+</g>
+<!-- core.compile&#45;&gt;core.scalaCompilerBridgeSources -->
+<g id="edge22" class="edge">
+<title>core.compile&#45;&gt;core.scalaCompilerBridgeSources</title>
+<path fill="none" stroke="#000000" d="M1950.399,-218.0209C1932.7052,-208.2212 1909.7714,-195.5194 1890.2158,-184.6886"/>
+<polygon fill="#000000" stroke="#000000" points="1891.6567,-181.4858 1881.2131,-179.7025 1888.2652,-187.6093 1891.6567,-181.4858"/>
+</g>
+<!-- core.compile&#45;&gt;core.compileClasspath -->
+<g id="edge23" class="edge">
+<title>core.compile&#45;&gt;core.compileClasspath</title>
+<path fill="none" stroke="#000000" d="M2007.8795,-218.0209C2025.7741,-208.0332 2049.0698,-195.0309 2068.7131,-184.0672"/>
+<polygon fill="#000000" stroke="#000000" points="2070.4226,-187.1214 2077.4488,-179.1915 2067.011,-181.009 2070.4226,-187.1214"/>
+</g>
+<!-- core.compile&#45;&gt;core.scalaCompilerClasspath -->
+<g id="edge24" class="edge">
+<title>core.compile&#45;&gt;core.scalaCompilerClasspath</title>
+<path fill="none" stroke="#000000" d="M1926.3963,-224.808C1857.899,-212.8955 1737.4504,-191.9479 1654.618,-177.5422"/>
+<polygon fill="#000000" stroke="#000000" points="1655.1608,-174.0842 1644.7089,-175.8189 1653.9613,-180.9806 1655.1608,-174.0842"/>
+</g>
+<!-- core.compile&#45;&gt;core.scalacPluginClasspath -->
+<g id="edge26" class="edge">
+<title>core.compile&#45;&gt;core.scalacPluginClasspath</title>
+<path fill="none" stroke="#000000" d="M1920.1769,-229.0024C1819.9147,-220.3312 1610.0894,-201.366 1433.2502,-180 1422.943,-178.7547 1412.175,-177.3601 1401.4625,-175.9131"/>
+<polygon fill="#000000" stroke="#000000" points="1401.6077,-172.4005 1391.2256,-174.5128 1400.659,-179.3359 1401.6077,-172.4005"/>
+</g>
+<!-- core.localClasspath -->
+<g id="node31" class="node">
+<title>core.localClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2382.2502" cy="-306" rx="86.2717" ry="18"/>
+<text text-anchor="middle" x="2382.2502" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.localClasspath</text>
+</g>
+<!-- core.localClasspath&#45;&gt;core.compile -->
+<g id="edge29" class="edge">
+<title>core.localClasspath&#45;&gt;core.compile</title>
+<path fill="none" stroke="#000000" d="M2316.6043,-294.2717C2240.6636,-280.7041 2116.5345,-258.5272 2041.8925,-245.1917"/>
+<polygon fill="#000000" stroke="#000000" points="2042.1585,-241.6839 2031.6988,-243.3705 2040.9273,-248.5747 2042.1585,-241.6839"/>
+</g>
+<!-- core.jar -->
+<g id="node32" class="node">
+<title>core.jar</title>
+<ellipse fill="none" stroke="#000000" cx="2425.2502" cy="-378" rx="40.0068" ry="18"/>
+<text text-anchor="middle" x="2425.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.jar</text>
+</g>
+<!-- core.jar&#45;&gt;core.mainClass -->
+<g id="edge31" class="edge">
+<title>core.jar&#45;&gt;core.mainClass</title>
+<path fill="none" stroke="#000000" d="M2441.5691,-361.268C2466.3051,-335.9658 2510.893,-290.6163 2515.2502,-288 2548.4664,-268.055 2589.6666,-254.9179 2623.9574,-246.6008"/>
+<polygon fill="#000000" stroke="#000000" points="2624.9555,-249.9618 2633.8959,-244.2767 2623.3616,-243.1457 2624.9555,-249.9618"/>
+</g>
+<!-- core.jar&#45;&gt;core.localClasspath -->
+<g id="edge30" class="edge">
+<title>core.jar&#45;&gt;core.localClasspath</title>
+<path fill="none" stroke="#000000" d="M2414.8411,-360.5708C2409.8824,-352.2679 2403.8399,-342.1502 2398.311,-332.8925"/>
+<polygon fill="#000000" stroke="#000000" points="2401.1448,-330.8114 2393.0125,-324.0206 2395.135,-334.4006 2401.1448,-330.8114"/>
+</g>
+<!-- core.pomSettings -->
+<g id="node33" class="node">
+<title>core.pomSettings</title>
+<ellipse fill="none" stroke="#000000" cx="364.2502" cy="-234" rx="78.2104" ry="18"/>
+<text text-anchor="middle" x="364.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.pomSettings</text>
+</g>
+<!-- core.pomSettings&#45;&gt;core.artifactName -->
+<g id="edge32" class="edge">
+<title>core.pomSettings&#45;&gt;core.artifactName</title>
+<path fill="none" stroke="#000000" d="M359.708,-215.8314C357.7618,-208.0463 355.4434,-198.7729 353.2839,-190.1347"/>
+<polygon fill="#000000" stroke="#000000" points="356.6744,-189.2658 350.8535,-180.4133 349.8834,-190.9636 356.6744,-189.2658"/>
+</g>
+<!-- core.artifactScalaVersion -->
+<g id="node34" class="node">
+<title>core.artifactScalaVersion</title>
+<ellipse fill="none" stroke="#000000" cx="977.2502" cy="-90" rx="108.7788" ry="18"/>
+<text text-anchor="middle" x="977.2502" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.artifactScalaVersion</text>
+</g>
+<!-- core.artifactScalaVersion&#45;&gt;core.scalaVersion -->
+<g id="edge34" class="edge">
+<title>core.artifactScalaVersion&#45;&gt;core.scalaVersion</title>
+<path fill="none" stroke="#000000" d="M1056.5232,-77.6238C1069.1381,-75.7063 1082.0477,-73.7747 1094.2502,-72 1203.3428,-56.1335 1329.6239,-39.0522 1409.2129,-28.444"/>
+<polygon fill="#000000" stroke="#000000" points="1409.7132,-31.9083 1419.1637,-27.1189 1408.7892,-24.9696 1409.7132,-31.9083"/>
+</g>
+<!-- core.artifactScalaVersion&#45;&gt;core.crossFullScalaVersion -->
+<g id="edge33" class="edge">
+<title>core.artifactScalaVersion&#45;&gt;core.crossFullScalaVersion</title>
+<path fill="none" stroke="#000000" d="M981.7923,-71.8314C983.7386,-64.0463 986.057,-54.7729 988.2165,-46.1347"/>
+<polygon fill="#000000" stroke="#000000" points="991.6169,-46.9636 990.6469,-36.4133 984.8259,-45.2658 991.6169,-46.9636"/>
+</g>
+<!-- core.artifactSuffix -->
+<g id="node35" class="node">
+<title>core.artifactSuffix</title>
+<ellipse fill="none" stroke="#000000" cx="526.2502" cy="-162" rx="81.5934" ry="18"/>
+<text text-anchor="middle" x="526.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.artifactSuffix</text>
+</g>
+<!-- core.artifactSuffix&#45;&gt;core.artifactScalaVersion -->
+<g id="edge35" class="edge">
+<title>core.artifactSuffix&#45;&gt;core.artifactScalaVersion</title>
+<path fill="none" stroke="#000000" d="M585.7192,-149.6793C595.8889,-147.6948 606.3612,-145.7274 616.2502,-144 706.4275,-128.2474 809.7809,-113.0783 882.7269,-102.8501"/>
+<polygon fill="#000000" stroke="#000000" points="883.3944,-106.2909 892.8136,-101.44 882.4253,-99.3583 883.3944,-106.2909"/>
+</g>
+<!-- core.artifactId -->
+<g id="node36" class="node">
+<title>core.artifactId</title>
+<ellipse fill="none" stroke="#000000" cx="526.2502" cy="-234" rx="65.403" ry="18"/>
+<text text-anchor="middle" x="526.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.artifactId</text>
+</g>
+<!-- core.artifactId&#45;&gt;core.artifactName -->
+<g id="edge36" class="edge">
+<title>core.artifactId&#45;&gt;core.artifactName</title>
+<path fill="none" stroke="#000000" d="M488.9541,-219.0816C461.7289,-208.1915 424.569,-193.3275 394.9942,-181.4976"/>
+<polygon fill="#000000" stroke="#000000" points="396.2653,-178.2365 385.6807,-177.7722 393.6655,-184.7358 396.2653,-178.2365"/>
+</g>
+<!-- core.artifactId&#45;&gt;core.artifactSuffix -->
+<g id="edge37" class="edge">
+<title>core.artifactId&#45;&gt;core.artifactSuffix</title>
+<path fill="none" stroke="#000000" d="M526.2502,-215.8314C526.2502,-208.131 526.2502,-198.9743 526.2502,-190.4166"/>
+<polygon fill="#000000" stroke="#000000" points="529.7503,-190.4132 526.2502,-180.4133 522.7503,-190.4133 529.7503,-190.4132"/>
+</g>
+<!-- core.artifactMetadata -->
+<g id="node37" class="node">
+<title>core.artifactMetadata</title>
+<ellipse fill="none" stroke="#000000" cx="183.2502" cy="-306" rx="93.1701" ry="18"/>
+<text text-anchor="middle" x="183.2502" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.artifactMetadata</text>
+</g>
+<!-- core.artifactMetadata&#45;&gt;core.publishVersion -->
+<g id="edge40" class="edge">
+<title>core.artifactMetadata&#45;&gt;core.publishVersion</title>
+<path fill="none" stroke="#000000" d="M182.2408,-287.8314C181.813,-280.131 181.3043,-270.9743 180.8289,-262.4166"/>
+<polygon fill="#000000" stroke="#000000" points="184.3225,-262.2037 180.2731,-252.4133 177.3333,-262.592 184.3225,-262.2037"/>
+</g>
+<!-- core.artifactMetadata&#45;&gt;core.pomSettings -->
+<g id="edge38" class="edge">
+<title>core.artifactMetadata&#45;&gt;core.pomSettings</title>
+<path fill="none" stroke="#000000" d="M224.3219,-289.6621C251.4037,-278.8892 287.004,-264.7277 315.5182,-253.3851"/>
+<polygon fill="#000000" stroke="#000000" points="316.8958,-256.6039 324.894,-249.6555 314.3084,-250.0996 316.8958,-256.6039"/>
+</g>
+<!-- core.artifactMetadata&#45;&gt;core.artifactId -->
+<g id="edge39" class="edge">
+<title>core.artifactMetadata&#45;&gt;core.artifactId</title>
+<path fill="none" stroke="#000000" d="M249.7498,-293.3052C304.0664,-282.7669 382.7712,-267.1111 451.2502,-252 456.4806,-250.8458 461.9075,-249.6129 467.3419,-248.3539"/>
+<polygon fill="#000000" stroke="#000000" points="468.1523,-251.7589 477.091,-246.0712 466.5564,-244.9433 468.1523,-251.7589"/>
+</g>
+<!-- core.pom -->
+<g id="node38" class="node">
+<title>core.pom</title>
+<ellipse fill="none" stroke="#000000" cx="183.2502" cy="-378" rx="47.4743" ry="18"/>
+<text text-anchor="middle" x="183.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.pom</text>
+</g>
+<!-- core.pom&#45;&gt;core.ivyDeps -->
+<g id="edge41" class="edge">
+<title>core.pom&#45;&gt;core.ivyDeps</title>
+<path fill="none" stroke="#000000" d="M145.5957,-367.0357C123.5913,-358.7126 97.1114,-345.0396 81.2502,-324 56.6403,-291.3555 62.2502,-274.8816 62.2502,-234 62.2502,-234 62.2502,-234 62.2502,-162 62.2502,-121.876 62.2502,-75.4631 62.2502,-46.4177"/>
+<polygon fill="#000000" stroke="#000000" points="65.7503,-46.1853 62.2502,-36.1854 58.7503,-46.1854 65.7503,-46.1853"/>
+</g>
+<!-- core.pom&#45;&gt;core.artifactMetadata -->
+<g id="edge42" class="edge">
+<title>core.pom&#45;&gt;core.artifactMetadata</title>
+<path fill="none" stroke="#000000" d="M183.2502,-359.8314C183.2502,-352.131 183.2502,-342.9743 183.2502,-334.4166"/>
+<polygon fill="#000000" stroke="#000000" points="186.7503,-334.4132 183.2502,-324.4133 179.7503,-334.4133 186.7503,-334.4132"/>
+</g>
+<!-- core.ivy -->
+<g id="node39" class="node">
+<title>core.ivy</title>
+<ellipse fill="none" stroke="#000000" cx="49.2502" cy="-378" rx="42.3163" ry="18"/>
+<text text-anchor="middle" x="49.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.ivy</text>
+</g>
+<!-- core.ivy&#45;&gt;core.ivyDeps -->
+<g id="edge43" class="edge">
+<title>core.ivy&#45;&gt;core.ivyDeps</title>
+<path fill="none" stroke="#000000" d="M44.0702,-359.9889C36.7475,-332.8949 24.2502,-279.9269 24.2502,-234 24.2502,-234 24.2502,-234 24.2502,-162 24.2502,-120.3681 39.283,-74.14 50.4383,-45.567"/>
+<polygon fill="#000000" stroke="#000000" points="53.708,-46.817 54.1914,-36.2332 47.2133,-44.2055 53.708,-46.817"/>
+</g>
+<!-- core.ivy&#45;&gt;core.artifactMetadata -->
+<g id="edge44" class="edge">
+<title>core.ivy&#45;&gt;core.artifactMetadata</title>
+<path fill="none" stroke="#000000" d="M75.7243,-363.7751C94.8116,-353.5193 120.9277,-339.4867 142.6419,-327.8194"/>
+<polygon fill="#000000" stroke="#000000" points="144.4929,-330.7981 151.6452,-322.9818 141.1796,-324.6319 144.4929,-330.7981"/>
+</g>
+<!-- core.upstreamAssemblyClasspath -->
+<g id="node40" class="node">
+<title>core.upstreamAssemblyClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2816.2502" cy="-162" rx="141.7703" ry="18"/>
+<text text-anchor="middle" x="2816.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.upstreamAssemblyClasspath</text>
+</g>
+<!-- core.upstreamAssemblyClasspath&#45;&gt;core.platformSuffix -->
+<g id="edge45" class="edge">
+<title>core.upstreamAssemblyClasspath&#45;&gt;core.platformSuffix</title>
+<path fill="none" stroke="#000000" d="M2717.5199,-149.0405C2700.4462,-147.1178 2682.8515,-145.3367 2666.2502,-144 2279.6158,-112.8689 2179.6487,-151.8552 1794.2502,-108 1786.2847,-107.0936 1777.9872,-105.9081 1769.7519,-104.5774"/>
+<polygon fill="#000000" stroke="#000000" points="1770.2072,-101.1049 1759.7641,-102.8914 1769.0419,-108.0072 1770.2072,-101.1049"/>
+</g>
+<!-- core.upstreamAssemblyClasspath&#45;&gt;core.transitiveLocalClasspath -->
+<g id="edge49" class="edge">
+<title>core.upstreamAssemblyClasspath&#45;&gt;core.transitiveLocalClasspath</title>
+<path fill="none" stroke="#000000" d="M2820.54,-143.8314C2822.3582,-136.131 2824.5201,-126.9743 2826.5407,-118.4166"/>
+<polygon fill="#000000" stroke="#000000" points="2830.0109,-118.95 2828.9026,-108.4133 2823.1983,-117.3414 2830.0109,-118.95"/>
+</g>
+<!-- core.upstreamAssemblyClasspath&#45;&gt;core.unmanagedClasspath -->
+<g id="edge50" class="edge">
+<title>core.upstreamAssemblyClasspath&#45;&gt;core.unmanagedClasspath</title>
+<path fill="none" stroke="#000000" d="M2724.7438,-148.2454C2639.8524,-135.4851 2514.1632,-116.5924 2429.147,-103.8133"/>
+<polygon fill="#000000" stroke="#000000" points="2429.6541,-100.3503 2419.2449,-102.3249 2428.6136,-107.2725 2429.6541,-100.3503"/>
+</g>
+<!-- core.upstreamAssemblyClasspath&#45;&gt;core.runIvyDeps -->
+<g id="edge46" class="edge">
+<title>core.upstreamAssemblyClasspath&#45;&gt;core.runIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2870.9865,-145.3008C2908.3602,-133.8986 2957.7552,-118.829 2995.5421,-107.3008"/>
+<polygon fill="#000000" stroke="#000000" points="2996.8339,-110.566 3005.3773,-104.3002 2994.7912,-103.8707 2996.8339,-110.566"/>
+</g>
+<!-- core.upstreamAssemblyClasspath&#45;&gt;core.scalaLibraryIvyDeps -->
+<g id="edge47" class="edge">
+<title>core.upstreamAssemblyClasspath&#45;&gt;core.scalaLibraryIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2761.3493,-145.3913C2725.3081,-134.4881 2678.0856,-120.2023 2640.6252,-108.8697"/>
+<polygon fill="#000000" stroke="#000000" points="2641.4165,-105.4525 2630.8314,-105.9069 2639.3895,-112.1527 2641.4165,-105.4525"/>
+</g>
+<!-- core.upstreamAssemblyClasspath&#45;&gt;core.transitiveIvyDeps -->
+<g id="edge48" class="edge">
+<title>core.upstreamAssemblyClasspath&#45;&gt;core.transitiveIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2715.4527,-149.349C2699.0201,-147.4464 2682.1702,-145.5914 2666.2502,-144 2466.6062,-124.0435 2415.3859,-132.5147 2216.2502,-108 2207.3138,-106.8999 2197.9869,-105.5906 2188.7201,-104.1873"/>
+<polygon fill="#000000" stroke="#000000" points="2189.128,-100.7088 2178.7094,-102.6331 2188.054,-107.6259 2189.128,-100.7088"/>
+</g>
+<!-- core.runClasspath -->
+<g id="node41" class="node">
+<title>core.runClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2286.2502" cy="-378" rx="80.4766" ry="18"/>
+<text text-anchor="middle" x="2286.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.runClasspath</text>
+</g>
+<!-- core.runClasspath&#45;&gt;core.localClasspath -->
+<g id="edge51" class="edge">
+<title>core.runClasspath&#45;&gt;core.localClasspath</title>
+<path fill="none" stroke="#000000" d="M2309.4891,-360.5708C2321.8966,-351.2652 2337.3437,-339.6799 2350.8092,-329.5807"/>
+<polygon fill="#000000" stroke="#000000" points="2352.9925,-332.3183 2358.8925,-323.5182 2348.7925,-326.7183 2352.9925,-332.3183"/>
+</g>
+<!-- core.runClasspath&#45;&gt;core.upstreamAssemblyClasspath -->
+<g id="edge52" class="edge">
+<title>core.runClasspath&#45;&gt;core.upstreamAssemblyClasspath</title>
+<path fill="none" stroke="#000000" d="M2280.5311,-359.9649C2275.4462,-340.0922 2271.0604,-308.2664 2287.2502,-288 2314.368,-254.054 2576.0125,-203.7773 2720.8797,-178.2079"/>
+<polygon fill="#000000" stroke="#000000" points="2721.8608,-181.5892 2731.1035,-176.4102 2720.6484,-174.695 2721.8608,-181.5892"/>
+</g>
+<!-- core.finalMainClassOpt -->
+<g id="node42" class="node">
+<title>core.finalMainClassOpt</title>
+<ellipse fill="none" stroke="#000000" cx="2628.2502" cy="-306" rx="103.6059" ry="18"/>
+<text text-anchor="middle" x="2628.2502" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.finalMainClassOpt</text>
+</g>
+<!-- core.finalMainClassOpt&#45;&gt;core.mainClass -->
+<g id="edge53" class="edge">
+<title>core.finalMainClassOpt&#45;&gt;core.mainClass</title>
+<path fill="none" stroke="#000000" d="M2644.0704,-288.2022C2651.8207,-279.4832 2661.2892,-268.8311 2669.7747,-259.2849"/>
+<polygon fill="#000000" stroke="#000000" points="2672.5842,-261.3924 2676.6119,-251.593 2667.3523,-256.7419 2672.5842,-261.3924"/>
+</g>
+<!-- core.finalMainClassOpt&#45;&gt;core.compile -->
+<g id="edge54" class="edge">
+<title>core.finalMainClassOpt&#45;&gt;core.compile</title>
+<path fill="none" stroke="#000000" d="M2543.2182,-295.7031C2521.6996,-293.1415 2498.6289,-290.4332 2477.2502,-288 2323.6419,-270.5169 2143.2244,-251.275 2047.3052,-241.1479"/>
+<polygon fill="#000000" stroke="#000000" points="2047.4741,-237.6463 2037.1621,-240.0777 2046.7396,-244.6077 2047.4741,-237.6463"/>
+</g>
+<!-- core.docJar -->
+<g id="node43" class="node">
+<title>core.docJar</title>
+<ellipse fill="none" stroke="#000000" cx="1103.2502" cy="-234" rx="55.0374" ry="18"/>
+<text text-anchor="middle" x="1103.2502" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.docJar</text>
+</g>
+<!-- core.docJar&#45;&gt;core.scalacOptions -->
+<g id="edge57" class="edge">
+<title>core.docJar&#45;&gt;core.scalacOptions</title>
+<path fill="none" stroke="#000000" d="M1065.3574,-220.6261C1033.6552,-209.4371 988.0586,-193.3441 952.6549,-180.8487"/>
+<polygon fill="#000000" stroke="#000000" points="953.5543,-177.4546 942.9595,-177.4268 951.2245,-184.0556 953.5543,-177.4546"/>
+</g>
+<!-- core.docJar&#45;&gt;core.allSources -->
+<g id="edge55" class="edge">
+<title>core.docJar&#45;&gt;core.allSources</title>
+<path fill="none" stroke="#000000" d="M1049.2697,-229.9938C974.3169,-223.4736 843.7004,-208.3498 806.2502,-180 786.3205,-164.9133 774.9004,-138.4005 768.7165,-118.0458"/>
+<polygon fill="#000000" stroke="#000000" points="772.0686,-117.0362 766.0148,-108.3412 765.3251,-118.9136 772.0686,-117.0362"/>
+</g>
+<!-- core.docJar&#45;&gt;core.compileClasspath -->
+<g id="edge59" class="edge">
+<title>core.docJar&#45;&gt;core.compileClasspath</title>
+<path fill="none" stroke="#000000" d="M1158.6079,-232.7233C1299.5927,-229.027 1683.5152,-216.1743 2001.2502,-180 2010.1844,-178.9828 2019.507,-177.7192 2028.7626,-176.3363"/>
+<polygon fill="#000000" stroke="#000000" points="2029.4082,-179.7782 2038.7579,-174.795 2028.3413,-172.86 2029.4082,-179.7782"/>
+</g>
+<!-- core.docJar&#45;&gt;core.scalaCompilerClasspath -->
+<g id="edge58" class="edge">
+<title>core.docJar&#45;&gt;core.scalaCompilerClasspath</title>
+<path fill="none" stroke="#000000" d="M1153.1312,-226.2263C1228.9619,-214.4086 1374.5761,-191.7154 1470.8279,-176.7152"/>
+<polygon fill="#000000" stroke="#000000" points="1471.5143,-180.1505 1480.856,-175.1523 1470.4363,-173.234 1471.5143,-180.1505"/>
+</g>
+<!-- core.docJar&#45;&gt;core.scalacPluginClasspath -->
+<g id="edge56" class="edge">
+<title>core.docJar&#45;&gt;core.scalacPluginClasspath</title>
+<path fill="none" stroke="#000000" d="M1141.1429,-220.6261C1171.8972,-209.7716 1215.7275,-194.3021 1250.6431,-181.979"/>
+<polygon fill="#000000" stroke="#000000" points="1251.9714,-185.2218 1260.2364,-178.5931 1249.6416,-178.6209 1251.9714,-185.2218"/>
+</g>
+<!-- core.ammoniteReplClasspath -->
+<g id="node44" class="node">
+<title>core.ammoniteReplClasspath</title>
+<ellipse fill="none" stroke="#000000" cx="2841.2502" cy="-378" rx="124.4552" ry="18"/>
+<text text-anchor="middle" x="2841.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.ammoniteReplClasspath</text>
+</g>
+<!-- core.ammoniteReplClasspath&#45;&gt;core.runIvyDeps -->
+<g id="edge60" class="edge">
+<title>core.ammoniteReplClasspath&#45;&gt;core.runIvyDeps</title>
+<path fill="none" stroke="#000000" d="M2904.1054,-362.4013C2926.4973,-354.1556 2950.3311,-341.9024 2967.2502,-324 3023.1409,-264.8609 3042.7967,-166.1539 3049.2854,-118.0582"/>
+<polygon fill="#000000" stroke="#000000" points="3052.7684,-118.4114 3050.5417,-108.0533 3045.823,-117.5393 3052.7684,-118.4114"/>
+</g>
+<!-- core.ammoniteReplClasspath&#45;&gt;core.localClasspath -->
+<g id="edge61" class="edge">
+<title>core.ammoniteReplClasspath&#45;&gt;core.localClasspath</title>
+<path fill="none" stroke="#000000" d="M2756.7952,-364.7522C2672.5353,-351.5349 2544.0754,-331.3843 2461.6423,-318.4537"/>
+<polygon fill="#000000" stroke="#000000" points="2461.9961,-314.9664 2451.5744,-316.8744 2460.9112,-321.8819 2461.9961,-314.9664"/>
+</g>
+<!-- core.publishSelfDependency -->
+<g id="node45" class="node">
+<title>core.publishSelfDependency</title>
+<ellipse fill="none" stroke="#000000" cx="417.2502" cy="-306" rx="122.1369" ry="18"/>
+<text text-anchor="middle" x="417.2502" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.publishSelfDependency</text>
+</g>
+<!-- core.publishSelfDependency&#45;&gt;core.publishVersion -->
+<g id="edge64" class="edge">
+<title>core.publishSelfDependency&#45;&gt;core.publishVersion</title>
+<path fill="none" stroke="#000000" d="M363.5416,-289.752C326.5404,-278.5584 277.3416,-263.6747 239.085,-252.1013"/>
+<polygon fill="#000000" stroke="#000000" points="239.6928,-248.6286 229.1077,-249.0829 237.6658,-255.3287 239.6928,-248.6286"/>
+</g>
+<!-- core.publishSelfDependency&#45;&gt;core.pomSettings -->
+<g id="edge62" class="edge">
+<title>core.publishSelfDependency&#45;&gt;core.pomSettings</title>
+<path fill="none" stroke="#000000" d="M403.876,-287.8314C397.6777,-279.411 390.1977,-269.2495 383.414,-260.0338"/>
+<polygon fill="#000000" stroke="#000000" points="386.1833,-257.8919 377.4364,-251.9134 380.546,-262.0417 386.1833,-257.8919"/>
+</g>
+<!-- core.publishSelfDependency&#45;&gt;core.artifactId -->
+<g id="edge63" class="edge">
+<title>core.publishSelfDependency&#45;&gt;core.artifactId</title>
+<path fill="none" stroke="#000000" d="M443.9146,-288.3868C458.5918,-278.6918 476.9507,-266.5648 492.6058,-256.2238"/>
+<polygon fill="#000000" stroke="#000000" points="494.5695,-259.1214 500.9844,-250.6893 490.7113,-253.2806 494.5695,-259.1214"/>
+</g>
+<!-- core.sourceJar -->
+<g id="node46" class="node">
+<title>core.sourceJar</title>
+<ellipse fill="none" stroke="#000000" cx="692.2502" cy="-162" rx="66.5506" ry="18"/>
+<text text-anchor="middle" x="692.2502" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.sourceJar</text>
+</g>
+<!-- core.sourceJar&#45;&gt;core.resources -->
+<g id="edge66" class="edge">
+<title>core.sourceJar&#45;&gt;core.resources</title>
+<path fill="none" stroke="#000000" d="M748.0701,-152.1726C766.5426,-149.1917 787.2353,-146.1427 806.2502,-144 1040.8637,-117.5627 1101.1688,-129.8894 1336.2502,-108 1362.9953,-105.5097 1392.3177,-102.1796 1418.0123,-99.0612"/>
+<polygon fill="#000000" stroke="#000000" points="1418.5382,-102.5231 1428.0384,-97.833 1417.687,-95.575 1418.5382,-102.5231"/>
+</g>
+<!-- core.sourceJar&#45;&gt;core.allSources -->
+<g id="edge65" class="edge">
+<title>core.sourceJar&#45;&gt;core.allSources</title>
+<path fill="none" stroke="#000000" d="M709.1952,-144.5708C717.9009,-135.6164 728.6589,-124.551 738.207,-114.7302"/>
+<polygon fill="#000000" stroke="#000000" points="740.7572,-117.128 745.2186,-107.5182 735.7383,-112.2484 740.7572,-117.128"/>
+</g>
+<!-- core.publishArtifacts -->
+<g id="node47" class="node">
+<title>core.publishArtifacts</title>
+<ellipse fill="none" stroke="#000000" cx="1004.2502" cy="-450" rx="92.0709" ry="18"/>
+<text text-anchor="middle" x="1004.2502" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.publishArtifacts</text>
+</g>
+<!-- core.publishArtifacts&#45;&gt;core.jar -->
+<g id="edge67" class="edge">
+<title>core.publishArtifacts&#45;&gt;core.jar</title>
+<path fill="none" stroke="#000000" d="M1096.002,-448.0118C1382.7888,-441.5709 2250.6382,-420.2836 2375.2502,-396 2378.8583,-395.2969 2382.5544,-394.3766 2386.2238,-393.3238"/>
+<polygon fill="#000000" stroke="#000000" points="2387.3231,-396.647 2395.7956,-390.2855 2385.2053,-389.9751 2387.3231,-396.647"/>
+</g>
+<!-- core.publishArtifacts&#45;&gt;core.pom -->
+<g id="edge70" class="edge">
+<title>core.publishArtifacts&#45;&gt;core.pom</title>
+<path fill="none" stroke="#000000" d="M919.8644,-442.5995C752.2004,-427.8958 381.125,-395.3532 239.5941,-382.9412"/>
+<polygon fill="#000000" stroke="#000000" points="239.6742,-379.4349 229.4067,-382.0478 239.0626,-386.4082 239.6742,-379.4349"/>
+</g>
+<!-- core.publishArtifacts&#45;&gt;core.docJar -->
+<g id="edge69" class="edge">
+<title>core.publishArtifacts&#45;&gt;core.docJar</title>
+<path fill="none" stroke="#000000" d="M1012.5206,-431.9555C1029.9252,-393.9817 1070.414,-305.6426 1090.9029,-260.9396"/>
+<polygon fill="#000000" stroke="#000000" points="1094.0881,-262.3902 1095.0729,-251.8413 1087.7246,-259.4736 1094.0881,-262.3902"/>
+</g>
+<!-- core.publishArtifacts&#45;&gt;core.sourceJar -->
+<g id="edge68" class="edge">
+<title>core.publishArtifacts&#45;&gt;core.sourceJar</title>
+<path fill="none" stroke="#000000" d="M984.7332,-431.9843C930.8545,-382.2501 779.9892,-242.9899 718.6679,-186.3856"/>
+<polygon fill="#000000" stroke="#000000" points="720.6887,-183.4878 710.9667,-179.2767 715.9407,-188.6314 720.6887,-183.4878"/>
+</g>
+<!-- core.finalMainClass -->
+<g id="node48" class="node">
+<title>core.finalMainClass</title>
+<ellipse fill="none" stroke="#000000" cx="2609.2502" cy="-378" rx="89.139" ry="18"/>
+<text text-anchor="middle" x="2609.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.finalMainClass</text>
+</g>
+<!-- core.finalMainClass&#45;&gt;core.finalMainClassOpt -->
+<g id="edge71" class="edge">
+<title>core.finalMainClass&#45;&gt;core.finalMainClassOpt</title>
+<path fill="none" stroke="#000000" d="M2614.0447,-359.8314C2616.0991,-352.0463 2618.5462,-342.7729 2620.8257,-334.1347"/>
+<polygon fill="#000000" stroke="#000000" points="2624.2237,-334.9753 2623.3911,-324.4133 2617.4554,-333.1892 2624.2237,-334.9753"/>
+</g>
+<!-- core.prependShellScript -->
+<g id="node49" class="node">
+<title>core.prependShellScript</title>
+<ellipse fill="none" stroke="#000000" cx="3118.2502" cy="-306" rx="104.1721" ry="18"/>
+<text text-anchor="middle" x="3118.2502" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.prependShellScript</text>
+</g>
+<!-- core.prependShellScript&#45;&gt;core.mainClass -->
+<g id="edge72" class="edge">
+<title>core.prependShellScript&#45;&gt;core.mainClass</title>
+<path fill="none" stroke="#000000" d="M3043.5592,-293.3762C2963.8582,-279.9056 2838.6394,-258.7418 2761.2078,-245.6548"/>
+<polygon fill="#000000" stroke="#000000" points="2761.5191,-242.1579 2751.0757,-243.9423 2760.3525,-249.06 2761.5191,-242.1579"/>
+</g>
+<!-- core.prependShellScript&#45;&gt;core.forkArgs -->
+<g id="edge73" class="edge">
+<title>core.prependShellScript&#45;&gt;core.forkArgs</title>
+<path fill="none" stroke="#000000" d="M3134.5648,-288.2022C3142.6372,-279.396 3152.5172,-268.6179 3161.3345,-258.9989"/>
+<polygon fill="#000000" stroke="#000000" points="3163.946,-261.3296 3168.1232,-251.593 3158.7859,-256.5995 3163.946,-261.3296"/>
+</g>
+<!-- core.upstreamAssembly -->
+<g id="node50" class="node">
+<title>core.upstreamAssembly</title>
+<ellipse fill="none" stroke="#000000" cx="2854.2502" cy="-306" rx="104.1721" ry="18"/>
+<text text-anchor="middle" x="2854.2502" y="-301.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.upstreamAssembly</text>
+</g>
+<!-- core.upstreamAssembly&#45;&gt;core.mainClass -->
+<g id="edge75" class="edge">
+<title>core.upstreamAssembly&#45;&gt;core.mainClass</title>
+<path fill="none" stroke="#000000" d="M2816.2684,-289.1192C2792.4686,-278.5415 2761.6886,-264.8615 2736.7473,-253.7765"/>
+<polygon fill="#000000" stroke="#000000" points="2738.0605,-250.5301 2727.5009,-249.667 2735.2175,-256.9268 2738.0605,-250.5301"/>
+</g>
+<!-- core.upstreamAssembly&#45;&gt;core.upstreamAssemblyClasspath -->
+<g id="edge74" class="edge">
+<title>core.upstreamAssembly&#45;&gt;core.upstreamAssemblyClasspath</title>
+<path fill="none" stroke="#000000" d="M2849.4375,-287.7623C2842.9275,-263.0928 2831.2548,-218.8598 2823.632,-189.9731"/>
+<polygon fill="#000000" stroke="#000000" points="2826.9596,-188.8656 2821.0238,-180.0896 2820.1913,-190.6517 2826.9596,-188.8656"/>
+</g>
+<!-- core.assembly -->
+<g id="node51" class="node">
+<title>core.assembly</title>
+<ellipse fill="none" stroke="#000000" cx="3049.2502" cy="-378" rx="66.0096" ry="18"/>
+<text text-anchor="middle" x="3049.2502" y="-373.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.assembly</text>
+</g>
+<!-- core.assembly&#45;&gt;core.localClasspath -->
+<g id="edge76" class="edge">
+<title>core.assembly&#45;&gt;core.localClasspath</title>
+<path fill="none" stroke="#000000" d="M3001.8653,-365.4375C2992.7515,-363.3599 2983.2439,-361.4229 2974.2502,-360 2772.1375,-328.024 2718.7196,-345.7304 2515.2502,-324 2498.4001,-322.2004 2480.39,-319.9706 2463.2388,-317.7003"/>
+<polygon fill="#000000" stroke="#000000" points="2463.6313,-314.2217 2453.2549,-316.3618 2462.7011,-321.1596 2463.6313,-314.2217"/>
+</g>
+<!-- core.assembly&#45;&gt;core.prependShellScript -->
+<g id="edge77" class="edge">
+<title>core.assembly&#45;&gt;core.prependShellScript</title>
+<path fill="none" stroke="#000000" d="M3065.9532,-360.5708C3074.3874,-351.7698 3084.7759,-340.9297 3094.0655,-331.2362"/>
+<polygon fill="#000000" stroke="#000000" points="3096.8296,-333.4105 3101.2217,-323.7689 3091.7756,-328.5671 3096.8296,-333.4105"/>
+</g>
+<!-- core.assembly&#45;&gt;core.upstreamAssembly -->
+<g id="edge78" class="edge">
+<title>core.assembly&#45;&gt;core.upstreamAssembly</title>
+<path fill="none" stroke="#000000" d="M3009.789,-363.4297C2980.5411,-352.6305 2940.3376,-337.7861 2908.132,-325.8948"/>
+<polygon fill="#000000" stroke="#000000" points="2909.0082,-322.4874 2898.4149,-322.307 2906.5836,-329.0541 2909.0082,-322.4874"/>
+</g>
+<!-- core.launcher -->
+<g id="node52" class="node">
+<title>core.launcher</title>
+<ellipse fill="none" stroke="#000000" cx="2609.2502" cy="-450" rx="63.1235" ry="18"/>
+<text text-anchor="middle" x="2609.2502" y="-445.8" font-family="Times,serif" font-size="14.00" fill="#000000">core.launcher</text>
+</g>
+<!-- core.launcher&#45;&gt;core.forkArgs -->
+<g id="edge81" class="edge">
+<title>core.launcher&#45;&gt;core.forkArgs</title>
+<path fill="none" stroke="#000000" d="M2654.7211,-437.4362C2663.4721,-435.3587 2672.6048,-433.4221 2681.2502,-432 2876.1687,-399.9374 2937.8037,-461.2605 3124.2502,-396 3178.3513,-377.0634 3204.3122,-374.5952 3231.2502,-324 3238.7696,-309.877 3236.8581,-302.985 3231.2502,-288 3227.1812,-277.1273 3219.8245,-266.9998 3212.1209,-258.5213"/>
+<polygon fill="#000000" stroke="#000000" points="3214.5111,-255.9588 3205.033,-251.2243 3209.49,-260.8361 3214.5111,-255.9588"/>
+</g>
+<!-- core.launcher&#45;&gt;core.runClasspath -->
+<g id="edge80" class="edge">
+<title>core.launcher&#45;&gt;core.runClasspath</title>
+<path fill="none" stroke="#000000" d="M2559.1358,-438.829C2503.8285,-426.5004 2414.5404,-406.5972 2353.2561,-392.9363"/>
+<polygon fill="#000000" stroke="#000000" points="2353.814,-389.4748 2343.2921,-390.7152 2352.291,-396.3072 2353.814,-389.4748"/>
+</g>
+<!-- core.launcher&#45;&gt;core.finalMainClass -->
+<g id="edge79" class="edge">
+<title>core.launcher&#45;&gt;core.finalMainClass</title>
+<path fill="none" stroke="#000000" d="M2609.2502,-431.8314C2609.2502,-424.131 2609.2502,-414.9743 2609.2502,-406.4166"/>
+<polygon fill="#000000" stroke="#000000" points="2612.7503,-406.4132 2609.2502,-396.4133 2605.7503,-406.4133 2612.7503,-406.4132"/>
+</g>
+</g>
+</svg>
diff --git a/docs/build.sc b/docs/build.sc
index 0d936d3c..e216ea65 100644
--- a/docs/build.sc
+++ b/docs/build.sc
@@ -143,6 +143,8 @@ def main(publish: Boolean = false) = {
cp(pwd/"favicon.png", targetFolder/"favicon.ico")
cp(pwd/"logo-white.svg", targetFolder/"logo-white.svg")
+ cp(pwd/"VisualizeCompile.svg", targetFolder/"VisualizeCompile.svg")
+ cp(pwd/"VisualizeCore.svg", targetFolder/"VisualizeCore.svg")
%('zip, "-r", targetFolder/"example-1.zip", "example-1")(pwd)
%('zip, "-r", targetFolder/"example-2.zip", "example-2")(pwd)
diff --git a/docs/pages/1 - Intro to Mill.md b/docs/pages/1 - Intro to Mill.md
index 6a1259b3..f10e7518 100644
--- a/docs/pages/1 - Intro to Mill.md
+++ b/docs/pages/1 - Intro to Mill.md
@@ -442,21 +442,73 @@ build:
```bash
$ mill show foo.sources
[
- {"path": "/Users/lihaoyi/Dropbox/Github/test/foo/src"}
+ "/Users/lihaoyi/Dropbox/Github/test/foo/src"
]
$ mill show foo.compileDepClasspath
[
- {"path": ".../org/scala-lang/scala-compiler/2.12.4/scala-compiler-2.12.4.jar"},
- {"path": ".../org/scala-lang/scala-library/2.12.4/scala-library-2.12.4.jar"},
- {"path": ".../org/scala-lang/scala-reflect/2.12.4/scala-reflect-2.12.4.jar"},
- {"path": ".../org/scala-lang/modules/scala-xml_2.12/1.0.6/scala-xml_2.12-1.0.6.jar"}
+ ".../org/scala-lang/scala-compiler/2.12.4/scala-compiler-2.12.4.jar",
+ ".../org/scala-lang/scala-library/2.12.4/scala-library-2.12.4.jar",
+ ".../org/scala-lang/scala-reflect/2.12.4/scala-reflect-2.12.4.jar",
+ ".../org/scala-lang/modules/scala-xml_2.12/1.0.6/scala-xml_2.12-1.0.6.jar"
]
```
`show` is also useful for interacting with Mill from external tools, since the
JSON it outputs is structured and easily parsed & manipulated.
+### path
+
+```bash
+$ mill path core.assembly core.sources
+core.sources
+core.allSources
+core.allSourceFiles
+core.compile
+core.localClasspath
+core.assembly
+```
+
+`mill path` prints out a dependency chain between the first target and the
+second. It is very useful for exploring the build graph and trying to figure out
+how data gets from one target to another. If there are multiple possible
+dependency chains, one of them is picked arbitrarily.
+
+### visualize
+
+```bash
+$ mill show visualize core._
+[
+ ".../out/visualize/dest/out.txt",
+ ".../out/visualize/dest/out.dot",
+ ".../out/visualize/dest/out.json",
+ ".../out/visualize/dest/out.png",
+ ".../out/visualize/dest/out.svg"
+]
+```
+
+`mill show visualize` takes a subset of the Mill build graph (e.g. `core._` is
+every target directly under the `core` module) and draws out their relationships
+in `.svg` and `.png` form for you to inspect. It also generates `.txt`, `.dot`
+and `.json` for easy processing by downstream tools.
+
+The above command generates the following diagram:
+
+![VisualizeCore.svg](VisualizeCore.svg)
+
+Another use case is to view the relationships between modules:
+
+```bash
+$ mill show visualize __.compile
+```
+
+This command diagrams the relationships between the `compile` targets of each
+module, which illustrates which module depends on which other module's
+compilation output:
+
+![VisualizeCompile.svg](VisualizeCompile.svg)
+
+
### clean
```bash
diff --git a/readme.md b/readme.md
index 54620267..a3ce8d13 100644
--- a/readme.md
+++ b/readme.md
@@ -151,6 +151,28 @@ optimizer without classpath conflicts.
## Changelog
+### 0.2.3
+
+- Added the [mill show visualize](http://www.lihaoyi.com/mill/#all) command,
+ making it easy to visualize the relationships between various tasks and
+ modules in your Mill build.
+
+- Improve Intellij support ([351](https://github.com/lihaoyi/mill/pull/351)):
+ better jump-to-definition for third-party libraries, no longer stomping over
+ manual configuration, and better handling of `import $ivy` in your build file.
+
+- Support for un-signed publishing and cases where your GPG key has no
+ passphrase ([346](https://github.com/lihaoyi/mill/pull/346))
+
+- Basic support for Twirl, Play Framework's templating language
+ ([271](https://github.com/lihaoyi/mill/pull/271))
+
+- Better performance for streaming large amounts of stdout from Mill's daemon
+ process.
+
+- Allow configuration of append/exclude rules in `ScalaModule#assembly`
+ ([309](https://github.com/lihaoyi/mill/pull/309))
+
### 0.2.2
- Preserve caches when transitioning between `-i`/`--interactive` and the