1    private@
2    
3    type A @abstract =
4        def f : String
5    
6    type B =
7        inherit A
8    
9        def A.f = "B"
10   
11   do
12       let a : A = B.new
13       assert a.f == "B"
14   
15   type C @abstract =
16       inherit A
17   
18   type D =
19       inherit C
20   
21       def A.f = "D"
22   
23   do
24       let a : A = D.new
25       assert a.f == "D"
26   
27   do
28       let c : C = D.new
29       assert c.f == "D"
30