Skip to content

Instantly share code, notes, and snippets.

@ileasile
Created August 7, 2025 10:48
Show Gist options
  • Select an option

  • Save ileasile/9adc9cce05caf8fdf4f0d34829bca94e to your computer and use it in GitHub Desktop.

Select an option

Save ileasile/9adc9cce05caf8fdf4f0d34829bca94e to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells" : [ {
"cell_type" : "code",
"metadata" : {
"collapsed" : true,
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:32.912247Z",
"start_time" : "2025-08-07T10:45:04.821098Z"
}
},
"source" : [ "%useLatestDescriptors\n", "%use intellij-platform\n", "%use kraphviz" ],
"id" : "3c6eaa088a894984",
"outputs" : [ {
"data" : {
"text/plain" : [ "IntelliJ Platform integration is loaded" ]
},
"metadata" : { },
"output_type" : "display_data",
"jetTransient" : {
"display_id" : null
}
} ],
"execution_count" : 1
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:33.554169Z",
"start_time" : "2025-08-07T10:45:32.950902Z"
}
},
"cell_type" : "code",
"source" : [ "import guru.nidi.graphviz.model.Factory.mutGraph\n", "import guru.nidi.graphviz.model.Factory.mutNode\n", "import guru.nidi.graphviz.model.MutableGraph\n", "import guru.nidi.graphviz.model.MutableNode\n", "\n", "fun <T> createGraph(\n", " nodes: Collection<T>,\n", " getParents: (T) -> Collection<T>,\n", " getLabel: (Int, T) -> String = { index, _ -> index.toString() }\n", "): Graphviz {\n", " val nodeToIndex = nodes.withIndex().associate { it.value to it.index }\n", "\n", " val nodeMap = buildMap<Int, MutableNode> {\n", " for ((index, node) in nodes.withIndex()) {\n", " val label = getLabel(index, node)\n", " put(index, mutNode(label))\n", " }\n", " }\n", "\n", " for ((childIndex, child) in nodes.withIndex()) {\n", " for (parent in getParents(child)) {\n", " val parentIndex = nodeToIndex[parent]\n", " if (parentIndex != null) {\n", " nodeMap[childIndex]?.addLink(nodeMap[parentIndex]!!)\n", " }\n", " }\n", " }\n", "\n", " val graph = mutGraph(\"G\").setDirected(true).apply {\n", " for (node in nodeMap.values) {\n", " add(node)\n", " }\n", " }\n", "\n", " return Graphviz.fromGraph(graph)\n", "}" ],
"id" : "f592de196dfa25fe",
"outputs" : [ ],
"execution_count" : 2
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:33.694377Z",
"start_time" : "2025-08-07T10:45:33.565685Z"
}
},
"cell_type" : "code",
"source" : [ "import com.intellij.ide.plugins.cl.PluginClassLoader\n", "\n", "fun getParents(classLoader: ClassLoader): List<ClassLoader> {\n", " val allParents = when {\n", " classLoader is PluginClassLoader -> classLoader.getAllParentsClassLoaders().toList()\n", " else -> generateSequence(classLoader.parent) { it.parent }.toList()\n", " }\n", "\n", " return allParents//.filterNot { it === classLoader }\n", "}" ],
"id" : "b6fc58ca4b62b9bc",
"outputs" : [ ],
"execution_count" : 3
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:33.842668Z",
"start_time" : "2025-08-07T10:45:33.731193Z"
}
},
"cell_type" : "code",
"source" : [ "import com.intellij.openapi.extensions.PluginId\n", "\n", "val propPlugin = pluginManager.findEnabledPlugin(PluginId.getId(\"com.intellij.properties\"))" ],
"id" : "91d9f399bd036dd6",
"outputs" : [ ],
"execution_count" : 4
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:34.004424Z",
"start_time" : "2025-08-07T10:45:33.847544Z"
}
},
"cell_type" : "code",
"source" : [ "import com.intellij.ide.plugins.PluginMainDescriptor\n", "\n", "val classLoaders = propPlugin.let { plugin ->\n", " plugin as PluginMainDescriptor\n", " plugin.content.modules\n", " .map { it.descriptor.classLoader } + listOf(plugin.classLoader)\n", "}\n", "\n", "val allClassLoaders = classLoaders.flatMap { getParents(it) + it }.distinct()" ],
"id" : "d44daf643fb9de60",
"outputs" : [ ],
"execution_count" : 5
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:55.128002Z",
"start_time" : "2025-08-07T10:45:47.503032Z"
}
},
"cell_type" : "code",
"source" : "createGraph(allClassLoaders, ::getParents)",
"id" : "ae79c4a3321e19fa",
"outputs" : [ {
"data" : {
"image/svg+xml" : "<svg width=\"945px\" height=\"476px\"\n viewBox=\"0.00 0.00 945.00 476.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n<g id=\"graph0\" class=\"graph\" transform=\"scale(1.0 1.0) rotate(0.0) translate(4.0 472.0)\">\n<title>G</title>\n<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-472 941,-472 941,4 -4,4\"/>\n<!-- 0 -->\n<g id=\"node1\" class=\"node\">\n<title>0</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"265\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"265\" y=\"-85.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n</g>\n<!-- 3 -->\n<g id=\"node2\" class=\"node\">\n<title>3</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"434\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"434\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n</g>\n<!-- 0&#45;&gt;3 -->\n<g id=\"edge1\" class=\"edge\">\n<title>0&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M287.56,-79.65C293.55,-77.16 300.02,-74.48 306,-72 338.71,-58.45 376.12,-42.96 402.01,-32.24\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"403.44,-35.44 411.34,-28.38 400.76,-28.97 403.44,-35.44\"/>\n</g>\n<!-- 1 -->\n<g id=\"node3\" class=\"node\">\n<title>1</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"27\" y=\"-85.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n</g>\n<!-- 1&#45;&gt;3 -->\n<g id=\"edge3\" class=\"edge\">\n<title>1&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M50.93,-81.34C61.59,-78.13 74.34,-74.56 86,-72 198.53,-47.33 334.03,-30.25 397.65,-22.96\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"398.05,-26.44 407.59,-21.84 397.26,-19.49 398.05,-26.44\"/>\n</g>\n<!-- 1&#45;&gt;1 -->\n<g id=\"edge2\" class=\"edge\">\n<title>1&#45;&gt;1</title>\n<path fill=\"none\" stroke=\"black\" d=\"M46.9,-102.43C59.69,-105.68 72,-101.53 72,-90 72,-81.62 65.5,-77.14 57.04,-76.56\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"56.5,-73.1 46.9,-77.57 57.19,-80.07 56.5,-73.1\"/>\n</g>\n<!-- 2 -->\n<g id=\"node4\" class=\"node\">\n<title>2</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"193\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"193\" y=\"-85.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n</g>\n<!-- 2&#45;&gt;3 -->\n<g id=\"edge4\" class=\"edge\">\n<title>2&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M214.04,-78.26C218.88,-76.01 224.06,-73.79 229,-72 287,-51.02 357.03,-34.77 398.41,-26.07\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"399.21,-29.48 408.29,-24.02 397.78,-22.62 399.21,-29.48\"/>\n</g>\n<!-- 4 -->\n<g id=\"node5\" class=\"node\">\n<title>4</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"138\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"138\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n</g>\n<!-- 4&#45;&gt;0 -->\n<g id=\"edge5\" class=\"edge\">\n<title>4&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M158.12,-149.91C178.99,-138.41 211.84,-120.3 235.61,-107.2\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"237.48,-110.16 244.55,-102.27 234.1,-104.03 237.48,-110.16\"/>\n</g>\n<!-- 4&#45;&gt;3 -->\n<g id=\"edge8\" class=\"edge\">\n<title>4&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M136.49,-143.98C135.73,-123.87 137.81,-90.79 157,-72 190.54,-39.16 329.23,-25.78 396.74,-21.13\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"397.19,-24.61 406.94,-20.46 396.73,-17.63 397.19,-24.61\"/>\n</g>\n<!-- 4&#45;&gt;1 -->\n<g id=\"edge6\" class=\"edge\">\n<title>4&#45;&gt;1</title>\n<path fill=\"none\" stroke=\"black\" d=\"M118.92,-148.97C101.29,-137.85 74.88,-121.19 54.88,-108.58\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"56.53,-105.48 46.2,-103.11 52.8,-111.41 56.53,-105.48\"/>\n</g>\n<!-- 4&#45;&gt;2 -->\n<g id=\"edge7\" class=\"edge\">\n<title>4&#45;&gt;2</title>\n<path fill=\"none\" stroke=\"black\" d=\"M149.93,-145.81C157.21,-136.55 166.66,-124.52 174.85,-114.09\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"177.66,-116.18 181.09,-106.16 172.16,-111.86 177.66,-116.18\"/>\n</g>\n<!-- 5 -->\n<g id=\"node6\" class=\"node\">\n<title>5</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"66\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"66\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n</g>\n<!-- 5&#45;&gt;0 -->\n<g id=\"edge9\" class=\"edge\">\n<title>5&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M87.07,-150.34C91.91,-148.09 97.08,-145.84 102,-144 156.93,-123.4 174.07,-128.6 229,-108 230.84,-107.31 232.72,-106.56 234.61,-105.78\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"236.2,-108.9 243.93,-101.66 233.37,-102.5 236.2,-108.9\"/>\n</g>\n<!-- 5&#45;&gt;3 -->\n<g id=\"edge11\" class=\"edge\">\n<title>5&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M74.11,-144.52C85.12,-123.99 106.83,-89.49 136,-72 179.62,-45.85 327.64,-28.94 397.25,-22.25\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"397.7,-25.73 407.33,-21.3 397.04,-18.76 397.7,-25.73\"/>\n</g>\n<!-- 5&#45;&gt;1 -->\n<g id=\"edge10\" class=\"edge\">\n<title>5&#45;&gt;1</title>\n<path fill=\"none\" stroke=\"black\" d=\"M56.95,-144.76C52.18,-136.19 46.22,-125.49 40.87,-115.9\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"43.92,-114.18 36,-107.15 37.81,-117.59 43.92,-114.18\"/>\n</g>\n<!-- 6 -->\n<g id=\"node7\" class=\"node\">\n<title>6</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"599\" cy=\"-378\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"599\" y=\"-373.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n</g>\n<!-- 6&#45;&gt;0 -->\n<g id=\"edge14\" class=\"edge\">\n<title>6&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M608.07,-360.87C613.28,-350.65 619.31,-336.96 622,-324 631.86,-276.49 635.42,-254.59 606,-216 531.86,-118.73 374.32,-97.1 302.31,-92.33\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"302.52,-88.83 292.33,-91.74 302.1,-95.82 302.52,-88.83\"/>\n</g>\n<!-- 6&#45;&gt;3 -->\n<g id=\"edge21\" class=\"edge\">\n<title>6&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M621.76,-368.24C664.16,-350.25 751,-304.88 751,-235 751,-235 751,-235 751,-161 751,-39.56 554.83,-21.31 471.13,-19.05\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"471.1,-15.55 461.03,-18.84 470.95,-22.55 471.1,-15.55\"/>\n</g>\n<!-- 7 -->\n<g id=\"node8\" class=\"node\">\n<title>7</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"806\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"806\" y=\"-229.8\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n</g>\n<!-- 6&#45;&gt;7 -->\n<g id=\"edge12\" class=\"edge\">\n<title>6&#45;&gt;7</title>\n<path fill=\"none\" stroke=\"black\" d=\"M625.82,-375.04C661.61,-371.1 725.11,-359.27 765,-324 783.45,-307.69 794.14,-281.36 799.95,-261.57\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"803.34,-262.46 802.56,-251.9 796.58,-260.64 803.34,-262.46\"/>\n</g>\n<!-- 8 -->\n<g id=\"node9\" class=\"node\">\n<title>8</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"844\" cy=\"-306\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"844\" y=\"-301.8\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n</g>\n<!-- 6&#45;&gt;8 -->\n<g id=\"edge13\" class=\"edge\">\n<title>6&#45;&gt;8</title>\n<path fill=\"none\" stroke=\"black\" d=\"M624.45,-371.58C663.39,-363.03 739.86,-345.18 803,-324 806.14,-322.95 809.38,-321.77 812.61,-320.53\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"814.1,-323.71 822.08,-316.75 811.5,-317.21 814.1,-323.71\"/>\n</g>\n<!-- 9 -->\n<g id=\"node10\" class=\"node\">\n<title>9</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"430\" cy=\"-306\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"430\" y=\"-301.8\" font-family=\"Times,serif\" font-size=\"14.00\">9</text>\n</g>\n<!-- 6&#45;&gt;9 -->\n<g id=\"edge15\" class=\"edge\">\n<title>6&#45;&gt;9</title>\n<path fill=\"none\" stroke=\"black\" d=\"M576.34,-367.62C550.76,-357.03 507.89,-339.28 471,-324 468.1,-322.8 465.09,-321.55 462.08,-320.3\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"463.13,-316.95 452.56,-316.35 460.45,-323.42 463.13,-316.95\"/>\n</g>\n<!-- 10 -->\n<g id=\"node11\" class=\"node\">\n<title>10</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"548\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"548\" y=\"-229.8\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n</g>\n<!-- 6&#45;&gt;10 -->\n<g id=\"edge16\" class=\"edge\">\n<title>6&#45;&gt;10</title>\n<path fill=\"none\" stroke=\"black\" d=\"M593.05,-360.43C584.31,-336.09 567.9,-290.4 557.48,-261.4\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"560.74,-260.13 554.07,-251.9 554.16,-262.5 560.74,-260.13\"/>\n</g>\n<!-- 11 -->\n<g id=\"node12\" class=\"node\">\n<title>11</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"286\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"286\" y=\"-229.8\" font-family=\"Times,serif\" font-size=\"14.00\">11</text>\n</g>\n<!-- 6&#45;&gt;11 -->\n<g id=\"edge17\" class=\"edge\">\n<title>6&#45;&gt;11</title>\n<path fill=\"none\" stroke=\"black\" d=\"M572.46,-373.89C532.08,-368.34 453.62,-354.37 394,-324 360.02,-306.69 327.11,-277.15 306.73,-256.89\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"309.07,-254.28 299.56,-249.62 304.09,-259.2 309.07,-254.28\"/>\n</g>\n<!-- 12 -->\n<g id=\"node13\" class=\"node\">\n<title>12</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"696\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"696\" y=\"-229.8\" font-family=\"Times,serif\" font-size=\"14.00\">12</text>\n</g>\n<!-- 6&#45;&gt;12 -->\n<g id=\"edge18\" class=\"edge\">\n<title>6&#45;&gt;12</title>\n<path fill=\"none\" stroke=\"black\" d=\"M614.88,-363.25C625.92,-353.14 640.48,-338.67 651,-324 665.2,-304.2 677.38,-279.28 685.48,-260.85\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"688.72,-262.18 689.43,-251.6 682.28,-259.42 688.72,-262.18\"/>\n</g>\n<!-- 13 -->\n<g id=\"node14\" class=\"node\">\n<title>13</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"362\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"362\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\">13</text>\n</g>\n<!-- 6&#45;&gt;13 -->\n<g id=\"edge19\" class=\"edge\">\n<title>6&#45;&gt;13</title>\n<path fill=\"none\" stroke=\"black\" d=\"M583.45,-362.96C542.77,-326.23 433.05,-227.15 385.03,-183.8\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"387.38,-181.2 377.61,-177.09 382.68,-186.39 387.38,-181.2\"/>\n</g>\n<!-- 14 -->\n<g id=\"node15\" class=\"node\">\n<title>14</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"434\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"434\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\">14</text>\n</g>\n<!-- 6&#45;&gt;14 -->\n<g id=\"edge20\" class=\"edge\">\n<title>6&#45;&gt;14</title>\n<path fill=\"none\" stroke=\"black\" d=\"M602.95,-359.75C609.22,-327.65 617.57,-258.17 584,-216 552.22,-176.09 522.82,-197.78 475,-180 471.89,-178.85 468.68,-177.6 465.47,-176.32\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"466.59,-173 456.01,-172.48 463.96,-179.49 466.59,-173\"/>\n</g>\n<!-- 7&#45;&gt;3 -->\n<g id=\"edge22\" class=\"edge\">\n<title>7&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M807.22,-215.88C808.56,-182.74 806.32,-109.74 765,-72 722.57,-33.25 548.66,-22.75 471.35,-19.97\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"471.22,-16.46 461.11,-19.63 470.98,-23.46 471.22,-16.46\"/>\n</g>\n<!-- 8&#45;&gt;3 -->\n<g id=\"edge24\" class=\"edge\">\n<title>8&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M846.33,-287.95C851.28,-243.86 857.47,-125.72 791,-72 742.38,-32.71 552.66,-22.47 471.34,-19.86\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"471.16,-16.36 461.06,-19.56 470.95,-23.35 471.16,-16.36\"/>\n</g>\n<!-- 8&#45;&gt;7 -->\n<g id=\"edge23\" class=\"edge\">\n<title>8&#45;&gt;7</title>\n<path fill=\"none\" stroke=\"black\" d=\"M835.19,-288.76C830.58,-280.28 824.84,-269.71 819.68,-260.2\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"822.61,-258.27 814.77,-251.15 816.46,-261.61 822.61,-258.27\"/>\n</g>\n<!-- 9&#45;&gt;0 -->\n<g id=\"edge28\" class=\"edge\">\n<title>9&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M403.97,-301.19C358.71,-293.97 268.54,-276.78 250,-252 220.46,-212.51 238.52,-151.41 252.77,-116.95\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"256.07,-118.14 256.83,-107.57 249.64,-115.36 256.07,-118.14\"/>\n</g>\n<!-- 9&#45;&gt;3 -->\n<g id=\"edge31\" class=\"edge\">\n<title>9&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M437.14,-288.42C446.85,-264.85 463.74,-220.07 470,-180 477.53,-131.74 459.05,-76.33 445.88,-44.71\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"449,-43.12 441.82,-35.32 442.57,-45.89 449,-43.12\"/>\n</g>\n<!-- 9&#45;&gt;10 -->\n<g id=\"edge25\" class=\"edge\">\n<title>9&#45;&gt;10</title>\n<path fill=\"none\" stroke=\"black\" d=\"M449.49,-293.44C468.62,-282.09 498,-264.66 519.71,-251.78\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"521.67,-254.69 528.49,-246.58 518.1,-248.67 521.67,-254.69\"/>\n</g>\n<!-- 9&#45;&gt;11 -->\n<g id=\"edge26\" class=\"edge\">\n<title>9&#45;&gt;11</title>\n<path fill=\"none\" stroke=\"black\" d=\"M408.75,-294.67C384.4,-282.83 344.28,-263.33 316.57,-249.86\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"317.86,-246.6 307.33,-245.37 314.8,-252.89 317.86,-246.6\"/>\n</g>\n<!-- 9&#45;&gt;12 -->\n<g id=\"edge27\" class=\"edge\">\n<title>9&#45;&gt;12</title>\n<path fill=\"none\" stroke=\"black\" d=\"M455.02,-298.41C502.77,-285.85 606.96,-258.43 661.37,-244.11\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"662.46,-247.45 671.24,-241.52 660.67,-240.68 662.46,-247.45\"/>\n</g>\n<!-- 9&#45;&gt;13 -->\n<g id=\"edge29\" class=\"edge\">\n<title>9&#45;&gt;13</title>\n<path fill=\"none\" stroke=\"black\" d=\"M409.23,-294.42C393.98,-285.41 374.38,-270.92 365,-252 355.53,-232.89 355.39,-208.54 357.28,-190.14\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"360.77,-190.44 358.57,-180.08 353.83,-189.55 360.77,-190.44\"/>\n</g>\n<!-- 9&#45;&gt;14 -->\n<g id=\"edge30\" class=\"edge\">\n<title>9&#45;&gt;14</title>\n<path fill=\"none\" stroke=\"black\" d=\"M430.48,-287.87C431.16,-263.67 432.42,-219.21 433.23,-190.39\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"436.73,-190.28 433.52,-180.19 429.74,-190.09 436.73,-190.28\"/>\n</g>\n<!-- 10&#45;&gt;3 -->\n<g id=\"edge32\" class=\"edge\">\n<title>10&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M552.51,-215.79C559.7,-184.36 570.16,-116.78 541,-72 524.99,-47.42 493.99,-33.82 469.46,-26.57\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"470.31,-23.18 459.75,-23.92 468.47,-29.93 470.31,-23.18\"/>\n</g>\n<!-- 11&#45;&gt;0 -->\n<g id=\"edge35\" class=\"edge\">\n<title>11&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M283.47,-215.87C279.89,-191.67 273.31,-147.21 269.05,-118.39\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"272.47,-117.57 267.54,-108.19 265.54,-118.59 272.47,-117.57\"/>\n</g>\n<!-- 11&#45;&gt;3 -->\n<g id=\"edge36\" class=\"edge\">\n<title>11&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M291.99,-216.27C298.92,-197.87 311.28,-167.76 326,-144 347.78,-108.83 357.83,-103.2 385,-72 394,-61.66 404.25,-50.48 413.05,-41.07\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"415.74,-43.32 420.03,-33.63 410.63,-38.53 415.74,-43.32\"/>\n</g>\n<!-- 11&#45;&gt;13 -->\n<g id=\"edge33\" class=\"edge\">\n<title>11&#45;&gt;13</title>\n<path fill=\"none\" stroke=\"black\" d=\"M301.38,-218.83C312.2,-208.87 326.86,-195.37 339.05,-184.14\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"341.66,-186.49 346.64,-177.14 336.92,-181.34 341.66,-186.49\"/>\n</g>\n<!-- 11&#45;&gt;14 -->\n<g id=\"edge34\" class=\"edge\">\n<title>11&#45;&gt;14</title>\n<path fill=\"none\" stroke=\"black\" d=\"M307.52,-222.82C332.73,-210.9 374.68,-191.06 403.3,-177.52\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"404.91,-180.63 412.45,-173.19 401.92,-174.3 404.91,-180.63\"/>\n</g>\n<!-- 12&#45;&gt;3 -->\n<g id=\"edge40\" class=\"edge\">\n<title>12&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M686.53,-217.09C666.96,-185.45 619.11,-114.04 562,-72 533.66,-51.14 495.91,-36.81 468.75,-28.36\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"469.49,-24.93 458.91,-25.41 467.48,-31.63 469.49,-24.93\"/>\n</g>\n<!-- 13&#45;&gt;0 -->\n<g id=\"edge37\" class=\"edge\">\n<title>13&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M344.21,-148.16C329.3,-137.41 307.83,-121.91 291,-109.76\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"292.84,-106.77 282.68,-103.76 288.74,-112.45 292.84,-106.77\"/>\n</g>\n<!-- 13&#45;&gt;3 -->\n<g id=\"edge38\" class=\"edge\">\n<title>13&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M370.26,-144.71C382.67,-120.23 406.24,-73.74 420.98,-44.67\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"424.21,-46.04 425.62,-35.54 417.97,-42.87 424.21,-46.04\"/>\n</g>\n<!-- 14&#45;&gt;3 -->\n<g id=\"edge39\" class=\"edge\">\n<title>14&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M434,-143.87C434,-119.67 434,-75.21 434,-46.39\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"437.5,-46.19 434,-36.19 430.5,-46.19 437.5,-46.19\"/>\n</g>\n<!-- 15 -->\n<g id=\"node16\" class=\"node\">\n<title>15</title>\n<ellipse fill=\"none\" stroke=\"black\" cx=\"430\" cy=\"-450\" rx=\"27\" ry=\"18\"/>\n<text text-anchor=\"middle\" x=\"430\" y=\"-445.8\" font-family=\"Times,serif\" font-size=\"14.00\">15</text>\n</g>\n<!-- 15&#45;&gt;0 -->\n<g id=\"edge41\" class=\"edge\">\n<title>15&#45;&gt;0</title>\n<path fill=\"none\" stroke=\"black\" d=\"M404.08,-444.4C374.63,-438.01 326.59,-423.94 295,-396 267.74,-371.89 268.51,-358.18 256,-324 228.24,-248.15 208.28,-221.51 231,-144 234.09,-133.46 240,-123.02 246.03,-114.24\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"248.93,-116.2 252,-106.06 243.28,-112.07 248.93,-116.2\"/>\n</g>\n<!-- 15&#45;&gt;3 -->\n<g id=\"edge53\" class=\"edge\">\n<title>15&#45;&gt;3</title>\n<path fill=\"none\" stroke=\"black\" d=\"M456.85,-447.24C534.36,-441.86 757.18,-424.28 824,-396 882.87,-371.08 937,-370.93 937,-307 937,-307 937,-307 937,-161 937,-95.31 879.72,-97.07 819,-72 756.28,-46.11 554.43,-28.18 470.81,-21.69\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"470.99,-18.19 460.75,-20.92 470.46,-25.17 470.99,-18.19\"/>\n</g>\n<!-- 15&#45;&gt;1 -->\n<g id=\"edge43\" class=\"edge\">\n<title>15&#45;&gt;1</title>\n<path fill=\"none\" stroke=\"black\" d=\"M402.9,-449.69C345.32,-450.09 207.81,-445.33 107,-396 54.74,-370.43 11,-365.18 11,-307 11,-307 11,-307 11,-233 11,-192.74 17.43,-146.47 22.14,-117.98\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"25.61,-118.43 23.84,-107.98 18.71,-117.25 25.61,-118.43\"/>\n</g>\n<!-- 15&#45;&gt;5 -->\n<g id=\"edge44\" class=\"edge\">\n<title>15&#45;&gt;5</title>\n<path fill=\"none\" stroke=\"black\" d=\"M402.97,-447.52C338.84,-443.47 179.91,-430.15 141,-396 80.13,-342.57 68.32,-239.56 66.27,-190.4\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"69.76,-190.1 65.95,-180.22 62.76,-190.32 69.76,-190.1\"/>\n</g>\n<!-- 15&#45;&gt;6 -->\n<g id=\"edge42\" class=\"edge\">\n<title>15&#45;&gt;6</title>\n<path fill=\"none\" stroke=\"black\" d=\"M452.44,-439.7C481.94,-427.49 533.94,-405.95 567.4,-392.09\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"568.83,-395.28 576.73,-388.22 566.16,-388.82 568.83,-395.28\"/>\n</g>\n<!-- 15&#45;&gt;7 -->\n<g id=\"edge45\" class=\"edge\">\n<title>15&#45;&gt;7</title>\n<path fill=\"none\" stroke=\"black\" d=\"M457.35,-448.56C516.29,-446.79 658.83,-438.13 769,-396 823.92,-375 851.93,-375.67 880,-324 887.64,-309.94 887.31,-302.23 880,-288 871.07,-270.61 853.48,-257.65 837.7,-248.9\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"839.18,-245.73 828.69,-244.23 835.96,-251.94 839.18,-245.73\"/>\n</g>\n<!-- 15&#45;&gt;8 -->\n<g id=\"edge46\" class=\"edge\">\n<title>15&#45;&gt;8</title>\n<path fill=\"none\" stroke=\"black\" d=\"M457.03,-448.38C510.74,-446.26 633.71,-436.93 727,-396 764.05,-379.74 800.08,-349.49 822.15,-328.81\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"824.81,-331.11 829.62,-321.67 819.97,-326.05 824.81,-331.11\"/>\n</g>\n<!-- 15&#45;&gt;9 -->\n<g id=\"edge47\" class=\"edge\">\n<title>15&#45;&gt;9</title>\n<path fill=\"none\" stroke=\"black\" d=\"M430,-431.87C430,-407.67 430,-363.21 430,-334.39\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"433.5,-334.19 430,-324.19 426.5,-334.19 433.5,-334.19\"/>\n</g>\n<!-- 15&#45;&gt;10 -->\n<g id=\"edge48\" class=\"edge\">\n<title>15&#45;&gt;10</title>\n<path fill=\"none\" stroke=\"black\" d=\"M438.87,-432.92C459.24,-395.97 509.51,-304.8 534.06,-260.28\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"537.26,-261.72 539.03,-251.27 531.13,-258.34 537.26,-261.72\"/>\n</g>\n<!-- 15&#45;&gt;11 -->\n<g id=\"edge49\" class=\"edge\">\n<title>15&#45;&gt;11</title>\n<path fill=\"none\" stroke=\"black\" d=\"M410.37,-437.58C395.3,-428.02 374.8,-413.21 361,-396 327.61,-354.36 305.09,-295.42 294,-261.62\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"297.3,-260.44 290.92,-251.98 290.63,-262.57 297.3,-260.44\"/>\n</g>\n<!-- 15&#45;&gt;12 -->\n<g id=\"edge50\" class=\"edge\">\n<title>15&#45;&gt;12</title>\n<path fill=\"none\" stroke=\"black\" d=\"M457.17,-448.59C499.45,-446.61 581.64,-437.27 635,-396 676.96,-363.54 690.06,-298.71 694.15,-261.99\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"697.63,-262.28 695.11,-251.99 690.67,-261.61 697.63,-262.28\"/>\n</g>\n<!-- 15&#45;&gt;13 -->\n<g id=\"edge51\" class=\"edge\">\n<title>15&#45;&gt;13</title>\n<path fill=\"none\" stroke=\"black\" d=\"M406.55,-440.47C385.34,-431.84 354.27,-416.79 333,-396 280.17,-344.37 269.09,-323.36 250,-252 245.86,-236.54 241.44,-229.52 250,-216 266.56,-189.85 299.89,-176.35 325.9,-169.54\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"326.91,-172.9 335.82,-167.17 325.28,-166.09 326.91,-172.9\"/>\n</g>\n<!-- 15&#45;&gt;14 -->\n<g id=\"edge52\" class=\"edge\">\n<title>15&#45;&gt;14</title>\n<path fill=\"none\" stroke=\"black\" d=\"M422.18,-432.68C409.25,-403.75 385.65,-341.48 394,-288 399.5,-252.78 413.21,-213.92 423.05,-189.03\"/>\n<polygon fill=\"black\" stroke=\"black\" points=\"426.37,-190.16 426.86,-179.58 419.88,-187.54 426.37,-190.16\"/>\n</g>\n</g>\n</svg>\n"
},
"execution_count" : 7,
"metadata" : { },
"output_type" : "execute_result"
} ],
"execution_count" : 7
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:59.682678Z",
"start_time" : "2025-08-07T10:45:59.639956Z"
}
},
"cell_type" : "code",
"source" : "allClassLoaders[1]",
"id" : "d44fea102781f332",
"outputs" : [ {
"data" : {
"text/plain" : [ "PluginClassLoader(plugin=PluginMainDescriptor(name=Properties, id=com.intellij.properties, version=253.20250804.0, package=com.intellij.lang.properties, isBundled=true, path=~/Applications/IntelliJ IDEA Ultimate.app/Contents/plugins/properties), packagePrefix=com.intellij.lang.properties., state=active, parents=ContentModuleDescriptor(moduleName=intellij.properties.psi, loadingRule=EMBEDDED) <- PluginMainDescriptor(name=Properties, id=com.intellij.properties, version=253.20250804.0, package=com.intellij.lang.properties, isBundled=true, path=~/Applications/IntelliJ IDEA Ultimate.app/Contents/plugins/properties), )" ]
},
"execution_count" : 8,
"metadata" : { },
"output_type" : "execute_result"
} ],
"execution_count" : 8
}, {
"metadata" : {
"ExecuteTime" : {
"end_time" : "2025-08-07T10:45:59.860192Z",
"start_time" : "2025-08-07T10:45:59.815300Z"
}
},
"cell_type" : "code",
"source" : "allClassLoaders[1] === getParents(allClassLoaders[1]).first()",
"id" : "4ef3ef6c03ea71ae",
"outputs" : [ {
"data" : {
"text/plain" : [ "true" ]
},
"execution_count" : 9,
"metadata" : { },
"output_type" : "execute_result"
} ],
"execution_count" : 9
}, {
"metadata" : { },
"cell_type" : "code",
"outputs" : [ ],
"execution_count" : null,
"source" : "",
"id" : "d73776e65a931b43"
} ],
"metadata" : {
"kernelspec" : {
"display_name" : "Kotlin",
"language" : "kotlin",
"name" : "kotlin"
},
"language_info" : {
"name" : "kotlin",
"version" : "2.2.20-Beta2",
"mimetype" : "text/x-kotlin",
"file_extension" : ".kt",
"pygments_lexer" : "kotlin",
"codemirror_mode" : "text/x-kotlin",
"nbconvert_exporter" : ""
},
"ktnbPluginMetadata" : {
"sessionRunMode" : "IDE_PROCESS"
}
},
"nbformat" : 4,
"nbformat_minor" : 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment