Homework: Object-oriented languages

Tiger book: 14.2, 14.3, 14.4, 16.3

The assigned paper, Figure 5 on page 8:
briefly explain how the compiler virtualizes the call i.foo(), and why the dynamic check can not be removed.