| Testing for type A |
| A-virtual A.SayHi()='Hello ' |
| A-interface Iface.SayHi()='Hello ' |
| End testing for type A |
| Testing for type B |
| B-virtual B.SayHi()='Hello Hello ' |
| B-interface Iface.SayHi()='Hello Hello ' |
| B-interface Iface2.SayHi()='Hello Hello ' |
| End testing for type B |
| Testing for type C |
| C-virtual C.SayHi()='Hello and welcome ' |
| C-interface Iface.SayHi()='Hello and welcome ' |
| End testing for type C |
| Testing for type D |
| D-virtual D.SayHi()='Hello Hello and welcome ' |
| D-interface Iface.SayHi()='Hello Hello and welcome ' |
| D-interface Iface2.SayHi()='Hello Hello and welcome ' |
| End testing for type D |
| Testing for type E |
| E-virtual E.SayHi()='Hello there!' |
| E-interface Iface.SayHi()='Hello there!' |
| E-interface Iface3.SayHi()='Hello there!' |
| End testing for type E |
| Testing for type F |
| F-virtual E.SayHi()='Hello there!' |
| F-virtual F.SayHi()='Hello there!' |
| F-interface Iface.SayHi()='Hello there!' |
| F-interface Iface3.SayHi()='Hello there!' |
| F-virtual F.SaySurprisedHi()='Hello there!!' |
| End testing for type F |
| Testing for type G |
| G-virtual E.SayHi()='Hello there!?' |
| G-virtual F.SayHi()='Hello there!?' |
| G-virtual G.SayHi()='Hello there!?' |
| G-interface Iface.SayHi()='Hello there!?' |
| G-interface Iface3.SayHi()='Hello there!?' |
| G-virtual F.SaySurprisedHi()='Hello there!!' |
| G-virtual G.SaySurprisedHi()='Hello there!!' |
| G-virtual G.SayVerySurprisedHi()='Hello there!!!' |
| End testing for type G |
| Testing for type H |
| H-virtual H.SayConfusedHi()='Hello ?!' |
| H-virtual A.SayHi()='Hello ?' |
| H-virtual H.SayHi()='Hello ?' |
| H-interface Iface.SayHi()='Hello ?' |
| H-virtual H.SaySurprisedHi()='Hello !' |
| End testing for type H |