Above code returns value 10 upon excution. My doubt is why doesn't it throws a compile time error complaining about ambiguoity as interface B inherits 'i' from interface A as well and since class C implements B, how will method m1 ascertain which 'i' to return ?