   return a.f()
 }
 
-println("foo(E()) = \(foo(E3()))")
+public func testfoo3() -> Int {
+  return foo(E3())
+}
 
 class Base4 {
   @inline(never)


// internl class
class Base3 {
  @inline(never) func inner() { println("Base")}
  @inline(never) func middle() { inner() }
// Check that call to Base3.middle can be devirtualized
// 


// public class
public class Derived1 : Base1 {
  override func inner() { action(2) }
  @inline(never) final override func middle() { inner() }
}

// private class
private class Base2 {
  @inline(never) func inner() { action(3)}
  func middle() { inner() }
  func outer() { middle() }
}

// private class
private class Derived2 : Base2 {
  override func inner() { action(4) }
  @inline(never) final override func middle() { inner() }
}

