1    private@
2    
3    type A =
4        let obs u : u32 = 5
5        let obs v : u32 = 8
6        let obs w : u32 = 11
7    
8    do
9        let obs n : u32 = 7
10       let obs m : u32 = 17
11   
12       let a = A.new
13       a.u@obs = n@obs
14       a.v@obs = n@obs + 8
15       a.w@obs = n@obs + 8 + m@obs
16       assert n == 7 && a.u == 7 && a.v == 15 && a.w == 32
17   
18       n = 8
19       assert n == 8 && a.u == 8 && a.v == 16 && a.w == 33
20   
21       m = 22
22       assert a.w == 38
23   
24   do
25       let obs n : u32 = 9
26       let a = A u@obs = n@obs + 2
27       assert a.u == 11
28   
29       n = 15
30       assert a.u == 17
31   
32   do
33       let obs n : u32 = 5
34       let m@obs = n@obs + 2
35       assert m == 7
36   
37       n = 7
38       assert m == 9
39   
40   type B =
41       let obs u = Vector3.new
42       let obs v = Vector3.new
43   
44       let w@obs = u@obs + v@obs
45   
46   do
47       let b = B u = Vector3 1 2 3
48                 v = Vector3 4 5 6
49   
50       assert b.w == Vector3 5 7 9
51