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

  return c.bar() 
}

println(check_static_class_devirt(D6()))


class A7 { @inline(never) func foo() -> Bool { return false } }


// 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() }
}

