1Testing for type A
2A-virtual           A.SayHi()='Hello '
3A-interface     Iface.SayHi()='Hello '
4End testing for type A
5Testing for type B
6B-virtual           B.SayHi()='Hello Hello '
7B-interface     Iface.SayHi()='Hello Hello '
8B-interface    Iface2.SayHi()='Hello Hello '
9End testing for type B
10Testing for type C
11C-virtual           C.SayHi()='Hello  and welcome '
12C-interface     Iface.SayHi()='Hello  and welcome '
13End testing for type C
14Testing for type D
15D-virtual           D.SayHi()='Hello Hello  and welcome '
16D-interface     Iface.SayHi()='Hello Hello  and welcome '
17D-interface    Iface2.SayHi()='Hello Hello  and welcome '
18End testing for type D
19Testing for type E
20E-virtual           E.SayHi()='Hello  there!'
21E-interface     Iface.SayHi()='Hello  there!'
22E-interface    Iface3.SayHi()='Hello  there!'
23End testing for type E
24Testing for type F
25F-virtual           E.SayHi()='Hello  there!'
26F-virtual           F.SayHi()='Hello  there!'
27F-interface     Iface.SayHi()='Hello  there!'
28F-interface    Iface3.SayHi()='Hello  there!'
29F-virtual           F.SaySurprisedHi()='Hello  there!!'
30End testing for type F
31Testing for type G
32G-virtual           E.SayHi()='Hello  there!?'
33G-virtual           F.SayHi()='Hello  there!?'
34G-virtual           G.SayHi()='Hello  there!?'
35G-interface     Iface.SayHi()='Hello  there!?'
36G-interface    Iface3.SayHi()='Hello  there!?'
37G-virtual           F.SaySurprisedHi()='Hello  there!!'
38G-virtual           G.SaySurprisedHi()='Hello  there!!'
39G-virtual           G.SayVerySurprisedHi()='Hello  there!!!'
40End testing for type G
41Testing for type H
42H-virtual           H.SayConfusedHi()='Hello ?!'
43H-virtual           A.SayHi()='Hello ?'
44H-virtual           H.SayHi()='Hello ?'
45H-interface     Iface.SayHi()='Hello ?'
46H-virtual           H.SaySurprisedHi()='Hello !'
47End testing for type H
48