Methods can be denoted with the dynamic keyword to make them (re-)bindable:
class Main { static dynamic function test() { return "original"; } static public function main() { trace(test()); // original test = function() { return "new"; } trace(test()); // new } }
The first call to test() invokes the original function which returns the String "original". In the next line, test is assigned a new function. This is precisely what dynamic allows: Function fields can be assigned a new function. As a result, the next invocation of test() returns the String "new".
Dynamic fields cannot be inline for obvious reasons: While inlining is done at compile-time, dynamic functions necessarily have to be resolved at runtime.