@stream44.studio/encapsulate 0.4.0-rc.19 → 0.4.0-rc.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.o/stream44.studio/assets/Icon-v1.svg +1170 -0
- package/LICENSE.txt +1 -1
- package/README.md +23 -12
- package/package.json +1 -1
- package/src/capsule-projectors/CapsuleModuleProjector.v0.ts +19 -19
- package/src/encapsulate.ts +56 -25
- package/src/spine-contracts/CapsuleSpineContract.v0/Membrane.v0.ts +6 -4
- package/src/spine-contracts/CapsuleSpineContract.v0/Overview.drawio +261 -0
- package/src/spine-contracts/CapsuleSpineContract.v0/Overview.svg +1 -0
- package/src/spine-contracts/CapsuleSpineContract.v0/README.md +437 -1
- package/src/spine-contracts/CapsuleSpineContract.v0/Static.v0.ts +41 -3
- package/src/spine-factories/CapsuleSpineFactory.v0.ts +23 -5
- package/src/static-analyzer.v0.ts +129 -17
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
<mxfile host="65bd71144e">
|
|
2
|
+
<diagram id="SRAujS_iovYNQiKgPtnD" name="Page-1">
|
|
3
|
+
<mxGraphModel dx="1122" dy="923" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0"/>
|
|
6
|
+
<mxCell id="1" parent="0"/>
|
|
7
|
+
<mxCell id="85" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
8
|
+
<mxGeometry x="10" width="830" height="800" as="geometry"/>
|
|
9
|
+
</mxCell>
|
|
10
|
+
<mxCell id="64" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#0066CC;" edge="1" parent="1" source="49" target="60">
|
|
11
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
12
|
+
</mxCell>
|
|
13
|
+
<mxCell id="49" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
14
|
+
<mxGeometry x="30" y="410" width="160" height="350" as="geometry"/>
|
|
15
|
+
</mxCell>
|
|
16
|
+
<mxCell id="66" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#0066CC;" edge="1" parent="1" source="43" target="61">
|
|
17
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
18
|
+
</mxCell>
|
|
19
|
+
<mxCell id="43" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
20
|
+
<mxGeometry x="540" y="410" width="170" height="350" as="geometry"/>
|
|
21
|
+
</mxCell>
|
|
22
|
+
<mxCell id="65" style="edgeStyle=orthogonalEdgeStyle;html=1;fontColor=#0066CC;" edge="1" parent="1" source="36" target="62">
|
|
23
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
24
|
+
</mxCell>
|
|
25
|
+
<mxCell id="36" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
|
26
|
+
<mxGeometry x="200" y="410" width="300" height="350" as="geometry"/>
|
|
27
|
+
</mxCell>
|
|
28
|
+
<mxCell id="2" value="CapsuleSpineContract - v0" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontStyle=1" parent="1" vertex="1">
|
|
29
|
+
<mxGeometry x="30" y="760" width="680" height="20" as="geometry"/>
|
|
30
|
+
</mxCell>
|
|
31
|
+
<mxCell id="8" style="edgeStyle=none;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="4" target="5" edge="1">
|
|
32
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
33
|
+
</mxCell>
|
|
34
|
+
<mxCell id="4" value="extends" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
|
|
35
|
+
<mxGeometry x="390" y="470" width="100" height="20" as="geometry"/>
|
|
36
|
+
</mxCell>
|
|
37
|
+
<mxCell id="9" value="this (classic class extends)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
|
38
|
+
<mxGeometry x="390" y="700" width="310" height="20" as="geometry"/>
|
|
39
|
+
</mxCell>
|
|
40
|
+
<mxCell id="10" value="definition aspect" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
|
|
41
|
+
<mxGeometry x="570" y="50" width="150" height="20" as="geometry"/>
|
|
42
|
+
</mxCell>
|
|
43
|
+
<mxCell id="11" value="runtime aspect" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
|
44
|
+
<mxGeometry x="570" y="90" width="150" height="20" as="geometry"/>
|
|
45
|
+
</mxCell>
|
|
46
|
+
<mxCell id="19" style="edgeStyle=none;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" source="12" target="9" edge="1">
|
|
47
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
48
|
+
</mxCell>
|
|
49
|
+
<mxCell id="21" value="overrides parent" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="19" vertex="1" connectable="0">
|
|
50
|
+
<mxGeometry x="-0.3215" y="1" relative="1" as="geometry">
|
|
51
|
+
<mxPoint y="3" as="offset"/>
|
|
52
|
+
</mxGeometry>
|
|
53
|
+
</mxCell>
|
|
54
|
+
<mxCell id="12" value="this.self" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
|
55
|
+
<mxGeometry x="390" y="630" width="100" height="20" as="geometry"/>
|
|
56
|
+
</mxCell>
|
|
57
|
+
<mxCell id="20" style="edgeStyle=none;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="1" source="13" target="9" edge="1">
|
|
58
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
59
|
+
</mxCell>
|
|
60
|
+
<mxCell id="22" value="overridden by children" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="20" vertex="1" connectable="0">
|
|
61
|
+
<mxGeometry x="-0.0021" y="1" relative="1" as="geometry">
|
|
62
|
+
<mxPoint x="-1" y="-5" as="offset"/>
|
|
63
|
+
</mxGeometry>
|
|
64
|
+
</mxCell>
|
|
65
|
+
<mxCell id="13" value="this.self" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
|
|
66
|
+
<mxGeometry x="600" y="550" width="100" height="20" as="geometry"/>
|
|
67
|
+
</mxCell>
|
|
68
|
+
<mxCell id="16" style="edgeStyle=none;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" parent="1" source="14" target="12" edge="1">
|
|
69
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
70
|
+
</mxCell>
|
|
71
|
+
<mxCell id="14" value="properties" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
|
|
72
|
+
<mxGeometry x="390" y="540" width="100" height="20" as="geometry"/>
|
|
73
|
+
</mxCell>
|
|
74
|
+
<mxCell id="17" style="edgeStyle=none;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" parent="1" source="15" edge="1" target="13">
|
|
75
|
+
<mxGeometry relative="1" as="geometry">
|
|
76
|
+
<mxPoint x="675" y="530" as="targetPoint"/>
|
|
77
|
+
</mxGeometry>
|
|
78
|
+
</mxCell>
|
|
79
|
+
<mxCell id="15" value="properties" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
|
|
80
|
+
<mxGeometry x="600" y="440" width="100" height="20" as="geometry"/>
|
|
81
|
+
</mxCell>
|
|
82
|
+
<mxCell id="3" value="Capsule A" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;fontStyle=1" parent="1" vertex="1">
|
|
83
|
+
<mxGeometry x="360" y="590" width="130" height="20" as="geometry"/>
|
|
84
|
+
</mxCell>
|
|
85
|
+
<mxCell id="5" value="Capsule B" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;fontStyle=1" parent="1" vertex="1">
|
|
86
|
+
<mxGeometry x="570" y="470" width="130" height="20" as="geometry"/>
|
|
87
|
+
</mxCell>
|
|
88
|
+
<mxCell id="23" value="Own properties independent of parents or children." style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
89
|
+
<mxGeometry x="720" y="545" width="110" height="30" as="geometry"/>
|
|
90
|
+
</mxCell>
|
|
91
|
+
<mxCell id="24" value="Shared properties across extends stack." style="text;html=1;strokeColor=none;fillColor=default;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
92
|
+
<mxGeometry x="420" y="720" width="240" height="30" as="geometry"/>
|
|
93
|
+
</mxCell>
|
|
94
|
+
<mxCell id="30" style="edgeStyle=none;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="25" target="48" edge="1">
|
|
95
|
+
<mxGeometry relative="1" as="geometry">
|
|
96
|
+
<mxPoint x="180" y="510" as="targetPoint"/>
|
|
97
|
+
</mxGeometry>
|
|
98
|
+
</mxCell>
|
|
99
|
+
<mxCell id="25" value="mapping (special property)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;arcSize=50;" parent="1" vertex="1">
|
|
100
|
+
<mxGeometry x="220" y="500" width="260" height="20" as="geometry"/>
|
|
101
|
+
</mxCell>
|
|
102
|
+
<mxCell id="31" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;rounded=1;" parent="1" source="26" target="12" edge="1">
|
|
103
|
+
<mxGeometry relative="1" as="geometry">
|
|
104
|
+
<Array as="points">
|
|
105
|
+
<mxPoint x="280" y="640"/>
|
|
106
|
+
</Array>
|
|
107
|
+
</mxGeometry>
|
|
108
|
+
</mxCell>
|
|
109
|
+
<mxCell id="32" value="<font style="" color="#cc0000"><b>NEW</b></font> instance<br>as &lt;property&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="31" vertex="1" connectable="0">
|
|
110
|
+
<mxGeometry x="-0.7176" y="-2" relative="1" as="geometry">
|
|
111
|
+
<mxPoint x="2" y="-4" as="offset"/>
|
|
112
|
+
</mxGeometry>
|
|
113
|
+
</mxCell>
|
|
114
|
+
<mxCell id="26" value="property contract" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
|
|
115
|
+
<mxGeometry x="220" y="540" width="120" height="20" as="geometry"/>
|
|
116
|
+
</mxCell>
|
|
117
|
+
<mxCell id="27" value="property mapping" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
|
|
118
|
+
<mxGeometry x="220" y="460" width="120" height="20" as="geometry"/>
|
|
119
|
+
</mxCell>
|
|
120
|
+
<mxCell id="33" value="<b>Existing</b> (typical) or New instance" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
121
|
+
<mxGeometry x="230" y="420" width="100" height="40" as="geometry"/>
|
|
122
|
+
</mxCell>
|
|
123
|
+
<mxCell id="35" value="#&lt;CapsuleUri&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1">
|
|
124
|
+
<mxGeometry x="220" y="520" width="120" height="20" as="geometry"/>
|
|
125
|
+
</mxCell>
|
|
126
|
+
<mxCell id="37" value="&lt;CapsuleUri&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
|
|
127
|
+
<mxGeometry x="360" y="570" width="90" height="20" as="geometry"/>
|
|
128
|
+
</mxCell>
|
|
129
|
+
<mxCell id="38" value="&lt;CapsuleUri&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
|
|
130
|
+
<mxGeometry x="220" y="480" width="90" height="20" as="geometry"/>
|
|
131
|
+
</mxCell>
|
|
132
|
+
<mxCell id="39" value="&lt;CapsuleUri&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
|
|
133
|
+
<mxGeometry x="390" y="450" width="90" height="20" as="geometry"/>
|
|
134
|
+
</mxCell>
|
|
135
|
+
<mxCell id="40" value="static analysis aspect" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
|
136
|
+
<mxGeometry x="570" y="70" width="150" height="20" as="geometry"/>
|
|
137
|
+
</mxCell>
|
|
138
|
+
<mxCell id="42" value="Legend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
|
139
|
+
<mxGeometry x="580" y="30" width="100" height="20" as="geometry"/>
|
|
140
|
+
</mxCell>
|
|
141
|
+
<mxCell id="44" value="Same or separate file" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
|
|
142
|
+
<mxGeometry x="30" y="390" width="680" height="20" as="geometry"/>
|
|
143
|
+
</mxCell>
|
|
144
|
+
<mxCell id="50" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="45" target="12">
|
|
145
|
+
<mxGeometry relative="1" as="geometry">
|
|
146
|
+
<Array as="points">
|
|
147
|
+
<mxPoint x="120" y="650"/>
|
|
148
|
+
</Array>
|
|
149
|
+
</mxGeometry>
|
|
150
|
+
</mxCell>
|
|
151
|
+
<mxCell id="56" value="<span style=""><font color="#0066cc"><b>this</b></font> mapped as &lt;property&gt;</span>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="50">
|
|
152
|
+
<mxGeometry x="-0.3353" y="2" relative="1" as="geometry">
|
|
153
|
+
<mxPoint x="50" y="2" as="offset"/>
|
|
154
|
+
</mxGeometry>
|
|
155
|
+
</mxCell>
|
|
156
|
+
<mxCell id="45" value="this" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
|
157
|
+
<mxGeometry x="70" y="580" width="100" height="20" as="geometry"/>
|
|
158
|
+
</mxCell>
|
|
159
|
+
<mxCell id="46" style="edgeStyle=none;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;startArrow=none;" edge="1" parent="1" source="58" target="45">
|
|
160
|
+
<mxGeometry relative="1" as="geometry">
|
|
161
|
+
<mxPoint x="145" y="540" as="targetPoint"/>
|
|
162
|
+
</mxGeometry>
|
|
163
|
+
</mxCell>
|
|
164
|
+
<mxCell id="47" value="properties" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
|
165
|
+
<mxGeometry x="70" y="470" width="100" height="20" as="geometry"/>
|
|
166
|
+
</mxCell>
|
|
167
|
+
<mxCell id="48" value="Capsule C" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffcd28;gradientColor=#ffa500;strokeColor=#d79b00;fontStyle=1" vertex="1" parent="1">
|
|
168
|
+
<mxGeometry x="40" y="500" width="130" height="20" as="geometry"/>
|
|
169
|
+
</mxCell>
|
|
170
|
+
<mxCell id="57" value="&lt;property&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" vertex="1" parent="1">
|
|
171
|
+
<mxGeometry x="390" y="520" width="90" height="20" as="geometry"/>
|
|
172
|
+
</mxCell>
|
|
173
|
+
<mxCell id="59" value="" style="edgeStyle=none;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;endArrow=none;" edge="1" parent="1" source="47" target="58">
|
|
174
|
+
<mxGeometry relative="1" as="geometry">
|
|
175
|
+
<mxPoint x="145" y="580" as="targetPoint"/>
|
|
176
|
+
<mxPoint x="145" y="490" as="sourcePoint"/>
|
|
177
|
+
</mxGeometry>
|
|
178
|
+
</mxCell>
|
|
179
|
+
<mxCell id="58" value="this.self" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
|
180
|
+
<mxGeometry x="70" y="540" width="100" height="20" as="geometry"/>
|
|
181
|
+
</mxCell>
|
|
182
|
+
<mxCell id="73" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#0066CC;" edge="1" parent="1" source="60" target="67">
|
|
183
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
184
|
+
</mxCell>
|
|
185
|
+
<mxCell id="60" value="<b>Capsule C</b><br>Capsule Source Tree" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
|
186
|
+
<mxGeometry x="30" y="280" width="160" height="50" as="geometry"/>
|
|
187
|
+
</mxCell>
|
|
188
|
+
<mxCell id="74" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#0066CC;" edge="1" parent="1" source="61" target="70">
|
|
189
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
190
|
+
</mxCell>
|
|
191
|
+
<mxCell id="61" value="<b>Capsule B</b><br>Capsule Source Tree" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
|
192
|
+
<mxGeometry x="540" y="280" width="170" height="50" as="geometry"/>
|
|
193
|
+
</mxCell>
|
|
194
|
+
<mxCell id="72" style="edgeStyle=orthogonalEdgeStyle;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#0066CC;" edge="1" parent="1" source="62" target="68">
|
|
195
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
196
|
+
</mxCell>
|
|
197
|
+
<mxCell id="62" value="<b>Capsule A</b><br>Capsule Source Tree" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
|
198
|
+
<mxGeometry x="270" y="280" width="160" height="50" as="geometry"/>
|
|
199
|
+
</mxCell>
|
|
200
|
+
<mxCell id="63" value="During capsule bootstrapping" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
|
201
|
+
<mxGeometry x="30" y="360" width="680" height="20" as="geometry"/>
|
|
202
|
+
</mxCell>
|
|
203
|
+
<mxCell id="67" value="<span>Projected Component</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=0" vertex="1" parent="1">
|
|
204
|
+
<mxGeometry x="30" y="210" width="160" height="20" as="geometry"/>
|
|
205
|
+
</mxCell>
|
|
206
|
+
<mxCell id="68" value="<span>Projected Component</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=0" vertex="1" parent="1">
|
|
207
|
+
<mxGeometry x="270" y="210" width="160" height="20" as="geometry"/>
|
|
208
|
+
</mxCell>
|
|
209
|
+
<mxCell id="70" value="<span>Projected Component</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=0" vertex="1" parent="1">
|
|
210
|
+
<mxGeometry x="540" y="210" width="170" height="20" as="geometry"/>
|
|
211
|
+
</mxCell>
|
|
212
|
+
<mxCell id="71" value="<span style="font-weight: normal;">Projector Capsules</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;" vertex="1" parent="1">
|
|
213
|
+
<mxGeometry x="30" y="250" width="680" height="20" as="geometry"/>
|
|
214
|
+
</mxCell>
|
|
215
|
+
<mxCell id="79" style="html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;fontSize=13;fontColor=#000000;exitX=0.25;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="75" target="77">
|
|
216
|
+
<mxGeometry relative="1" as="geometry"/>
|
|
217
|
+
</mxCell>
|
|
218
|
+
<mxCell id="80" value="Load Snapshot" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=12;fontColor=#000000;fontStyle=1" vertex="1" connectable="0" parent="79">
|
|
219
|
+
<mxGeometry x="0.3375" y="1" relative="1" as="geometry">
|
|
220
|
+
<mxPoint x="1" y="5" as="offset"/>
|
|
221
|
+
</mxGeometry>
|
|
222
|
+
</mxCell>
|
|
223
|
+
<mxCell id="75" value="<span>Snapshot&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontStyle=1" vertex="1" parent="1">
|
|
224
|
+
<mxGeometry x="30" y="190" width="680" height="20" as="geometry"/>
|
|
225
|
+
</mxCell>
|
|
226
|
+
<mxCell id="76" value="" style="endArrow=none;html=1;fontColor=#0066CC;strokeWidth=2;dashed=1;" edge="1" parent="1">
|
|
227
|
+
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
|
228
|
+
<mxPoint x="20" y="160" as="sourcePoint"/>
|
|
229
|
+
<mxPoint x="720" y="160" as="targetPoint"/>
|
|
230
|
+
</mxGeometry>
|
|
231
|
+
</mxCell>
|
|
232
|
+
<mxCell id="78" value="<font style="font-size: 13px;" color="#000000">Separate Process</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#0066CC;" vertex="1" connectable="0" parent="76">
|
|
233
|
+
<mxGeometry x="-0.16" y="-2" relative="1" as="geometry">
|
|
234
|
+
<mxPoint x="36" y="-2" as="offset"/>
|
|
235
|
+
</mxGeometry>
|
|
236
|
+
</mxCell>
|
|
237
|
+
<mxCell id="77" value="<span style="font-weight: normal;">Minimal Runtime</span>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;" vertex="1" parent="1">
|
|
238
|
+
<mxGeometry x="100" y="90" width="200" height="20" as="geometry"/>
|
|
239
|
+
</mxCell>
|
|
240
|
+
<mxCell id="81" value="Run from source to "project" (build)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;labelBackgroundColor=default;fontSize=12;fontColor=#CC0000;fontStyle=1" vertex="1" parent="1">
|
|
241
|
+
<mxGeometry x="720" y="355" width="110" height="30" as="geometry"/>
|
|
242
|
+
</mxCell>
|
|
243
|
+
<mxCell id="82" value="Run "projected" (built) components in prod" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;labelBackgroundColor=default;fontSize=12;fontColor=#CC0000;fontStyle=1" vertex="1" parent="1">
|
|
244
|
+
<mxGeometry x="300" y="85" width="155" height="30" as="geometry"/>
|
|
245
|
+
</mxCell>
|
|
246
|
+
<mxCell id="83" value="The <b>Membrane</b> spine contract emits events for all property access." style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#004C99;" vertex="1" parent="1">
|
|
247
|
+
<mxGeometry x="230" y="685" width="130" height="50" as="geometry"/>
|
|
248
|
+
</mxCell>
|
|
249
|
+
<mxCell id="84" value="<span style="font-weight: normal;">Static or Membrane Spine Contract</span>" style="rounded=0;whiteSpace=wrap;html=1;fontStyle=1;" vertex="1" parent="1">
|
|
250
|
+
<mxGeometry x="100" y="70" width="200" height="20" as="geometry"/>
|
|
251
|
+
</mxCell>
|
|
252
|
+
<mxCell id="86" value="(c) 2026 <a href="https://christoph.diy">Christoph.diy</a>&nbsp;CC BY" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=right;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
|
|
253
|
+
<mxGeometry x="645" width="185" height="30" as="geometry"/>
|
|
254
|
+
</mxCell>
|
|
255
|
+
<mxCell id="87" value="Encapsulate: Capsule Spine Contract - Overview - v0.1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
|
|
256
|
+
<mxGeometry x="100" width="350" height="30" as="geometry"/>
|
|
257
|
+
</mxCell>
|
|
258
|
+
</root>
|
|
259
|
+
</mxGraphModel>
|
|
260
|
+
</diagram>
|
|
261
|
+
</mxfile>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="831px" height="801px" viewBox="-0.5 -0.5 831 801" content="<mxfile><diagram id="SRAujS_iovYNQiKgPtnD" name="Page-1">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</diagram></mxfile>"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffcd28-1-ffa500-1-s-0"><stop offset="0%" style="stop-color: rgb(255, 205, 40); stop-opacity: 1;"/><stop offset="100%" style="stop-color: rgb(255, 165, 0); stop-opacity: 1;"/></linearGradient></defs><g><rect x="0" y="0" width="830" height="800" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 100 410 L 100 336.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 100 331.12 L 103.5 338.12 L 100 336.37 L 96.5 338.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="20" y="410" width="160" height="350" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 615 410 L 615 336.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 615 331.12 L 618.5 338.12 L 615 336.37 L 611.5 338.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="530" y="410" width="170" height="350" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 340 410 L 340 336.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 340 331.12 L 343.5 338.12 L 340 336.37 L 336.5 338.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="190" y="410" width="300" height="350" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="20" y="760" width="680" height="20" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 678px; height: 1px; padding-top: 770px; margin-left: 21px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">CapsuleSpineContract - v0</div></div></div></foreignObject><text x="360" y="774" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">CapsuleSpineContract - v0</text></switch></g><path d="M 480 480 L 553.63 480" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 558.88 480 L 551.88 483.5 L 553.63 480 L 551.88 476.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="380" y="470" width="100" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 480px; margin-left: 381px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">extends</div></div></div></foreignObject><text x="430" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">extends</text></switch></g><rect x="380" y="700" width="310" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 308px; height: 1px; padding-top: 710px; margin-left: 381px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">this (classic class extends)</div></div></div></foreignObject><text x="535" y="714" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">this (classic class extends)</text></switch></g><rect x="560" y="50" width="150" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 60px; margin-left: 561px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">definition aspect</div></div></div></foreignObject><text x="635" y="64" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">definition aspect</text></switch></g><rect x="560" y="90" width="150" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 100px; margin-left: 561px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">runtime aspect</div></div></div></foreignObject><text x="635" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">runtime aspect</text></switch></g><path d="M 434.58 650 L 454.85 694.21" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 457.03 698.98 L 450.94 694.08 L 454.85 694.21 L 457.3 691.16 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 670px; margin-left: 444px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">overrides parent</div></div></div></foreignObject><text x="444" y="674" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">overrides parent</text></switch></g><rect x="380" y="630" width="100" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 640px; margin-left: 381px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">this.self</div></div></div></foreignObject><text x="430" y="644" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">this.self</text></switch></g><path d="M 638.04 570 L 613.73 693.75" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 612.72 698.9 L 610.63 691.36 L 613.73 693.75 L 617.5 692.71 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 630px; margin-left: 626px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">overridden by children</div></div></div></foreignObject><text x="626" y="634" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">overridden by children</text></switch></g><rect x="590" y="550" width="100" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 560px; margin-left: 591px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">this.self</div></div></div></foreignObject><text x="640" y="564" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">this.self</text></switch></g><path d="M 455 560 L 455 623.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 455 628.88 L 451.5 621.88 L 455 623.63 L 458.5 621.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="380" y="540" width="100" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 550px; margin-left: 381px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">properties</div></div></div></foreignObject><text x="430" y="554" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">properties</text></switch></g><path d="M 665 460 L 665 543.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 665 548.88 L 661.5 541.88 L 665 543.63 L 668.5 541.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="590" y="440" width="100" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 450px; margin-left: 591px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">properties</div></div></div></foreignObject><text x="640" y="454" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">properties</text></switch></g><rect x="350" y="590" width="130" height="20" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 600px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Capsule A</div></div></div></foreignObject><text x="415" y="604" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Capsule A</text></switch></g><rect x="560" y="470" width="130" height="20" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 480px; margin-left: 561px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Capsule B</div></div></div></foreignObject><text x="625" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Capsule B</text></switch></g><rect x="710" y="545" width="110" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 560px; margin-left: 711px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Own properties independent of parents or children.</div></div></div></foreignObject><text x="765" y="564" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Own properties ind...</text></switch></g><rect x="410" y="720" width="240" height="30" fill="rgb(255, 255, 255)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 238px; height: 1px; padding-top: 735px; margin-left: 411px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Shared properties across extends stack.</div></div></div></foreignObject><text x="530" y="739" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Shared properties across extends stack.</text></switch></g><path d="M 210 510 L 166.37 510" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 161.12 510 L 168.12 506.5 L 166.37 510 L 168.12 513.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="500" width="260" height="20" rx="10" ry="10" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 510px; margin-left: 211px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">mapping (special property)</div></div></div></foreignObject><text x="340" y="514" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">mapping (special property)</text></switch></g><path d="M 270 560 L 270 630 Q 270 640 280 640 L 373.63 640" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 378.88 640 L 371.88 643.5 L 373.63 640 L 371.88 636.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 584px; margin-left: 271px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#cc0000" style=""><b>NEW</b></font> instance<br />as <property></div></div></div></foreignObject><text x="271" y="587" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">NEW instance...</text></switch></g><rect x="210" y="540" width="120" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 550px; margin-left: 211px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">property contract</div></div></div></foreignObject><text x="270" y="554" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">property contract</text></switch></g><rect x="210" y="460" width="120" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 470px; margin-left: 211px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">property mapping</div></div></div></foreignObject><text x="270" y="474" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">property mapping</text></switch></g><rect x="220" y="420" width="100" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 440px; margin-left: 221px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>Existing</b> (typical) or New instance</div></div></div></foreignObject><text x="270" y="444" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Existing (typica...</text></switch></g><rect x="210" y="520" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 118px; height: 1px; padding-top: 530px; margin-left: 212px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">#<CapsuleUri></div></div></div></foreignObject><text x="212" y="534" fill="#000000" font-family="Helvetica" font-size="12px">#<CapsuleUri></text></switch></g><rect x="350" y="570" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 88px; height: 1px; padding-top: 580px; margin-left: 352px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><CapsuleUri></div></div></div></foreignObject><text x="352" y="584" fill="#000000" font-family="Helvetica" font-size="12px"><CapsuleUri></text></switch></g><rect x="210" y="480" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 88px; height: 1px; padding-top: 490px; margin-left: 212px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><CapsuleUri></div></div></div></foreignObject><text x="212" y="494" fill="#000000" font-family="Helvetica" font-size="12px"><CapsuleUri></text></switch></g><rect x="380" y="450" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 88px; height: 1px; padding-top: 460px; margin-left: 382px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><CapsuleUri></div></div></div></foreignObject><text x="382" y="464" fill="#000000" font-family="Helvetica" font-size="12px"><CapsuleUri></text></switch></g><rect x="560" y="70" width="150" height="20" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 80px; margin-left: 561px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">static analysis aspect</div></div></div></foreignObject><text x="635" y="84" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">static analysis aspect</text></switch></g><rect x="570" y="30" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 40px; margin-left: 572px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Legend</div></div></div></foreignObject><text x="572" y="44" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Legend</text></switch></g><rect x="20" y="390" width="680" height="20" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 678px; height: 1px; padding-top: 400px; margin-left: 21px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Same or separate file</div></div></div></foreignObject><text x="360" y="404" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Same or separate file</text></switch></g><path d="M 110 600 L 110 640 Q 110 650 120 650 L 373.63 650" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 378.88 650 L 371.88 653.5 L 373.63 650 L 371.88 646.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 651px; margin-left: 217px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style=""><font color="#0066cc"><b>this</b></font> mapped as <property></span></div></div></div></foreignObject><text x="217" y="654" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">this mapped as <property></text></switch></g><rect x="60" y="580" width="100" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 61px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">this</div></div></div></foreignObject><text x="110" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">this</text></switch></g><path d="M 135 560 L 135 573.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 135 578.88 L 131.5 571.88 L 135 573.63 L 138.5 571.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="60" y="470" width="100" height="20" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 480px; margin-left: 61px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">properties</div></div></div></foreignObject><text x="110" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">properties</text></switch></g><rect x="30" y="500" width="130" height="20" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 510px; margin-left: 31px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Capsule C</div></div></div></foreignObject><text x="95" y="514" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Capsule C</text></switch></g><rect x="380" y="520" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 88px; height: 1px; padding-top: 530px; margin-left: 382px;"><div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><property></div></div></div></foreignObject><text x="382" y="534" fill="#000000" font-family="Helvetica" font-size="12px"><property></text></switch></g><path d="M 135 490 L 135 540" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><rect x="60" y="540" width="100" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 550px; margin-left: 61px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">this.self</div></div></div></foreignObject><text x="110" y="554" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">this.self</text></switch></g><path d="M 100 280 L 100 236.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 100 231.12 L 103.5 238.12 L 100 236.37 L 96.5 238.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="20" y="280" width="160" height="50" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 305px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>Capsule C</b><br />Capsule Source Tree</div></div></div></foreignObject><text x="100" y="309" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Capsule C...</text></switch></g><path d="M 615 280 L 615 236.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 615 231.12 L 618.5 238.12 L 615 236.37 L 611.5 238.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="530" y="280" width="170" height="50" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 305px; margin-left: 531px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>Capsule B</b><br />Capsule Source Tree</div></div></div></foreignObject><text x="615" y="309" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Capsule B...</text></switch></g><path d="M 340 280 L 340 236.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 340 231.12 L 343.5 238.12 L 340 236.37 L 336.5 238.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="260" y="280" width="160" height="50" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 305px; margin-left: 261px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>Capsule A</b><br />Capsule Source Tree</div></div></div></foreignObject><text x="340" y="309" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Capsule A...</text></switch></g><rect x="20" y="360" width="680" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 678px; height: 1px; padding-top: 370px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">During capsule bootstrapping</div></div></div></foreignObject><text x="360" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">During capsule bootstrapping</text></switch></g><rect x="20" y="210" width="160" height="20" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 220px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span>Projected Component</span></div></div></div></foreignObject><text x="100" y="224" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Projected Component</text></switch></g><rect x="260" y="210" width="160" height="20" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 220px; margin-left: 261px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span>Projected Component</span></div></div></div></foreignObject><text x="340" y="224" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Projected Component</text></switch></g><rect x="530" y="210" width="170" height="20" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 220px; margin-left: 531px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><span>Projected Component</span></div></div></div></foreignObject><text x="615" y="224" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Projected Component</text></switch></g><rect x="20" y="250" width="680" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 678px; height: 1px; padding-top: 260px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><span style="font-weight: normal;">Projector Capsules</span></div></div></div></foreignObject><text x="360" y="264" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Projector Capsules</text></switch></g><path d="M 190 190 L 190 120.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 190 113.35 L 194.5 122.35 L 190 120.1 L 185.5 122.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 142px; margin-left: 191px;"><div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; background-color: rgb(255, 255, 255); white-space: nowrap;">Load Snapshot</div></div></div></foreignObject><text x="191" y="145" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Load Snapshot</text></switch></g><rect x="20" y="190" width="680" height="20" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 678px; height: 1px; padding-top: 200px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><span>Snapshot </span></div></div></div></foreignObject><text x="360" y="204" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Snapshot </text></switch></g><path d="M 10 160 L 710 160" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 161px; margin-left: 341px;"><div data-drawio-colors="color: #0066CC; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 102, 204); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#000000" style="font-size: 13px;">Separate Process</font></div></div></div></foreignObject><text x="341" y="164" fill="#0066CC" font-family="Helvetica" font-size="11px" text-anchor="middle">Separate Process</text></switch></g><rect x="90" y="90" width="200" height="20" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 100px; margin-left: 91px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><span style="font-weight: normal;">Minimal Runtime</span></div></div></div></foreignObject><text x="190" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Minimal Runtime</text></switch></g><rect x="710" y="355" width="110" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 370px; margin-left: 711px;"><div data-drawio-colors="color: #CC0000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(204, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; background-color: rgb(255, 255, 255); white-space: normal; overflow-wrap: normal;">Run from source to "project" (build)</div></div></div></foreignObject><text x="765" y="374" fill="#CC0000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Run from source to...</text></switch></g><rect x="290" y="85" width="155" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 153px; height: 1px; padding-top: 100px; margin-left: 291px;"><div data-drawio-colors="color: #CC0000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(204, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; background-color: rgb(255, 255, 255); white-space: normal; overflow-wrap: normal;">Run "projected" (built) components in prod</div></div></div></foreignObject><text x="368" y="104" fill="#CC0000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Run "projected" (built) co...</text></switch></g><rect x="220" y="685" width="130" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 710px; margin-left: 221px;"><div data-drawio-colors="color: #004C99; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 76, 153); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">The <b>Membrane</b> spine contract emits events for all property access.</div></div></div></foreignObject><text x="285" y="714" fill="#004C99" font-family="Helvetica" font-size="12px" text-anchor="middle">The Membrane spine co...</text></switch></g><rect x="90" y="70" width="200" height="20" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 80px; margin-left: 91px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"><span style="font-weight: normal;">Static or Membrane Spine Contract</span></div></div></div></foreignObject><text x="190" y="84" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Static or Membrane Spine Contract</text></switch></g><rect x="635" y="0" width="185" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 183px; height: 1px; padding-top: 15px; margin-left: 635px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">(c) 2026 <a href="https://christoph.diy">Christoph.diy</a> CC BY</div></div></div></foreignObject><text x="818" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="end">(c) 2026 Christoph.diy CC BY</text></switch></g><rect x="90" y="0" width="350" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 348px; height: 1px; padding-top: 15px; margin-left: 92px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Encapsulate: Capsule Spine Contract - Overview - v0.1</div></div></div></foreignObject><text x="92" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Encapsulate: Capsule Spine Contract - Overview - v0.1</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|