class Delegator { public generic delegate = none public function operation { if (typeof(delegate) == "none") { return "default implementation" } return delegate() } } function thing { return "delegate implementation" } // default, no delegate var d = new Delegator() println (d.operation()) // delegate var d1 = new Delegator() d1.delegate = thing println (d1.operation())