Closed chrisseaton closed 2 years ago
Before:
flowchart TD node0["Start"] node1["P(0)"] node2["P(1)"] node3["P(2)"] node4["P(3)"] node5["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:187"] node6["C(-1)"] node7["MethodCallTarget"] node8["Call String.hashCode"] node9["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:187"] node10["IntegerSwitch [97299, 101574]"] node11["Begin"] node12["Begin"] node13["Begin"] node14["C(instance:String)"] node15["IsNull"] node16["Guard not, else NullCheckException"] node17["π"] node19["If"] node20["=="] node21["Begin"] node22["Begin"] node23["If"] node24["InstanceOf a!# java.lang.String"] node25["Begin"] node26["Begin"] node28["C(0)"] node29["Guard, else ClassCastException"] node30["InstanceOf a# java.lang.String"] node31["LoadField String.coder"] node32["LoadField String.coder"] node33["π"] node34["If"] node35["=="] node36["Begin"] node37["Begin"] node39["Guard not, else NullCheckException"] node40["IsNull"] node41["LoadField String.value"] node42["π"] node43["Guard not, else NullCheckException"] node44["IsNull"] node45["LoadField String.value"] node46["π"] node47["ArrayLength"] node48["ArrayLength"] node49["If"] node50["=="] node51["Begin"] node52["Begin"] node54["ArrayLength"] node55["If"] node56["=="] node57["Begin"] node58["Begin"] node59["ArrayLength"] node60["ArrayEquals"] node63["C(1)"] node65["Merge"] node66["End"] node67["End"] node68["End"] node69["ϕ"] node70["End"] node71["End"] node72["End"] node73["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:187"] node74["=="] node75["Guard not, else UnreachedCode"] node76["End"] node77["Merge"] node78["End"] node79["ϕ"] node80["C(instance:String)"] node81["Guard not, else NullCheckException"] node82["π"] node84["If"] node85["=="] node86["Begin"] node87["Begin"] node88["If"] node89["InstanceOf a!# java.lang.String"] node90["Begin"] node91["Begin"] node93["Guard, else ClassCastException"] node94["InstanceOf a# java.lang.String"] node95["LoadField String.coder"] node96["LoadField String.coder"] node97["π"] node98["If"] node99["=="] node100["Begin"] node101["Begin"] node103["Guard not, else NullCheckException"] node104["IsNull"] node105["LoadField String.value"] node106["π"] node107["Guard not, else NullCheckException"] node108["IsNull"] node109["LoadField String.value"] node110["π"] node111["ArrayLength"] node112["ArrayLength"] node113["If"] node114["=="] node115["Begin"] node116["Begin"] node118["ArrayLength"] node119["If"] node120["=="] node121["Begin"] node122["Begin"] node123["ArrayLength"] node124["ArrayEquals"] node128["Merge"] node129["End"] node130["End"] node131["End"] node132["ϕ"] node133["End"] node134["End"] node135["End"] node136["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:187"] node137["=="] node138["Guard not, else UnreachedCode"] node139["End"] node140["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:187"] node141["IntegerSwitch [0, 1]"] node142["Begin"] node143["Begin"] node144["Begin"] node145["StoreField JavaExamples.intField"] node146["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:198"] node148["StoreField JavaExamples.intField"] node149["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:194"] node150["End"] node151["Merge"] node152["End"] node153["ϕ"] node154["StoreField JavaExamples.intField"] node155["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:190"] node156["End"] node157["FrameState JavaExamples#exampleStringSwitch JavaExamples.java:201"] node158["Return"] node5 --> node0 node0 --> node8 node1 --> node5 node2 --> node5 node3 --> node5 node4 --> node5 node1 --> node7 node9 --> node8 node7 --> node8 node8 --> node10 node2 --> node9 node3 --> node9 node4 --> node9 node1 --> node9 node6 --> node9 node8 --> node9 node8 --> node10 node1 --> node15 node15 --> node16 node16 --> node19 node16 --> node17 node1 --> node17 node20 --> node19 node14 --> node20 node24 --> node23 node14 --> node24 node30 --> node29 node29 --> node31 node14 --> node30 node31 --> node32 node32 --> node34 node29 --> node33 node14 --> node33 node35 --> node34 node31 --> node35 node32 --> node35 node40 --> node39 node39 --> node41 node41 --> node43 node39 --> node42 node44 --> node43 node43 --> node45 node45 --> node47 node43 --> node46 node41 --> node47 node47 --> node48 node45 --> node48 node48 --> node49 node50 --> node49 node47 --> node50 node48 --> node50 node41 --> node54 node54 --> node55 node56 --> node55 node54 --> node56 node28 --> node56 node41 --> node59 node59 --> node60 node41 --> node60 node45 --> node60 node59 --> node60 node73 --> node65 node65 --> node75 node65 --> node69 node28 --> node69 node28 --> node69 node28 --> node69 node60 --> node69 node63 --> node69 node63 --> node69 node2 --> node73 node3 --> node73 node4 --> node73 node6 --> node73 node69 --> node73 node69 --> node74 node28 --> node74 node74 --> node75 node140 --> node77 node77 --> node141 node77 --> node79 node6 --> node79 node63 --> node79 node28 --> node79 node15 --> node81 node81 --> node84 node81 --> node82 node1 --> node82 node85 --> node84 node80 --> node85 node89 --> node88 node80 --> node89 node94 --> node93 node93 --> node95 node80 --> node94 node95 --> node96 node96 --> node98 node93 --> node97 node80 --> node97 node99 --> node98 node95 --> node99 node96 --> node99 node104 --> node103 node103 --> node105 node105 --> node107 node103 --> node106 node108 --> node107 node107 --> node109 node109 --> node111 node107 --> node110 node105 --> node111 node111 --> node112 node109 --> node112 node112 --> node113 node114 --> node113 node111 --> node114 node112 --> node114 node105 --> node118 node118 --> node119 node120 --> node119 node118 --> node120 node28 --> node120 node105 --> node123 node123 --> node124 node105 --> node124 node109 --> node124 node123 --> node124 node136 --> node128 node128 --> node138 node128 --> node132 node28 --> node132 node28 --> node132 node28 --> node132 node124 --> node132 node63 --> node132 node63 --> node132 node2 --> node136 node3 --> node136 node4 --> node136 node6 --> node136 node132 --> node136 node132 --> node137 node28 --> node137 node137 --> node138 node2 --> node140 node3 --> node140 node4 --> node140 node79 --> node140 node79 --> node141 node4 --> node145 node146 --> node145 node4 --> node146 node3 --> node148 node149 --> node148 node3 --> node149 node157 --> node151 node151 --> node158 node151 --> node153 node4 --> node153 node3 --> node153 node2 --> node153 node2 --> node154 node155 --> node154 node2 --> node155 node153 --> node157 node153 --> node158 node1 --> node20 node1 --> node31 node14 --> node32 node1 --> node40 node1 --> node42 node14 --> node44 node14 --> node46 node1 --> node85 node1 --> node95 node80 --> node96 node1 --> node104 node1 --> node106 node80 --> node108 node80 --> node110 node1 --> node41 node14 --> node45 node1 --> node105 node80 --> node109 node10 --> node16 node10 --> node81 node19 --> node23 node23 --> node29 node34 --> node39 node49 --> node54 node55 --> node59 node23 --> node65 node34 --> node65 node49 --> node65 node60 --> node65 node55 --> node65 node19 --> node65 node10 --> node77 node75 --> node77 node84 --> node88 node88 --> node93 node98 --> node103 node113 --> node118 node119 --> node123 node88 --> node128 node98 --> node128 node113 --> node128 node124 --> node128 node119 --> node128 node84 --> node128 node138 --> node77 node141 --> node154 node141 --> node148 node141 --> node145 node145 --> node151 node148 --> node151 node154 --> node151
After:
flowchart TD subgraph B0 node0("0 Start") style node0 fill:#e98693,stroke:black,color:#1a1919; node7("7 MethodCallTarget") style node7 fill:#f9f9f9,stroke:black,color:#1a1919; node8("8 Call String.hashCode") style node8 fill:#da2d4f,stroke:black,color:#ffffff; node15{{"15 IsNull"}} style node15 fill:#3cb4a4,stroke:black,color:#1a1919; node10("10 IntegerSwitch [97299, 101574]") style node10 fill:#e98693,stroke:black,color:#1a1919; end subgraph B1 node16("16 Guard not, else NullCheckException") style node16 fill:#ffa500,stroke:black,color:#1a1919; node20{{"20 =="}} style node20 fill:#3cb4a4,stroke:black,color:#1a1919; node19("19 If") style node19 fill:#e98693,stroke:black,color:#1a1919; end subgraph B3 node24("24 InstanceOf a!# java.lang.String") style node24 fill:#f9f9f9,stroke:black,color:#1a1919; node23("23 If") style node23 fill:#e98693,stroke:black,color:#1a1919; end subgraph B4 node30("30 InstanceOf a# java.lang.String") style node30 fill:#f9f9f9,stroke:black,color:#1a1919; node29("29 Guard, else ClassCastException") style node29 fill:#ffa500,stroke:black,color:#1a1919; node31("31 LoadField String.coder") style node31 fill:#c39bd3,stroke:black,color:#1a1919; node32("32 LoadField String.coder") style node32 fill:#c39bd3,stroke:black,color:#1a1919; node35{{"35 =="}} style node35 fill:#3cb4a4,stroke:black,color:#1a1919; node34("34 If") style node34 fill:#e98693,stroke:black,color:#1a1919; end subgraph B5 node40{{"40 IsNull"}} style node40 fill:#3cb4a4,stroke:black,color:#1a1919; node39("39 Guard not, else NullCheckException") style node39 fill:#ffa500,stroke:black,color:#1a1919; node41("41 LoadField String.value") style node41 fill:#c39bd3,stroke:black,color:#1a1919; node44{{"44 IsNull"}} style node44 fill:#3cb4a4,stroke:black,color:#1a1919; node43("43 Guard not, else NullCheckException") style node43 fill:#ffa500,stroke:black,color:#1a1919; node45("45 LoadField String.value") style node45 fill:#c39bd3,stroke:black,color:#1a1919; node47("47 ArrayLength") style node47 fill:#c39bd3,stroke:black,color:#1a1919; node48("48 ArrayLength") style node48 fill:#c39bd3,stroke:black,color:#1a1919; node50{{"50 =="}} style node50 fill:#3cb4a4,stroke:black,color:#1a1919; node49("49 If") style node49 fill:#e98693,stroke:black,color:#1a1919; end subgraph B6 node54("54 ArrayLength") style node54 fill:#c39bd3,stroke:black,color:#1a1919; node56{{"56 =="}} style node56 fill:#3cb4a4,stroke:black,color:#1a1919; node55("55 If") style node55 fill:#e98693,stroke:black,color:#1a1919; end subgraph B8 node59("59 ArrayLength") style node59 fill:#c39bd3,stroke:black,color:#1a1919; node60("60 ArrayEquals") style node60 fill:#c39bd3,stroke:black,color:#1a1919; end subgraph B12 node65("65 Merge") style node65 fill:#e98693,stroke:black,color:#1a1919; node74{{"74 =="}} style node74 fill:#3cb4a4,stroke:black,color:#1a1919; node75("75 Guard not, else UnreachedCode") style node75 fill:#ffa500,stroke:black,color:#1a1919; node69("69 ϕ") style node69 fill:#f9f9f9,stroke:black,color:#1a1919; end subgraph B13 node81("81 Guard not, else NullCheckException") style node81 fill:#ffa500,stroke:black,color:#1a1919; node85{{"85 =="}} style node85 fill:#3cb4a4,stroke:black,color:#1a1919; node84("84 If") style node84 fill:#e98693,stroke:black,color:#1a1919; end subgraph B15 node89("89 InstanceOf a!# java.lang.String") style node89 fill:#f9f9f9,stroke:black,color:#1a1919; node88("88 If") style node88 fill:#e98693,stroke:black,color:#1a1919; end subgraph B16 node94("94 InstanceOf a# java.lang.String") style node94 fill:#f9f9f9,stroke:black,color:#1a1919; node93("93 Guard, else ClassCastException") style node93 fill:#ffa500,stroke:black,color:#1a1919; node95("95 LoadField String.coder") style node95 fill:#c39bd3,stroke:black,color:#1a1919; node96("96 LoadField String.coder") style node96 fill:#c39bd3,stroke:black,color:#1a1919; node99{{"99 =="}} style node99 fill:#3cb4a4,stroke:black,color:#1a1919; node98("98 If") style node98 fill:#e98693,stroke:black,color:#1a1919; end subgraph B17 node104{{"104 IsNull"}} style node104 fill:#3cb4a4,stroke:black,color:#1a1919; node103("103 Guard not, else NullCheckException") style node103 fill:#ffa500,stroke:black,color:#1a1919; node105("105 LoadField String.value") style node105 fill:#c39bd3,stroke:black,color:#1a1919; node108{{"108 IsNull"}} style node108 fill:#3cb4a4,stroke:black,color:#1a1919; node107("107 Guard not, else NullCheckException") style node107 fill:#ffa500,stroke:black,color:#1a1919; node109("109 LoadField String.value") style node109 fill:#c39bd3,stroke:black,color:#1a1919; node111("111 ArrayLength") style node111 fill:#c39bd3,stroke:black,color:#1a1919; node112("112 ArrayLength") style node112 fill:#c39bd3,stroke:black,color:#1a1919; node114{{"114 =="}} style node114 fill:#3cb4a4,stroke:black,color:#1a1919; node113("113 If") style node113 fill:#e98693,stroke:black,color:#1a1919; end subgraph B18 node118("118 ArrayLength") style node118 fill:#c39bd3,stroke:black,color:#1a1919; node120{{"120 =="}} style node120 fill:#3cb4a4,stroke:black,color:#1a1919; node119("119 If") style node119 fill:#e98693,stroke:black,color:#1a1919; end subgraph B20 node123("123 ArrayLength") style node123 fill:#c39bd3,stroke:black,color:#1a1919; node124("124 ArrayEquals") style node124 fill:#c39bd3,stroke:black,color:#1a1919; end subgraph B24 node128("128 Merge") style node128 fill:#e98693,stroke:black,color:#1a1919; node137{{"137 =="}} style node137 fill:#3cb4a4,stroke:black,color:#1a1919; node138("138 Guard not, else UnreachedCode") style node138 fill:#ffa500,stroke:black,color:#1a1919; node132("132 ϕ") style node132 fill:#f9f9f9,stroke:black,color:#1a1919; end subgraph B26 node77("77 Merge") style node77 fill:#e98693,stroke:black,color:#1a1919; node141("141 IntegerSwitch [0, 1]") style node141 fill:#e98693,stroke:black,color:#1a1919; node79("79 ϕ") style node79 fill:#f9f9f9,stroke:black,color:#1a1919; end subgraph B27 node154("154 StoreField JavaExamples.intField") style node154 fill:#c39bd3,stroke:black,color:#1a1919; end subgraph B28 node148("148 StoreField JavaExamples.intField") style node148 fill:#c39bd3,stroke:black,color:#1a1919; end subgraph B29 node145("145 StoreField JavaExamples.intField") style node145 fill:#c39bd3,stroke:black,color:#1a1919; end subgraph B30 node151("151 Merge") style node151 fill:#e98693,stroke:black,color:#1a1919; node158("158 Return") style node158 fill:#e98693,stroke:black,color:#1a1919; node153("153 ϕ") style node153 fill:#f9f9f9,stroke:black,color:#1a1919; end node0 --> node8 linkStyle 0 stroke:#da2d4f,stroke-width:2px; inline1x7(["1 P(0)"]) style inline1x7 fill:#d7ede7,stroke:black,color:#1a1919; inline1x7 --> node7 linkStyle 1 stroke:#3cb4a4,stroke-width:px; node7 --> node8 linkStyle 2 stroke:#343d46,stroke-width:px; node8 --> node10 linkStyle 3 stroke:#da2d4f,stroke-width:2px; node8 --> node10 linkStyle 4 stroke:#3cb4a4,stroke-width:px; inline1x15(["1 P(0)"]) style inline1x15 fill:#d7ede7,stroke:black,color:#1a1919; inline1x15 --> node15 linkStyle 5 stroke:#3cb4a4,stroke-width:px; node15 --> node16 linkStyle 6 stroke:#3cb4a4,stroke-width:px; node16 --> node19 linkStyle 7 stroke:#da2d4f,stroke-width:2px; node20 --> node19 linkStyle 8 stroke:#3cb4a4,stroke-width:px; inline14x20(["14 C(instance:String)"]) style inline14x20 fill:#d7ede7,stroke:black,color:#1a1919; inline14x20 --> node20 linkStyle 9 stroke:#3cb4a4,stroke-width:px; node24 --> node23 linkStyle 10 stroke:#3cb4a4,stroke-width:px; inline14x24(["14 C(instance:String)"]) style inline14x24 fill:#d7ede7,stroke:black,color:#1a1919; inline14x24 --> node24 linkStyle 11 stroke:#3cb4a4,stroke-width:px; node30 --> node29 linkStyle 12 stroke:#3cb4a4,stroke-width:px; node29 --> node31 linkStyle 13 stroke:#da2d4f,stroke-width:2px; inline14x30(["14 C(instance:String)"]) style inline14x30 fill:#d7ede7,stroke:black,color:#1a1919; inline14x30 --> node30 linkStyle 14 stroke:#3cb4a4,stroke-width:px; node31 --> node32 linkStyle 15 stroke:#da2d4f,stroke-width:2px; node32 --> node34 linkStyle 16 stroke:#da2d4f,stroke-width:2px; node35 --> node34 linkStyle 17 stroke:#3cb4a4,stroke-width:px; node31 --> node35 linkStyle 18 stroke:#3cb4a4,stroke-width:px; node32 --> node35 linkStyle 19 stroke:#3cb4a4,stroke-width:px; node40 --> node39 linkStyle 20 stroke:#3cb4a4,stroke-width:px; node39 --> node41 linkStyle 21 stroke:#da2d4f,stroke-width:2px; node41 --> node43 linkStyle 22 stroke:#da2d4f,stroke-width:2px; node44 --> node43 linkStyle 23 stroke:#3cb4a4,stroke-width:px; node43 --> node45 linkStyle 24 stroke:#da2d4f,stroke-width:2px; node45 --> node47 linkStyle 25 stroke:#da2d4f,stroke-width:2px; node41 --> node47 linkStyle 26 stroke:#3cb4a4,stroke-width:px; node47 --> node48 linkStyle 27 stroke:#da2d4f,stroke-width:2px; node45 --> node48 linkStyle 28 stroke:#3cb4a4,stroke-width:px; node48 --> node49 linkStyle 29 stroke:#da2d4f,stroke-width:2px; node50 --> node49 linkStyle 30 stroke:#3cb4a4,stroke-width:px; node47 --> node50 linkStyle 31 stroke:#3cb4a4,stroke-width:px; node48 --> node50 linkStyle 32 stroke:#3cb4a4,stroke-width:px; node41 --> node54 linkStyle 33 stroke:#3cb4a4,stroke-width:px; node54 --> node55 linkStyle 34 stroke:#da2d4f,stroke-width:2px; node56 --> node55 linkStyle 35 stroke:#3cb4a4,stroke-width:px; node54 --> node56 linkStyle 36 stroke:#3cb4a4,stroke-width:px; inline28x56(["28 C(0)"]) style inline28x56 fill:#d7ede7,stroke:black,color:#1a1919; inline28x56 --> node56 linkStyle 37 stroke:#3cb4a4,stroke-width:px; node41 --> node59 linkStyle 38 stroke:#3cb4a4,stroke-width:px; node59 --> node60 linkStyle 39 stroke:#da2d4f,stroke-width:2px; node41 --> node60 linkStyle 40 stroke:#3cb4a4,stroke-width:px; node45 --> node60 linkStyle 41 stroke:#3cb4a4,stroke-width:px; node59 --> node60 linkStyle 42 stroke:#3cb4a4,stroke-width:px; node65 --> node75 linkStyle 43 stroke:#da2d4f,stroke-width:2px; node65 --> node69 linkStyle 44 stroke:#343d46,stroke-width:px; inline28x69(["28 C(0)"]) style inline28x69 fill:#d7ede7,stroke:black,color:#1a1919; inline28x69 --> node69 linkStyle 45 stroke:#3cb4a4,stroke-width:px; inline28x69(["28 C(0)"]) style inline28x69 fill:#d7ede7,stroke:black,color:#1a1919; inline28x69 --> node69 linkStyle 46 stroke:#3cb4a4,stroke-width:px; inline28x69(["28 C(0)"]) style inline28x69 fill:#d7ede7,stroke:black,color:#1a1919; inline28x69 --> node69 linkStyle 47 stroke:#3cb4a4,stroke-width:px; node60 --> node69 linkStyle 48 stroke:#3cb4a4,stroke-width:px; inline63x69(["63 C(1)"]) style inline63x69 fill:#d7ede7,stroke:black,color:#1a1919; inline63x69 --> node69 linkStyle 49 stroke:#3cb4a4,stroke-width:px; inline63x69(["63 C(1)"]) style inline63x69 fill:#d7ede7,stroke:black,color:#1a1919; inline63x69 --> node69 linkStyle 50 stroke:#3cb4a4,stroke-width:px; node69 --> node74 linkStyle 51 stroke:#3cb4a4,stroke-width:px; inline28x74(["28 C(0)"]) style inline28x74 fill:#d7ede7,stroke:black,color:#1a1919; inline28x74 --> node74 linkStyle 52 stroke:#3cb4a4,stroke-width:px; node74 --> node75 linkStyle 53 stroke:#3cb4a4,stroke-width:px; node77 --> node141 linkStyle 54 stroke:#da2d4f,stroke-width:2px; node77 --> node79 linkStyle 55 stroke:#343d46,stroke-width:px; inline6x79(["6 C(-1)"]) style inline6x79 fill:#d7ede7,stroke:black,color:#1a1919; inline6x79 --> node79 linkStyle 56 stroke:#3cb4a4,stroke-width:px; inline63x79(["63 C(1)"]) style inline63x79 fill:#d7ede7,stroke:black,color:#1a1919; inline63x79 --> node79 linkStyle 57 stroke:#3cb4a4,stroke-width:px; inline28x79(["28 C(0)"]) style inline28x79 fill:#d7ede7,stroke:black,color:#1a1919; inline28x79 --> node79 linkStyle 58 stroke:#3cb4a4,stroke-width:px; node15 --> node81 linkStyle 59 stroke:#3cb4a4,stroke-width:px; node81 --> node84 linkStyle 60 stroke:#da2d4f,stroke-width:2px; node85 --> node84 linkStyle 61 stroke:#3cb4a4,stroke-width:px; inline80x85(["80 C(instance:String)"]) style inline80x85 fill:#d7ede7,stroke:black,color:#1a1919; inline80x85 --> node85 linkStyle 62 stroke:#3cb4a4,stroke-width:px; node89 --> node88 linkStyle 63 stroke:#3cb4a4,stroke-width:px; inline80x89(["80 C(instance:String)"]) style inline80x89 fill:#d7ede7,stroke:black,color:#1a1919; inline80x89 --> node89 linkStyle 64 stroke:#3cb4a4,stroke-width:px; node94 --> node93 linkStyle 65 stroke:#3cb4a4,stroke-width:px; node93 --> node95 linkStyle 66 stroke:#da2d4f,stroke-width:2px; inline80x94(["80 C(instance:String)"]) style inline80x94 fill:#d7ede7,stroke:black,color:#1a1919; inline80x94 --> node94 linkStyle 67 stroke:#3cb4a4,stroke-width:px; node95 --> node96 linkStyle 68 stroke:#da2d4f,stroke-width:2px; node96 --> node98 linkStyle 69 stroke:#da2d4f,stroke-width:2px; node99 --> node98 linkStyle 70 stroke:#3cb4a4,stroke-width:px; node95 --> node99 linkStyle 71 stroke:#3cb4a4,stroke-width:px; node96 --> node99 linkStyle 72 stroke:#3cb4a4,stroke-width:px; node104 --> node103 linkStyle 73 stroke:#3cb4a4,stroke-width:px; node103 --> node105 linkStyle 74 stroke:#da2d4f,stroke-width:2px; node105 --> node107 linkStyle 75 stroke:#da2d4f,stroke-width:2px; node108 --> node107 linkStyle 76 stroke:#3cb4a4,stroke-width:px; node107 --> node109 linkStyle 77 stroke:#da2d4f,stroke-width:2px; node109 --> node111 linkStyle 78 stroke:#da2d4f,stroke-width:2px; node105 --> node111 linkStyle 79 stroke:#3cb4a4,stroke-width:px; node111 --> node112 linkStyle 80 stroke:#da2d4f,stroke-width:2px; node109 --> node112 linkStyle 81 stroke:#3cb4a4,stroke-width:px; node112 --> node113 linkStyle 82 stroke:#da2d4f,stroke-width:2px; node114 --> node113 linkStyle 83 stroke:#3cb4a4,stroke-width:px; node111 --> node114 linkStyle 84 stroke:#3cb4a4,stroke-width:px; node112 --> node114 linkStyle 85 stroke:#3cb4a4,stroke-width:px; node105 --> node118 linkStyle 86 stroke:#3cb4a4,stroke-width:px; node118 --> node119 linkStyle 87 stroke:#da2d4f,stroke-width:2px; node120 --> node119 linkStyle 88 stroke:#3cb4a4,stroke-width:px; node118 --> node120 linkStyle 89 stroke:#3cb4a4,stroke-width:px; inline28x120(["28 C(0)"]) style inline28x120 fill:#d7ede7,stroke:black,color:#1a1919; inline28x120 --> node120 linkStyle 90 stroke:#3cb4a4,stroke-width:px; node105 --> node123 linkStyle 91 stroke:#3cb4a4,stroke-width:px; node123 --> node124 linkStyle 92 stroke:#da2d4f,stroke-width:2px; node105 --> node124 linkStyle 93 stroke:#3cb4a4,stroke-width:px; node109 --> node124 linkStyle 94 stroke:#3cb4a4,stroke-width:px; node123 --> node124 linkStyle 95 stroke:#3cb4a4,stroke-width:px; node128 --> node138 linkStyle 96 stroke:#da2d4f,stroke-width:2px; node128 --> node132 linkStyle 97 stroke:#343d46,stroke-width:px; inline28x132(["28 C(0)"]) style inline28x132 fill:#d7ede7,stroke:black,color:#1a1919; inline28x132 --> node132 linkStyle 98 stroke:#3cb4a4,stroke-width:px; inline28x132(["28 C(0)"]) style inline28x132 fill:#d7ede7,stroke:black,color:#1a1919; inline28x132 --> node132 linkStyle 99 stroke:#3cb4a4,stroke-width:px; inline28x132(["28 C(0)"]) style inline28x132 fill:#d7ede7,stroke:black,color:#1a1919; inline28x132 --> node132 linkStyle 100 stroke:#3cb4a4,stroke-width:px; node124 --> node132 linkStyle 101 stroke:#3cb4a4,stroke-width:px; inline63x132(["63 C(1)"]) style inline63x132 fill:#d7ede7,stroke:black,color:#1a1919; inline63x132 --> node132 linkStyle 102 stroke:#3cb4a4,stroke-width:px; inline63x132(["63 C(1)"]) style inline63x132 fill:#d7ede7,stroke:black,color:#1a1919; inline63x132 --> node132 linkStyle 103 stroke:#3cb4a4,stroke-width:px; node132 --> node137 linkStyle 104 stroke:#3cb4a4,stroke-width:px; inline28x137(["28 C(0)"]) style inline28x137 fill:#d7ede7,stroke:black,color:#1a1919; inline28x137 --> node137 linkStyle 105 stroke:#3cb4a4,stroke-width:px; node137 --> node138 linkStyle 106 stroke:#3cb4a4,stroke-width:px; node79 --> node141 linkStyle 107 stroke:#3cb4a4,stroke-width:px; inline4x145(["4 P(3)"]) style inline4x145 fill:#d7ede7,stroke:black,color:#1a1919; inline4x145 --> node145 linkStyle 108 stroke:#3cb4a4,stroke-width:px; inline3x148(["3 P(2)"]) style inline3x148 fill:#d7ede7,stroke:black,color:#1a1919; inline3x148 --> node148 linkStyle 109 stroke:#3cb4a4,stroke-width:px; node151 --> node158 linkStyle 110 stroke:#da2d4f,stroke-width:2px; node151 --> node153 linkStyle 111 stroke:#343d46,stroke-width:px; inline4x153(["4 P(3)"]) style inline4x153 fill:#d7ede7,stroke:black,color:#1a1919; inline4x153 --> node153 linkStyle 112 stroke:#3cb4a4,stroke-width:px; inline3x153(["3 P(2)"]) style inline3x153 fill:#d7ede7,stroke:black,color:#1a1919; inline3x153 --> node153 linkStyle 113 stroke:#3cb4a4,stroke-width:px; inline2x153(["2 P(1)"]) style inline2x153 fill:#d7ede7,stroke:black,color:#1a1919; inline2x153 --> node153 linkStyle 114 stroke:#3cb4a4,stroke-width:px; inline2x154(["2 P(1)"]) style inline2x154 fill:#d7ede7,stroke:black,color:#1a1919; inline2x154 --> node154 linkStyle 115 stroke:#3cb4a4,stroke-width:px; node153 --> node158 linkStyle 116 stroke:#3cb4a4,stroke-width:px; inline1x20(["1 P(0)"]) style inline1x20 fill:#d7ede7,stroke:black,color:#1a1919; inline1x20 --> node20 linkStyle 117 stroke:#3cb4a4,stroke-width:px; inline1x31(["1 P(0)"]) style inline1x31 fill:#d7ede7,stroke:black,color:#1a1919; inline1x31 --> node31 linkStyle 118 stroke:#3cb4a4,stroke-width:px; inline14x32(["14 C(instance:String)"]) style inline14x32 fill:#d7ede7,stroke:black,color:#1a1919; inline14x32 --> node32 linkStyle 119 stroke:#3cb4a4,stroke-width:px; inline1x40(["1 P(0)"]) style inline1x40 fill:#d7ede7,stroke:black,color:#1a1919; inline1x40 --> node40 linkStyle 120 stroke:#3cb4a4,stroke-width:px; inline14x44(["14 C(instance:String)"]) style inline14x44 fill:#d7ede7,stroke:black,color:#1a1919; inline14x44 --> node44 linkStyle 121 stroke:#3cb4a4,stroke-width:px; inline1x85(["1 P(0)"]) style inline1x85 fill:#d7ede7,stroke:black,color:#1a1919; inline1x85 --> node85 linkStyle 122 stroke:#3cb4a4,stroke-width:px; inline1x95(["1 P(0)"]) style inline1x95 fill:#d7ede7,stroke:black,color:#1a1919; inline1x95 --> node95 linkStyle 123 stroke:#3cb4a4,stroke-width:px; inline80x96(["80 C(instance:String)"]) style inline80x96 fill:#d7ede7,stroke:black,color:#1a1919; inline80x96 --> node96 linkStyle 124 stroke:#3cb4a4,stroke-width:px; inline1x104(["1 P(0)"]) style inline1x104 fill:#d7ede7,stroke:black,color:#1a1919; inline1x104 --> node104 linkStyle 125 stroke:#3cb4a4,stroke-width:px; inline80x108(["80 C(instance:String)"]) style inline80x108 fill:#d7ede7,stroke:black,color:#1a1919; inline80x108 --> node108 linkStyle 126 stroke:#3cb4a4,stroke-width:px; inline1x41(["1 P(0)"]) style inline1x41 fill:#d7ede7,stroke:black,color:#1a1919; inline1x41 --> node41 linkStyle 127 stroke:#3cb4a4,stroke-width:px; inline14x45(["14 C(instance:String)"]) style inline14x45 fill:#d7ede7,stroke:black,color:#1a1919; inline14x45 --> node45 linkStyle 128 stroke:#3cb4a4,stroke-width:px; inline1x105(["1 P(0)"]) style inline1x105 fill:#d7ede7,stroke:black,color:#1a1919; inline1x105 --> node105 linkStyle 129 stroke:#3cb4a4,stroke-width:px; inline80x109(["80 C(instance:String)"]) style inline80x109 fill:#d7ede7,stroke:black,color:#1a1919; inline80x109 --> node109 linkStyle 130 stroke:#3cb4a4,stroke-width:px; node10 --> node16 linkStyle 131 stroke:#da2d4f,stroke-width:2px; node10 --> node81 linkStyle 132 stroke:#da2d4f,stroke-width:2px; node19 --> node23 linkStyle 133 stroke:#da2d4f,stroke-width:2px; node23 --> node29 linkStyle 134 stroke:#da2d4f,stroke-width:2px; node34 --> node39 linkStyle 135 stroke:#da2d4f,stroke-width:2px; node49 --> node54 linkStyle 136 stroke:#da2d4f,stroke-width:2px; node55 --> node59 linkStyle 137 stroke:#da2d4f,stroke-width:2px; node23 --> node65 linkStyle 138 stroke:#da2d4f,stroke-width:2px; node34 --> node65 linkStyle 139 stroke:#da2d4f,stroke-width:2px; node49 --> node65 linkStyle 140 stroke:#da2d4f,stroke-width:2px; node60 --> node65 linkStyle 141 stroke:#da2d4f,stroke-width:2px; node55 --> node65 linkStyle 142 stroke:#da2d4f,stroke-width:2px; node19 --> node65 linkStyle 143 stroke:#da2d4f,stroke-width:2px; node10 --> node77 linkStyle 144 stroke:#da2d4f,stroke-width:2px; node75 --> node77 linkStyle 145 stroke:#da2d4f,stroke-width:2px; node84 --> node88 linkStyle 146 stroke:#da2d4f,stroke-width:2px; node88 --> node93 linkStyle 147 stroke:#da2d4f,stroke-width:2px; node98 --> node103 linkStyle 148 stroke:#da2d4f,stroke-width:2px; node113 --> node118 linkStyle 149 stroke:#da2d4f,stroke-width:2px; node119 --> node123 linkStyle 150 stroke:#da2d4f,stroke-width:2px; node88 --> node128 linkStyle 151 stroke:#da2d4f,stroke-width:2px; node98 --> node128 linkStyle 152 stroke:#da2d4f,stroke-width:2px; node113 --> node128 linkStyle 153 stroke:#da2d4f,stroke-width:2px; node124 --> node128 linkStyle 154 stroke:#da2d4f,stroke-width:2px; node119 --> node128 linkStyle 155 stroke:#da2d4f,stroke-width:2px; node84 --> node128 linkStyle 156 stroke:#da2d4f,stroke-width:2px; node138 --> node77 linkStyle 157 stroke:#da2d4f,stroke-width:2px; node141 --> node154 linkStyle 158 stroke:#da2d4f,stroke-width:2px; node141 --> node148 linkStyle 159 stroke:#da2d4f,stroke-width:2px; node141 --> node145 linkStyle 160 stroke:#da2d4f,stroke-width:2px; node145 --> node151 linkStyle 161 stroke:#da2d4f,stroke-width:2px; node148 --> node151 linkStyle 162 stroke:#da2d4f,stroke-width:2px; node154 --> node151 linkStyle 163 stroke:#da2d4f,stroke-width:2px;
I liked Mermaid's default styling for clusters, so I actually adopted it for Graphviz as well.
Before:
After:
I liked Mermaid's default styling for clusters, so I actually adopted it for Graphviz as well.
Before:
After: