Is the following correct : class X { void foo() { ... } } class Y : X { final override void foo() { ... } } Y y = new Y; y.foo; //inlined X x = y; x.foo; //not inlined