This is from Dan's site
And the answer is f, and the reason given is that
Although line 12 appears to be the source of a compiler error it is not. In line 12, the reference named base actually refers to an object of type Sub. Therefore, the reference to the object may be cast to type Sub.
which is quite logical. But i guessed the answer to be line 10: I1 i1 = s1;
because i thought that i1 and s1 have no direct hierarchy between them.
But seems like since base implements i1 and then sub extends base, s1 can be assigned to i1.
Is this correct?