text thing(void) { return "delegate implementation"; } text operation(record delegator) { text s; if (r_key(delegator, "delegate")) { if (r_key(delegator["delegate"], "thing")) { s = call(r_query(delegator["delegate"], "thing")); } else { s = "default implementation"; } } else { s = "default implementation"; } return s; } integer main(void) { record delegate, delegator; o_text(operation(delegator)); o_byte('\n'); r_link(delegator, "delegate", delegate); o_text(operation(delegator)); o_byte('\n'); r_put(delegate, "thing", thing); o_text(operation(delegator)); o_byte('\n'); return 0; }