behavior_impl_ptr extract(const message_handler& arg) { return arg.as_behavior_impl(); }
behavior_impl_ptr combine(behavior_impl_ptr lhs, const message_handler& rhs) { return lhs->or_else(rhs.as_behavior_impl()); }
behavior_impl_ptr combine(const message_handler& lhs, behavior_impl_ptr rhs) { return lhs.as_behavior_impl()->or_else(rhs); }
behavior::behavior(const message_handler& mh) : m_impl(mh.as_behavior_impl()) { // nop }