1Testing for type A 2A-virtual A.SayHi()='Hi ' 3A-interface Greeter.SayHi()='Hi ' 4A-virtual A.SayHiTwice()='Hi Hi ' 5A-interface Greeter.SayHiTwice()='Hi Hi ' 6End testing for type A 7Testing for type B 8B-virtual B.SayHi()='Hello ' 9B-interface Greeter.SayHi()='Hello ' 10B-interface Greeter2.SayHi()='Hello ' 11B-virtual B.SayHiTwice()='I say Hello Hello ' 12B-interface Greeter.SayHiTwice()='I say Hello Hello ' 13B-interface Greeter2.SayHiTwice()='I say Hello Hello ' 14End testing for type B 15Testing for type C 16C-virtual A.SayHi()='Hi ' 17C-virtual C.SayHi()='Hi ' 18C-interface Greeter.SayHi()='Hi ' 19C-virtual A.SayHiTwice()='You don't control me' 20C-virtual C.SayHiTwice()='You don't control me' 21C-interface Greeter.SayHiTwice()='You don't control me' 22End testing for type C 23Testing for type D 24D-virtual D.GetName()='Alex ' 25D-interface Greeter3.GetName()='Alex ' 26D-virtual D.SayHi()='Hello Alex ' 27D-interface Greeter.SayHi()='Hello Alex ' 28D-interface Greeter3.SayHi()='Hello Alex ' 29D-virtual D.SayHiTwice()='Hello Alex Hello Alex ' 30D-interface Greeter.SayHiTwice()='Hello Alex Hello Alex ' 31D-interface Greeter3.SayHiTwice()='Hello Alex Hello Alex ' 32End testing for type D 33Testing for type E 34E-virtual A.SayHi()='Hi2 ' 35E-virtual E.SayHi()='Hi2 ' 36E-interface Greeter.SayHi()='Hi2 ' 37E-interface Greeter2.SayHi()='Hi2 ' 38E-virtual A.SayHiTwice()='I say Hi2 Hi2 ' 39E-virtual E.SayHiTwice()='I say Hi2 Hi2 ' 40E-interface Greeter.SayHiTwice()='I say Hi2 Hi2 ' 41E-interface Greeter2.SayHiTwice()='I say Hi2 Hi2 ' 42End testing for type E 43Testing for type F 44F-interface Attendant.GetPlace()='android' 45F-virtual F.GetPlace()='android' 46F-virtual A.SayHi()='Hi ' 47F-interface Attendant.SayHi()='Hi ' 48F-virtual F.SayHi()='Hi ' 49F-interface Greeter.SayHi()='Hi ' 50F-virtual A.SayHiTwice()='We can override both interfaces' 51F-interface Attendant.SayHiTwice()='We can override both interfaces' 52F-virtual F.SayHiTwice()='We can override both interfaces' 53F-interface Greeter.SayHiTwice()='We can override both interfaces' 54End testing for type F 55Testing for type G 56G-interface Attendant.GetPlace()='android' 57G-virtual G.GetPlace()='android' 58G-interface Attendant.SayHi()='welcome to android' 59G-virtual G.SayHi()='welcome to android' 60G-interface Attendant.SayHiTwice()='welcome to androidwelcome to android' 61G-virtual G.SayHiTwice()='welcome to androidwelcome to android' 62End testing for type G 63Testing for type H 64H-interface Extension.SayHi()='welcome ' 65H-virtual H.SayHi()='welcome ' 66End testing for type H 67Testing for type I 68I-virtual A.SayHi()='Hi ' 69I-interface Greeter.SayHi()='Hi ' 70I-interface Greeter2.SayHi()='Hi ' 71I-virtual I.SayHi()='Hi ' 72I-virtual A.SayHiTwice()='I say Hi Hi ' 73I-interface Greeter.SayHiTwice()='I say Hi Hi ' 74I-interface Greeter2.SayHiTwice()='I say Hi Hi ' 75I-virtual I.SayHiTwice()='I say Hi Hi ' 76End testing for type I 77Testing for type J 78J-virtual A.SayHi()='Hi ' 79J-interface Greeter.SayHi()='Hi ' 80J-virtual J.SayHi()='Hi ' 81J-virtual A.SayHiTwice()='Hi Hi ' 82J-interface Greeter.SayHiTwice()='Hi Hi ' 83J-virtual J.SayHiTwice()='Hi Hi ' 84End testing for type J 85Testing for type K 86K-interface Foo.bar()='foobar' 87K-virtual K.bar()='foobar' 88End testing for type K 89Testing for type L 90L-interface Foo.bar()='foobar' 91L-virtual K.bar()='foobar' 92L-virtual L.bar()='foobar' 93End testing for type L 94Testing for type M 95M-interface Foo.bar()='BAZ!' 96M-interface Fooer.bar()='BAZ!' 97M-virtual K.bar()='BAZ!' 98M-virtual L.bar()='BAZ!' 99M-virtual M.bar()='BAZ!' 100End testing for type M 101Testing for type N 102N-interface Foo.bar()='foobar' 103N-virtual N.bar()='foobar' 104End testing for type N 105Testing for type O 106O-interface Foo.bar()='foobar foobar' 107O-interface Foo2.bar()='foobar foobar' 108O-virtual N.bar()='foobar foobar' 109O-virtual O.bar()='foobar foobar' 110End testing for type O 111Testing for type P 112P-interface Foo.bar()='not foobar!' 113P-interface Foo2.bar()='not foobar!' 114P-virtual N.bar()='not foobar!' 115P-virtual O.bar()='not foobar!' 116P-virtual P.bar()='not foobar!' 117End testing for type P 118Testing for type Q 119Q-interface on Foo: bar() threw exception! 120Exception is of type java.lang.IncompatibleClassChangeError 121Q-interface on Foo2: bar() threw exception! 122Exception is of type java.lang.IncompatibleClassChangeError 123Q-interface on Foo3: bar() threw exception! 124Exception is of type java.lang.IncompatibleClassChangeError 125Q-virtual on N: bar() threw exception! 126Exception is of type java.lang.IncompatibleClassChangeError 127Q-virtual on O: bar() threw exception! 128Exception is of type java.lang.IncompatibleClassChangeError 129Q-virtual on Q: bar() threw exception! 130Exception is of type java.lang.IncompatibleClassChangeError 131End testing for type Q 132